当我尝试使用查找文件时,find -name "filename"
出现错误:
./var/named/chroot/var/named' is part of the same file system loop as `./var/named'
我运行了ls -ldi /var/named/chroot/var/named/ /var/named
命令,索引节点号是相同的。研究表明修复方法是/var/named/chroot/var/named/
使用删除硬链接rm -f
并将其重新创建为目录,但当我这样做时,我被告知不能删除它,因为它已经是一个目录了。我该如何解决?我正在运行 Centos 6 和 Plesk 11。
mount 命令给出了这样的信息:
/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)
答案1
named
,即 DNS 服务器,在 chroot 中运行。为了访问配置文件,启动脚本使用mount --bind
使配置目录在 chroot 内可见。这意味着与、等/var/named/
相同。这是一个递归目录结构,因此如果尝试遍历它,它将永远无法终止其执行,因此它意识到这两个目录实际上是相同的,并打印该消息以警告您。/var/named/chroot/var/named
/var/named/chroot/var/named/chroot/var/named
find
该消息意味着find
不会在内部搜索,/var/named/chroot/var/named
因为它意识到它与之前已经见过的其他目录相同。这是一条完全无害的消息,您可以安全地忽略它:跳过操作后,/var/named/chroot/var/named
操作find
将继续正常进行。
答案2
该消息会触发返回码 1,并且不能被忽略,重定向也不起作用。
使用 findutils findutils-4.4.2-6.el6.x86_64
看来这是相应的错误报告:
在运行 Linux 内核的系统上,对于使用“mount --bind”重新挂载到其他位置的文件系统上的文件,“find -printf %F”不再产生错误的答案。 (萨凡纳错误#14921)。
如果您无法修复受影响的脚本(即因为它是由第 3 方编写的),则(安全挑战)解决方案是删除 bind-chroot 包,至少暂时删除。
答案3
我不认为这是一个硬链接。通常目录硬链接是被禁止的。我可能是一个软链接,但看起来它是一个安装循环:似乎/var/named
或可能/var
再次安装在/var/named/chroot
.也许它是绑定安装 ( mount -o bind
) 或只是普通安装。
mount
你能发布你的命令的输出吗?另外,也许这是 chroot 监狱所需的安装,你最好保留它。
答案4
该问题是由将目录named
挂载/var/named
到/var/named/chroot
.这个问题的解决方案也存在于 init 脚本中。
mount_chroot_conf()
{
# Mount source is a directory. Mount it only if directory in chroot is
# empty.
如上所述,该mount
函数仅在目录为空时才起作用。所以使用下面的解决方案:
- 停止
named
- 创建目录
/var/named/chroot/var/named
- 在此目录下创建一个空文件
- 开始
named