Використовуйте NOPASSWDдирективу
Ви можете використовувати NOPASSWDдирективу у своєму /etc/sudoersфайлі .
Якщо ваш користувач викликається, userа ваш хост викликається, hostви можете додати ці рядки до /etc/sudoers:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Це дозволить користувачеві userвиконувати потрібні команди, hostне вводячи пароль. Усі інші sudoкоманди редактора все одно потребуватимуть пароля.
Команди, вказані у sudoersфайлі, повинні бути повністю кваліфікованими (тобто, використовуючи абсолютний шлях до команди для запуску), як описано на sudoersсторінці man . Надання відносного шляху вважається синтаксичною помилкою.
Якщо команда закінчується /символом, що знаходиться в кінці, і вказує на каталог, користувач зможе запустити будь-яку команду в цьому каталозі (але не в жодних підкаталогах, що входять до неї). У наступному прикладі користувач userможе запустити будь-яку команду в каталозі /home/someuser/bin/:
user host = (root) NOPASSWD: /home/someuser/bin/
Примітка. Завжди використовуйте команду visudoдля редагування sudoersфайлу, щоб переконатися, що ви не заблокували себе із системи - на всякий випадок, якщо ви випадково записали у sudoersфайл щось неправильне . visudoзбереже свій змінений файл в тимчасову папку і тільки перезаписати реальний sudoersфайл , якщо змінений файл може бути розібрані без помилок.
Використання /etc/sudoers.dзамість модифікації/etc/sudoers
Як альтернатива редагуванню /etc/sudoersфайлу, ви можете додати два рядки до нового файлу, /etc/sudoers.dнаприклад /etc/sudoers.d/shutdown. Це елегантний спосіб розділення різних змін у sudoправах, а також залишає sudoersнедоторканим оригінальний файл для легшого оновлення.
Примітка. Знову ж таки, вам слід скористатися командою visudoдля редагування файлу, щоб переконатися, що ви не заблокували себе із системи:
sudo visudo -f /etc/sudoers.d/shutdown
Це також автоматично гарантує правильність встановлення власника та прав нового файлу.
Якщо sudoersпсується
Якщо ви не використовували visudoдля редагування своїх файлів, а потім випадково переплутали /etc/sudoersабо /etc/sudoers.dзаблокували файл, тоді ви будете заблоковані sudo.
Рішенням може бути виправлення файлів, використовуючи pkexecякі є альтернативою sudo.
Щоб виправити /etc/sudoers:
pkexec visudo
Щоб виправити /etc/sudoers.d/shutdown:
pkexec visudo -f /etc/sudoers.d/shutdown
Якщо право власності та / або дозволи невідомі для будь-якого sudoersфайлу, файл буде ігноровано, sudoтому ви також можете опинитися заблокованими в цій ситуації. Знову ж таки, ви можете використати це pkexecдля виправлення.
Правильні дозволи повинні бути такими:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
Використовуйте pkexecтак, щоб виправити право власності та дозволи :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown