Trong linux, các đặc quyền của root tại một thời điểm được chia thành "các khả năng", do đó bạn có thể nhận được một danh sách đầy đủ các đặc quyền đặc biệt của root bằng cách xem tài liệu đó : man 7 capabilities
.
Để trả lời câu hỏi của bạn, một lệnh sẽ yêu cầu chạy bằng root khi nó cần một trong những đặc quyền này và thực thi phi tập lệnh của nó không có khả năng liên quan được đặt trong siêu dữ liệu tệp của nó (ví dụ: nếu tập lệnh python yêu cầu khả năng, thì khả năng sẽ cần phải có trong trình thông dịch python được chỉ định trong dòng shebang).
Xin lưu ý rằng một số lệnh cần quyền truy cập root không cần một cái gì đó giống như sudo
vì chúng có bit SUID được đặt trong tệp thực thi của chúng. Bit này làm cho tệp thực thi chạy như chủ sở hữu (thường là root) khi được thực thi bởi bất kỳ ai có quyền truy cập. Một ví dụ là sudo
chính việc thay đổi người dùng là một hành động đặc quyền mà nó cần phải làm.
EDIT: Tôi lưu ý từ câu hỏi của bạn rằng bạn có thể có ý tưởng rằng bạn có thể xác định xem một lệnh có cần quyền truy cập root hay không trước khi chạy nó. Đó không phải là trường hợp. Một chương trình đôi khi có thể yêu cầu quyền root và những lần khác thì không, và đây có thể là một quyết định được đưa ra bởi chương trình vì dữ liệu được cung cấp trong thời gian chạy. Lấy ví dụ, gọi vim
, giống như vậy mà không có đối số, và sau đó thông qua một loạt các phím bấm và dán, bảo nó viết một cái gì đó vào một tệp mà nó không có quyền để viết, hoặc có thể thực thi một lệnh khác mà chính nó sẽ yêu cầu quyền root. Không có gì về lệnh trước khi thực thi có thể chỉ ra rằng cuối cùng nó sẽ yêu cầu quyền truy cập root. Đó là điều chỉ có thể được xác định tại thời điểm nó cố gắng làm điều gì đó đòi hỏi nó.
Dù sao, đây là rất ít ví dụ từ trang chủ được tham chiếu về các đặc quyền của root:
- Thực hiện các thao tác tùy ý của các UID quá trình (setuid (2), setreuid (2), setresuid (2), setfsuid (2));
- Bỏ qua tập tin đọc, viết và thực hiện kiểm tra quyền. (DAC là tên viết tắt của "kiểm soát truy cập tùy ý".)
- Bỏ qua kiểm tra quyền để gửi tín hiệu (xem kill (2)). Điều này bao gồm việc sử dụng thao tác KDSIGACCEPT của ioctl (2).
- Thực hiện các hoạt động khác nhau liên quan đến mạng:
- cấu hình giao diện;
- quản trị tường lửa IP, giả mạo và kế toán;
- sửa đổi bảng định tuyến;
- Ràng buộc một ổ cắm với các cổng đặc quyền miền Internet (số cổng nhỏ hơn 1024).
- Tải và dỡ bỏ các mô-đun hạt nhân (xem init_module (2) và xóa_module (2));
- Đặt đồng hồ hệ thống (ổn định ngày (2), stime (2), adjtimex (2)); đặt đồng hồ thời gian thực (phần cứng).
- Thực hiện một loạt các hoạt động quản trị hệ thống bao gồm: quotactl (2), mount (2), umount (2), hoán đổi (2), hoán đổi (2), sethostname (2) và setdomainname (2);
- Sử dụng khởi động lại (2) và kexec_load (2).
- Sử dụng chroot (2).
- Tăng quy trình giá trị tốt đẹp (đẹp (2), setp Warriority (2)) và thay đổi giá trị đẹp cho các quy trình tùy ý;