'Quyền bị từ chối' đối với một tập tin tôi sở hữu?


13

Người dùng của tôi, bob, không thể truy cập các tệp mà anh ấy (về mặt lý thuyết). Tôi đang chạy Fedora Core 8. Có thể dễ dàng hiển thị hơn nói:

> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

> cd ./log
-bash: cd: log/: Permission denied

> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? the.log

> sudo ls -al ./log
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .
drwxrwxr-x 7 bob bob      4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob         0 Jun  1 04:12 the.log

Các ls -alnổi bật như rất kỳ quặc. Nó sẽ liệt kê các tệp mà tôi không có quyền xem, nhưng không hiển thị cho tôi quyền?

Vì vậy, các câu hỏi là, điều gì sẽ gây ra điều này? Và tôi có thể làm gì để sửa chữa nó?

Câu trả lời:


17
> sudo ls -al ./log
...
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .

Có vẻ như Bob không thực thi quyền cho ./log, vì vậy anh ta không thể thực hiện được cd.

Nhưng

> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

cho thấy rằng anh ấy làm. Nhưng có vẻ như họ đang chỉ vào cùng một tệp (các quyền khác nhau, thời gian sửa đổi khác nhau).

Hãy thử sudo ls -ail ./logls -ailxem nếu inode là như nhau.


10

Mọi thứ đơn giản hơn tham nhũng hệ thống tập tin hoặc selinux. Như bạn có thể thấy bạn đang thiếu quyền x (thực thi) trên thư mục nhật ký. Trên thực tế đối với các thư mục x có nghĩa là ai đó có thể thay đổi thư mục đó. Chỉ cần thực hiện một "chmod + x log" để sửa lỗi perm đó và bạn sẽ có thể truy cập nó.


> Trên thực tế cho các thư mục x có nghĩa là ai đó có thể thay đổi thư mục đó Wow. Tôi cứ quên mất rằng; cảm ơn.
yPhil

6

Tôi đã thấy những thứ như thế khi hệ thống tập tin bị hỏng hoặc nếu bạn có một ổ đĩa bị lỗi. Cách khắc phục thường là chạy fsck với hệ thống tập tin và để nó sửa các lỗi đã tìm thấy.


Tôi đã làm điều này chỉ khoảng một giờ trước trên một trong các máy chủ tập tin của tôi. +1
Thomas Denton

2

Ngoài ra, hãy kiểm tra cài đặt SE / Linux. Đôi khi các quyền trên tệp không liên quan gì đến việc bạn có thể truy cập hay không.


1
Tôi đồng ý với @David Mackffy. Nếu SELinux được bật và nếu các tệp / thư mục được tạo bởi người khác và sau đó thay đổi quyền sở hữu thành bob, điều này có thể xảy ra. vì bối cảnh của các tệp vẫn còn với tác giả gốc và sẽ không thể truy cập được cho đến khi bối cảnh cũng được thay đổi thành người dùng Bob.
Viky

2

Các tập tin có thể có các thuộc tính mở rộng hoặc chỉ bổ sung được đặt. Tôi đã có điều này xảy ra trước đây và thậm chí root không thể xóa tập tin.

Các thuộc tính mở rộng có thể là các khung nhìn thông qua "lsattr" và được thay đổi thông qua "chattr"


1
> sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 ngày 2 tháng 6 04:11.

Tôi không chắc tại sao nhưng "." mục nhập ./log/ không có quyền thực thi. Các quyền nên giống hệt với các quyền cho ./log.

Bạn có thể thử chmod 755 ./log và chmod 755 ./log/. và xem nếu một trong hai lệnh sửa chữa truy cập?

Ngoài ra, tôi khuyên bạn nên chạy một fsck trên hệ thống tập tin vì có vẻ như nó không đồng bộ.


1

Bạn đã thử thay đổi quyền sở hữu thư mục cho người khác, sau đó quay lại với Bob? Mặc dù vậy, lời khuyên của Zoredache là tốt hơn - chỉ cần fsck thôi!


2
Loại vấn đề này luôn luôn kết thúc là quyền thư mục.
doublejosh

1

Một câu trả lời ngắn gọn hơn IMO.

Thư mục của bạn không có quyền thực thi, được yêu cầu bởi cd .

Sửa chữa:

$ sudo chmod +x ./log

Đệ quy:

$ sudo chmod -R +x ./log

+ x là thêm thuộc tính thực thi. Bạn luôn có thể xóa thuộc tính bằng cách làm -x

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.