Câu hỏi Quyền tệp cho tập lệnh init systemd


Tôi chỉ mới bắt đầu khám phá các tập lệnh init systemd sau khi nâng cấp lên Ubuntu 16.04LTS. Quyền sở hữu và quyền đối với tệp là gì? .service các tập tin?

Nó hiện được mặc định:

-rw-rw-r-- 1 me me  225 Dec 20 21:57 my.service

Sau khi biểu tượng liên kết đến thư mục systemd, có vẻ như các tệp khác hoàn toàn mở (777), thậm chí là của tôi:

lrwxrwxrwx  1 root root   40 Dec 20 21:31 dbus-org.freedesktop.Avahi.service -> /lib/systemd/system/avahi-daemon.service

1
2017-12-21 06:00


gốc




Các câu trả lời:


Các tệp có thể thực thi được không?

Hãy suy nghĩ của các đơn vị systemd như các tập tin cấu hình, không phải kịch bản. Chúng không được chạy bởi hạt nhân, không có #! dòng shebang, và do đó không cần phải thực thi. (Thực tế nếu bạn làm làm cho chúng có thể thực thi được, systemd sẽ in cảnh báo vào nhật ký hệ thống.)

Các tệp có thể đọc được bởi người dùng không phải root không?

Có, không có điểm ẩn nội dung (có thể được truy xuất qua systemctl dù sao). Một lần nữa, systemd sẽ cảnh báo về những nỗ lực vô ích để làm cho các đơn vị không công khai.

Nên các tập tin được có thể ghi bởi người dùng không phải root?

Chỉ khi người dùng hoàn toàn tin cậy (tức là người quản trị hệ thống). Hãy suy nghĩ về những gì họ có thể đạt được: họ có thể đặt các lệnh tùy ý trong tệp đơn vị, khởi động lại hệ thống và các lệnh đó sẽ được chạy với đầy đủ nguồn gốc đặc quyền.

Vì vậy, nếu một người dùng không tin cậy có thể ghi vào các tập tin .service hệ thống, chúng có thể trở thành root rất nhanh.

Các tập tin có nên được sở hữu bởi root hay không?

Chúng là các tệp cấu hình hệ thống, nằm ở /etc, do đó, rễ sẽ là sự lựa chọn tự nhiên. (Không quan trọng lắm - nhưng làm xem phần trước về khả năng ghi.)

Các tệp khác có thực sự "hoàn toàn mở" không?

Họ thì không. Ví dụ của bạn là liên kết tượng trưng, không phải là một tập tin. Các liên kết không có quyền riêng của chúng - hệ thống luôn trả về cùng một giá trị giả, nhưng không bao giờ sử dụng nó cho bất kỳ thứ gì. (Nhân tiện, rwx rwx rwx là 0777, không phải là 0755.)

Nếu bạn nhìn vào tất cả đều đặn tệp trong /etc/systemd/system hoặc là /usr/lib/systemd/system, bạn sẽ thấy rằng gần như tất cả chúng đều có quyền hạn 0644 (rw- r-- r--).


1
2017-12-21 06:13