buscar: bucle del sistema de archivos detectado


9

Cuando trato de encontrar un archivo usando find -name "filename"aparece un error que dice:

./var/named/chroot/var/named' is part of the same file system loop as `./var/named'

Ejecuté el ls -ldi /var/named/chroot/var/named/ /var/namedcomando y los números de inodo son los mismos. La investigación indica que la solución es eliminar el enlace duro /var/named/chroot/var/named/usando rm -fy volver a crearlo como un directorio, pero cuando hago esto, me informan que no se puede eliminar porque ya es un directorio. ¿Cómo puedo solucionar esto? Estoy ejecutando Centos 6 con Plesk 11.

El comando mount da esto:

/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
none on /dev type tmpfs (rw,relatime)
none on /dev/pts type devpts (rw,relatime)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
/etc/named on /var/named/chroot/etc/named type none (rw,bind)
/var/named on /var/named/chroot/var/named type none (rw,bind)
/etc/named.rfc1912.zones on /var/named/chroot/etc/named.rfc1912.zones type none (rw,bind)
/etc/rndc.key on /var/named/chroot/etc/rndc.key type none (rw,bind)
/usr/lib64/bind on /var/named/chroot/usr/lib64/bind type none (rw,bind)
/etc/named.iscdlv.key on /var/named/chroot/etc/named.iscdlv.key type none (rw,bind)
/etc/named.root.key on /var/named/chroot/etc/named.root.key type none (rw,bind)

Respuestas:


9

named, ese es el servidor DNS, se ejecuta en un chroot. Para acceder al archivo de configuración, el script de inicio se utiliza mount --bindpara hacer que el directorio de configuración sea visible dentro del chroot. Esto significa que /var/named/es lo mismo que /var/named/chroot/var/named, /var/named/chroot/var/named/chroot/var/namedy así sucesivamente. Esta es una estructura de directorio recursiva, por lo que si se findintenta atravesarlo todo, nunca podría terminar su ejecución, por lo que se da cuenta de que los dos directorios son realmente iguales y le imprime ese mensaje para advertirle.

El mensaje significa que findno buscará en el interior /var/named/chroot/var/namedporque se dio cuenta de que es igual a algún otro directorio ya visto anteriormente. Es un mensaje totalmente inofensivo, puede ignorarlo con seguridad: después de omitir, /var/named/chroot/var/namedla findoperación continúa normalmente.


Entonces, si no hay nada después de esta declaración, ¿simplemente significa que no se encontró el archivo?
user1780242

Sí, supongo que sí. Pruebe lo mismo con un archivo que sabe que existe. Además, puede suprimir los mensajes de error agregando `2> / dev / null` a la línea de comando.
pqnet

1

El mensaje activa un código de retorno 1 y no se puede ignorar, ni funcionará la redirección.

Uso de findutils findutils-4.4.2-6.el6.x86_64

Parece que este es el informe de error correspondiente:

En los sistemas que ejecutan el kernel de Linux, "find -printf% F" ya no produce la respuesta incorrecta para archivos en sistemas de archivos que se han vuelto a montar en otro lugar utilizando "mount --bind". (Error de Savannah # 14921).

Una solución (de seguridad desafiada) si no puede arreglar el script afectado (es decir, porque fue escrito por un tercero) es eliminar el paquete bind-chroot, al menos temporalmente.


0

No creo que sea un enlace duro. Por lo general, los enlaces duros del directorio están prohibidos. Podría ser un enlace suave, pero parece que es un bucle de montaje: parece que /var/namedo tal vez /varestá montado de nuevo /var/named/chroot. Tal vez sea un montaje de enlace ( mount -o bind) o simplemente un montaje normal.

¿Puedes publicar la salida de tu mountcomando? Además, tal vez este es un soporte necesario para la cárcel chroot y es mejor que lo deje.


es probable que sea un mount --bindporque es lo único que funciona en un chroot.
pqnet

0

El problema es causado por la secuencia de comandos de inicio namedque monta el /var/nameddirectorio /var/named/chroot. La solución para este problema también está presente en el script de inicio.

mount_chroot_conf()
{
   # Mount source is a directory. Mount it only if directory in chroot is
   # empty.

Como se mencionó anteriormente, la mountfunción solo funcionará si el directorio está vacío. Entonces use la siguiente solución:

  1. Detener named
  2. Crea el directorio /var/named/chroot/var/named
  3. Crea un archivo vacío dentro de este directorio
  4. comienzo named
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.