tìm: Phát hiện vòng lặp hệ thống tệp


9

Khi tôi cố gắng tìm một tệp bằng cách sử dụng, find -name "filename"tôi gặp lỗi:

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

Tôi đã chạy ls -ldi /var/named/chroot/var/named/ /var/namedlệnh và các số inode là như nhau. Nghiên cứu chỉ ra cách khắc phục là xóa liên kết cứng /var/named/chroot/var/named/bằng cách sử dụng rm -fvà tạo lại nó dưới dạng thư mục nhưng khi tôi làm điều này, tôi khuyên rằng nó không thể bị xóa vì nó đã là một thư mục. Làm thế nào để tôi sửa lỗi này? Tôi đang chạy Centos 6 với Plesk 11.

Lệnh mount cho điều này:

/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)

Câu trả lời:


9

named, đó là máy chủ DNS, chạy trong một chroot. Để truy cập tệp cấu hình, tập lệnh khởi động sử dụng mount --bindđể hiển thị đường dẫn cấu hình bên trong chroot. Điều này có nghĩa /var/named/là giống như /var/named/chroot/var/named, /var/named/chroot/var/named/chroot/var/namedvà như vậy. Đây là cấu trúc thư mục đệ quy, vì vậy nếu findcố gắng chuyển đổi tất cả, nó sẽ không bao giờ có thể chấm dứt thực thi, vì vậy nó nhận ra rằng hai thư mục thực sự giống nhau và in cho bạn thông báo đó, để cảnh báo bạn.

Thông báo có nghĩa là findsẽ không tìm kiếm bên trong /var/named/chroot/var/namedbởi vì nó nhận ra nó giống với một số thư mục khác đã thấy trước đó. Đó là một thông điệp hoàn toàn vô hại, bạn có thể yên tâm bỏ qua nó: sau khi bỏ qua /var/named/chroot/var/namedcác findhoạt động tiếp tục bình thường.


Vì vậy, nếu không có gì sau tuyên bố này, nó chỉ có nghĩa là tập tin không được tìm thấy?
dùng1780242

vâng, đoán vậy Hãy thử tương tự với một tệp mà bạn biết rằng có tồn tại. Ngoài ra, bạn có thể chặn các thông báo lỗi khi thêm `2> / dev / null` vào dòng lệnh.
pqnet

1

Thông báo kích hoạt mã trả về 1 và không thể bỏ qua, cũng như chuyển hướng sẽ không hoạt động.

Sử dụng findutils findutils-4.4.2-6.el6.x86_64

Có vẻ như đây là báo cáo lỗi tương ứng:

Trên các hệ thống chạy nhân Linux, "find -printf% F" không còn tạo ra câu trả lời sai cho các tệp trên các hệ thống tệp đã được nhắc lại ở nơi khác bằng cách sử dụng "mount --bind". (Lỗi Savannah # 14921).

Một giải pháp (thách thức bảo mật) nếu bạn không thể sửa tập lệnh bị ảnh hưởng (nghĩa là do nó được viết bởi bên thứ 3) là loại bỏ gói bind-chroot, ít nhất là tạm thời.


0

Tôi không nghĩ đó là một liên kết cứng. Thông thường các liên kết cứng thư mục bị cấm. Tôi có thể là một liên kết mềm, nhưng có vẻ như đó là một vòng lặp gắn kết: có vẻ như /var/namedhoặc có thể /varđược gắn lại /var/named/chroot. Có thể đó là một mount mount ( mount -o bind) hoặc chỉ là mount bình thường.

Bạn có thể gửi đầu ra của mountlệnh của bạn ? Ngoài ra, có thể đây là một thú cưỡi cần thiết cho nhà tù chroot và tốt hơn hết bạn nên rời khỏi nó.


nó có khả năng là một mount --bindvì nó là thứ duy nhất hoạt động trong một cái chroot.
pqnet

0

Vấn đề được gây ra bởi tập lệnh init namedgắn kết /var/namedthư mục /var/named/chroot. Giải pháp cho vấn đề này cũng có trong tập lệnh init.

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

Như đã đề cập ở trên, mountchức năng sẽ chỉ hoạt động nếu thư mục trống. Vì vậy, sử dụng giải pháp dưới đây:

  1. Dừng lại named
  2. Tạo thư mục /var/named/chroot/var/named
  3. Tạo một tập tin trống trong thư mục này
  4. Khởi đầu named
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.