Sự khác biệt lớn nhất là với sudo
bạn không cần mật khẩu gốc để chạy lệnh dưới dạng root, như bạn muốn su
. Bạn cần mật khẩu gốc để thêm ai đó vào sudoers
tệp nhưng sau đó người đó có thể chạy tất cả hoặc một số (nếu bạn đã giới hạn mật khẩu) dưới dạng root mà không yêu cầu thêm mật khẩu.
Sự khác biệt khác là, như bạn đã lưu ý, sudo
cho phép kiểm soát tốt hơn nhiều chính xác những lệnh nào có thể chạy.
Để biết chi tiết về định dạng của sudoers
tập tin chạy man sudoers
. Bạn sẽ tìm thấy các ví dụ ở đó chỉ cho phép một số lệnh nhất định được chạy dưới quyền root. Cấu trúc cơ bản của mỗi dòng là:
user_list host_list = cmd_list
cmd_list có thể bao gồm các chi tiết về người dùng mà người dùng thực sự được phép chuyển sang. Chẳng hạn, bạn có thể cho phép quản trị viên web chuyển sang wwwroot để khởi động lại apache nhưng không phải root. Nó cũng có thể bao gồm các tùy chọn khác như liệu mật khẩu người dùng có được yêu cầu trước khi chuyển đổi hay không (đây là mặc định).
Một dòng ví dụ có thể là:
joe ALL=(ALL) ALL
có nghĩa là: hãy để joe chạy bất kỳ lệnh nào trên bất kỳ máy chủ nào như bất kỳ người dùng nào. Một dòng chặt chẽ hơn có thể là:
joe ALL=(operator) /usr/local/ops/
có nghĩa là: hãy để joe chạy bất kỳ lệnh nào trong thư mục / usr / local / ops với tư cách là "toán tử" của người dùng.
Có rất nhiều ví dụ ở cuối trang man sudoers.
Bạn nên chỉnh sửa /etc/sudoers
bằng lệnh visudo
. Điều này kiểm tra xem các tập tin là hợp pháp và giúp ngăn chặn bạn vô tình phá vỡ nó.
sudo
là một phát minh tuyệt vời