Используйте NOPASSWD
директива
Вы можете использовать NOPASSWD
директива в вашем /etc/sudoers
файл.
Если ваш пользователь вызван user
и ваш хозяин называется host
вы могли бы добавить эти строки в /etc/sudoers
:
user host = (root) NOPASSWD: /sbin/shutdownuser host = (root) NOPASSWD: /sbin/reboot
Это позволит пользователю user
чтобы выполнить нужные команды на host
без ввода пароля. Все остальные sudo
для команд редактирования по-прежнему будет требоваться пароль.
Команды, указанные в sudoers
файл должен быть полностью квалифицированным (т.е. использовать абсолютный путь к команде для запуска), как описано в sudoers
справочная страница. Указание относительного пути считается синтаксической ошибкой.
Если команда заканчивается завершающим /
символ и указывает на каталог, пользователь сможет выполнить любую команду в этом каталоге (но не в каких-либо подкаталогах в нем). В следующем примере пользователь 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/shutdownpkexec chmod 0440 /etc/sudoers.d/shutdown