Root không thể chmod?


12

Trong bộ phận của tôi, chúng tôi có một máy chủ tệp nhỏ với CentOS và samba. Tôi có quyền truy cập root để có thể thực hiện một số bảo trì cơ bản.

Hôm nay tôi đã làm cho một số thư mục chỉ đọc, vì vậy tôi đã tiếp tục và làm một chmod -R -w some-folder/, nhưng đối với một vài tệp tôi đã nhận được phản hồi:

chmod: ./somefile.pdf: quyền mới là r-xrwxr-x, không phải r-xr-xr-x

Sau khi thêm -vtôi không nhận được nhiều thông tin:

chế độ của `./somefile.pdf 'được giữ lại là 0575 (r-xrwxr-x)

Tôi đã thử những điều sau đây để đảm bảo:

# touch test-file
# chmod -v -R -w .
mode of `./somefile.pdf' retained as 0575 (r-xrwxr-x)
chmod: ./somefile.pdf: new permissions are r-xrwxr-x, not r-xr-xr-x
mode of `./test-file' changed to 0444 (r--r--r--)

Tôi không thể nghĩ ra bất kỳ lý do chính đáng nào tại sao root không thể thực hiện chmod?

Một số mẩu tin:

  • Hệ thống tập tin không chỉ đọc (chỉ một số tệp bị từ chối không được chỉnh sửa).
  • Tôi đã chạy các lệnh chmod với quyền root nhưng không có hiệu lực.
  • Phân vùng chứa các tệp nằm trong ext4.

CẬP NHẬT : Đây là đầu ra cho lsattrtập tin và chứa thư mục:

# lsattr somefile.pdf
-------------e- somefile.pdf
# lsattr ..
-------------e- ../myfolder

Không có hiện tại setuid ( ls -la):

dr-xr-xr-x  2 userxyz abc   4096 May 30 09:29 .
dr-xr-xr-x 17 userxyz abc   4096 Sep 19  2013 ..
-r-xrwxr-x  1 userxyz abc 275150 Aug  6  2013 somefile.pdf

Bạn đang truy cập các tập tin này từ xa?
Luciano Andress Martini

1
Đầu ra của lsattrnhững tập tin tương tự và thư mục phía trên nó là gì?
Ryder

Câu trả lời:


17

Theo các nguồn, bạn có một chế độ dự kiến ​​ngây thơ . Sau khi bỏ nhiều hơn, tôi nghĩ nguyên nhân là -wtùy chọn, đó không phải là điều bạn đang mong đợi. Bạn nên cho g-whoặc ugo-w(theo nhu cầu của bạn).

Không đưa ra một mục tiêu rõ ràng (a, o, g, u) một số kết quả không mong muốn có thể được cung cấp, theo giá trị umask. Tôi nghĩ rằng tin nhắn thêm như vậy được thực hiện vì những thay đổi bất ngờ như vậy.

Chỉnh sửa: nguồn trong http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301

Lấy từ bộ nhớ cache của google, một nhận xét trong mã đó không còn nữa:

/ * Nếu đúng, chẩn đoán bất ngờ từ các hành vi lạm dụng ngây thơ như "tệp chmod -r". POSIX cho phép chẩn đoán ở đây, vì mã di động được cho là sử dụng. "tập tin chmod - -r" * /


Vâng, đây là nó. Tôi đã thay đổi nó ugo-wvà nó không còn phàn nàn nữa. Tôi sẽ đợi một thời gian trước khi chấp nhận lịch sự với những người trả lời tiềm năng.
Roflo

1
Và tôi hoan nghênh các chỉnh sửa hoặc câu trả lời tốt hơn, vì tôi vẫn không hiểu tại sao chmod hoạt động theo cách kỳ lạ này.
Giacomo Catenazzi

5
man chmod: "Một tổ hợp các chữ cái ugoa kiểm soát quyền truy cập vào tệp của người dùng sẽ bị thay đổi [...] Nếu không có cái nào trong số này được đưa ra, hiệu ứng sẽ như thể (a) được đưa ra, nhưng các bit được đặt trong cái ô không bị ảnh hưởng. " Vì vậy, bạn có thể thực hiện những thứ như tệp chmod + w và chỉ cấp quyền truy cập ghi vào những tệp sẽ nhận được khi tạo tệp mới. Các hành vi tiêu cực có vẻ hơi khó hiểu, vì vậy cảnh báo có vẻ là một ý tưởng tốt.
ilkkachu
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.