Tại sao chown
lệnh chỉ có gốc? Tại sao người dùng không phải root không sử dụng chown để cho đi các tệp mà họ sở hữu?
chown
để cho đi các tệp mà họ sở hữu. (Tôi đã thấy các hệ thống trong đó, tùy thuộc vào cấu hình hệ thống tệp, bạn có thể.)
Tại sao chown
lệnh chỉ có gốc? Tại sao người dùng không phải root không sử dụng chown để cho đi các tệp mà họ sở hữu?
chown
để cho đi các tệp mà họ sở hữu. (Tôi đã thấy các hệ thống trong đó, tùy thuộc vào cấu hình hệ thống tệp, bạn có thể.)
Câu trả lời:
Hầu hết các hệ thống unix đều ngăn người dùng khỏi việc đưa ra các tập tin của Sony, nghĩa là, người dùng chỉ có thể chạy chown
nếu họ có các đặc quyền của người dùng và nhóm mục tiêu. Vì việc sử dụng chown
yêu cầu sở hữu tệp hoặc là root (người dùng không bao giờ có thể thích hợp với tệp của người dùng khác), chỉ có root mới có thể chạy chown
để thay đổi chủ sở hữu tệp thành người dùng khác.
Lý do cho sự hạn chế này là việc tặng một tệp cho người dùng khác có thể cho phép những điều xấu xảy ra trong trường hợp không phổ biến, nhưng vẫn là tình huống quan trọng. Ví dụ:
chown
để tạo tệp đó do Bill người dùng khác sở hữu. Sau đó, tệp sẽ được tính theo hạn ngạch đĩa của Bill mặc dù chỉ Alice mới có thể sử dụng tệp./bin/bash
, thiết lập nó và sau chown
đó gửi cho bất cứ ai họ muốn. Bây giờ họ có quyền truy cập vỏ như người đó.
chown
luôn xóa các bit setuid và setgid.
drwxr-xr-x ring0 ring0 .
) trong đó root có tệp thông thường ( -rw-r--r-- root root file
), tại sao tôi không thể làm chown ring0 file
vì dù sao nó cũng được phép làm, như ring0
, cp file x ; rm file ; mv x file
(và một số tùy chọn touch sometime file
...)?
Trên Linux, bạn cần có khả năng CAP_CHOWN để phát triển. root được cấp như vậy. Tham khảo: http://vouters.dyndns.org/tima/Linux-OpenVMS-C-Im Hiệning_chown.html để được giải thích. Nếu bạn có ý định cung cấp khả năng CAP_CHOWN, hãy xây dựng mã của bạn bằng libcap-ng hoặc libcap như được trình bày bởi: http://vouters.dyndns.org/tima/Linux-PAM-C-Pluggable_Authentication_Modules_programming_example.html nơi bạn phải đơn giản thay thế với CAP_CHOWN.
Bạn có thể khởi chạy lệnh nhưng nó sẽ không hoạt động nếu bạn không root. Thật dễ dàng: hãy tưởng tượng một người dùng có thể thay đổi phần mềm thành người dùng root. Nó có thể thêm bit setuid và, voilà, anh chàng là root! Vì vậy, việc sử dụng có thể thêm bit bằng chmod, nhưng không có cơ hội thay đổi chủ sở hữu của tệp.