Використовуйте 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