Tôi đang đọc cuốn sách phát triển nhân Linux , trong chương 5 "Thực hiện cuộc gọi hệ thống" trang 77 nói
Ví dụ: có khả năng (CAP_SYS_NICE) kiểm tra xem người gọi có khả năng sửa đổi các giá trị đẹp của các quy trình khác hay không. Theo mặc định, siêu người dùng sở hữu tất cả các khả năng và nonroot không sở hữu. Ví dụ, đây là cuộc gọi hệ thống khởi động lại (). Lưu ý cách bước đầu tiên của nó là đảm bảo rằng quy trình gọi có CAP_SYS_REBOOT. Nếu một câu lệnh có điều kiện bị xóa, bất kỳ quá trình nào cũng có thể khởi động lại hệ thống.
Tuy nhiên, trong Debian Sid của tôi, tôi có thể khởi động lại máy bằng cách sử dụng gnome hoặc bằng cách thực thi / sbin / khởi động lại mà không cần sudo hoặc su. Sao có thể như thế được?
Có lẽ với systemctl?
ls -l /sbin/reboot
lrwxrwxrwx 1 root root 14 Jun 28 04:23 /sbin/reboot -> /bin/systemctl
EDIT: Nhóm người dùng của tôi
[damian@xvz:~]$ groups
damian sudo wireshark bumblebee
EDIT 2: quyền systemctl
[damian@xvz:~]$ ls -l /bin/systemctl
-rwxr-xr-x 1 root root 626640 Jun 28 04:23 /bin/systemctl
systemctl
. Điều gìls -l /bin/systemctl
nói với bạn?