Tôi có thể cho phép người dùng chmod một tệp không thuộc sở hữu của họ không?


17

Tôi muốn cho phép người dùng chmod một tập tin thuộc sở hữu của root hoặc một số người dùng không phải là chính họ. Tôi đã chỉnh sửa tệp thành 777 và tôi nhận được "thao tác không được phép". Tôi đã thêm người dùng vào nhóm của tập tin và nhận được cùng. Tại sao người dùng không thể kiểm tra tệp mà họ có quyền ghi?


1
Theo logic này, tại sao không chạy mọi thứ như root? Nếu bất kỳ người dùng nào có thể thay đổi bất kỳ chế độ nào, về cơ bản bạn sẽ phá hủy toàn bộ mô hình quyền Unix ...
Chris Down

1
Bạn muốn làm gì? có lẽ bạn nên xem qua sudo: linux.die.net/man/8/sudo & linux.die.net/man/5/sudoers
xx4h

Tệp có quyền 777, người dùng có thể truy cập "tệp mv tệp.old; cat file.old> tệp" và giờ họ sẽ sở hữu tệp và có thể kiểm tra tệp. Tại sao họ không thể "tập tin chmod 777"?
ashleymithgpu

5
Không, họ chỉ có thể làm điều đó nếu họ có quyền ghi vào thư mục. Nếu người dùng có quyền thay đổi quyền của các tệp mà anh ta không sở hữu, bằng cách cài đặt chế độ 04777 và sao chép / usr / bin / env vào đó, anh ta có thể chạy bất kỳ lệnh nào với tư cách là người dùng đó.
Stéphane Chazelas

@StephaneChazelas Đó là một đối số lạ vì hạt nhân có thể dễ dàng quyết định (và không!) Cho phép những người không sở hữu những thay đổi đó mà không bị ràng buộc bởi quyết định đó cho phép họ thay đổi tất cả các loại thay đổi. Sau khi tất cả SUID thậm chí được đặt lại khi một người không phải là chủ sở hữu ghi tệp.
Hauke ​​Laging

Câu trả lời:


8

Tại sao người dùng không thể kiểm tra tệp mà họ có quyền ghi?

Đối với quyền truy cập bình thường, đây là một quyết định thiết kế. Bạn cần richacls : WRITE_ACLvà có thể WRITE_OWNER.


1
Và bạn nên cảnh báo rằng richacls thường không có sẵn.
sendmoreinfo

@sendmoreinfo Bài viết trên Wikipedia nói rằng và rõ ràng nó phải được đọc vì câu trả lời của tôi không giải thích được richacls là gì và chúng được sử dụng như thế nào. Thật nực cười khi xem xét một câu trả lời đúng "không hữu ích" do điều này. Đặc biệt là không có sự thay thế tương đương. Lần tới hãy chỉnh sửa nếu bạn nghĩ thông tin đó là cần thiết.
Hauke ​​Laging

Tôi hiểu rồi, đó là một quyết định thiết kế, cảm ơn bạn
ashleymithgpu

2
Bạn rõ ràng đã sử dụng tính năng này, vì vậy hãy tự giải thích nó, bằng lời nói của bạn.
sendmoreinfo

10

Quyền hạn Unix được thiết kế đơn giản. Bạn cần có quyền đọc để đọc từ một tệp, quyền ghi để ghi vào tệp và quyền thực thi để thực thi tệp. Bạn cần sở hữu một tệp để sửa đổi siêu dữ liệu của nó¹.

Cho phép người dùng có thể đọc tệp để cấp cho người khác quyền đọc hoặc cho phép người dùng có thể viết tệp để cấp cho người khác quyền ghi, sẽ không thay đổi nhiều mô hình bảo mật. Đó là vì các quyền unix là tùy ý: người dùng có thể đọc tệp có thể hiển thị nội dung của nó cho người dùng khác, ngay cả khi những người dùng khác này không thể đọc tệp (và tương tự như vậy để viết, người dùng có thể đóng vai trò là proxy và viết thay mặt người khác).

Mặt khác, cho phép người dùng cấp quyền mà nó không hoàn toàn phá vỡ hệ thống cấp phép: người dùng có thể cấp tất cả các quyền cho chính nó.

Rất hiếm khi cần thay đổi quyền của tệp mà bạn không sở hữu. Thông thường bạn nên sắp xếp để tập tin có quyền ngay khi nó được tạo. Nếu bạn thực sự cần điều đó, bạn có thể cung cấp sudo chmodquyền người dùng cho một chế độ cụ thể và một tệp cụ thể (ví dụ joe: ALL = (ALL) chmod g+r /path/to/file).

¹ trừ các truy cập và sửa đổi lần, đó là đặc biệt vì đọc hoặc viết vào tập tin cũng đặt chúng.


Trong trường hợp sử dụng của tôi, có cả quy trình web (theo dữ liệu www) và quy trình cli (một mình), muốn đặt quyền trên một tệp. Tôi đã thêm mình vào nhóm dữ liệu www, nhưng điều này là không đủ.
donquixote

Ngay cả việc thay đổi chủ sở hữu / nhóm thành chính tôi: dữ liệu www không giúp ích gì. (Tôi chưa thiết kế cơ chế cố gắng đặt quyền, tôi không có quyền kiểm soát đối với nó)
donquixote
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.