Sử dụng NOPASSWDchỉ thị
Bạn có thể sử dụng NOPASSWDchỉ thị trong /etc/sudoerstập tin của bạn .
Nếu người dùng của bạn được gọi uservà máy chủ của bạn được gọi, hostbạn có thể thêm các dòng này vào /etc/sudoers:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Điều này sẽ cho phép người dùng userchạy các lệnh mong muốn hostmà không cần nhập mật khẩu. Tất cả các sudolệnh ed khác vẫn sẽ yêu cầu mật khẩu.
Các lệnh được chỉ định trong sudoerstệp phải đủ điều kiện (nghĩa là sử dụng đường dẫn tuyệt đối đến lệnh để chạy) như được mô tả trong sudoerstrang man . Cung cấp một đường dẫn tương đối được coi là một lỗi cú pháp.
Nếu lệnh kết thúc bằng một /ký tự dấu và trỏ đến một thư mục, người dùng sẽ có thể chạy bất kỳ lệnh nào trong thư mục đó (nhưng không có trong bất kỳ thư mục con nào trong đó). Trong ví dụ sau, người dùng usercó thể chạy bất kỳ lệnh nào trong thư mục /home/someuser/bin/:
user host = (root) NOPASSWD: /home/someuser/bin/
Lưu ý: Luôn sử dụng lệnh visudođể chỉnh sửa sudoerstệp để đảm bảo bạn không tự khóa mình khỏi hệ thống - chỉ trong trường hợp bạn vô tình viết một cái gì đó không chính xác vào sudoerstệp. visudosẽ lưu tệp đã sửa đổi của bạn vào một vị trí tạm thời và sẽ chỉ ghi đè lên sudoerstệp thực nếu tệp được sửa đổi có thể được phân tích cú pháp mà không có lỗi.
Sử dụng /etc/sudoers.dthay vì sửa đổi/etc/sudoers
Thay thế cho việc chỉnh sửa /etc/sudoerstệp, bạn có thể thêm hai dòng vào một tệp mới, /etc/sudoers.dvd /etc/sudoers.d/shutdown. Đây là một cách thanh lịch để phân tách các thay đổi khác nhau đối với các sudoquyền và cũng khiến sudoerstệp gốc không bị ảnh hưởng để nâng cấp dễ dàng hơn.
Lưu ý: Một lần nữa, bạn nên sử dụng lệnh visudođể chỉnh sửa tệp để đảm bảo bạn không tự khóa mình khỏi hệ thống:
sudo visudo -f /etc/sudoers.d/shutdown
Điều này cũng tự động đảm bảo rằng chủ sở hữu và quyền của tệp mới được đặt chính xác.
Nếu sudoersbị rối
Nếu bạn không sử dụng visudođể chỉnh sửa các tệp của mình và sau đó vô tình làm rối /etc/sudoershoặc làm hỏng một tệp trong /etc/sudoers.dđó thì bạn sẽ bị khóa sudo.
Giải pháp có thể là sửa các tệp bằng cách sử dụng pkexecthay thế sudo.
Để khắc phục /etc/sudoers:
pkexec visudo
Để khắc phục /etc/sudoers.d/shutdown:
pkexec visudo -f /etc/sudoers.d/shutdown
Nếu quyền sở hữu và / hoặc quyền không chính xác cho bất kỳ sudoerstệp nào , tệp sẽ bị bỏ qua do sudođó bạn cũng có thể thấy mình bị khóa trong tình huống này. Một lần nữa, bạn có thể sử dụng pkexecđể sửa lỗi này.
Các quyền chính xác phải như thế này:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
Sử dụng pkexecnhư thế này để sửa quyền sở hữu và quyền :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown