Sử dụng NOPASSWD
chỉ thị
Bạn có thể sử dụng NOPASSWD
chỉ thị trong /etc/sudoers
tập tin của bạn .
Nếu người dùng của bạn được gọi user
và máy chủ của bạn được gọi, host
bạ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 user
chạy các lệnh mong muốn host
mà không cần nhập mật khẩu. Tất cả các sudo
lệnh ed khác vẫn sẽ yêu cầu mật khẩu.
Các lệnh được chỉ định trong sudoers
tệ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 sudoers
trang 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 user
có 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 sudoers
tệ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 sudoers
tệp. visudo
sẽ 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 sudoers
tệ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.d
thay vì sửa đổi/etc/sudoers
Thay thế cho việc chỉnh sửa /etc/sudoers
tệp, bạn có thể thêm hai dòng vào một tệp mới, /etc/sudoers.d
vd /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 sudo
quyền và cũng khiến sudoers
tệ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 sudoers
bị 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/sudoers
hoặ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 pkexec
thay 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ỳ sudoers
tệ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 pkexec
như 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