Вопрос или проблема
Сделать это без запроса пароля довольно просто, как в этом примере, используя USERNAME ALL=(ALL) NOPASSWD: ALL
Например:
myusername ALL = (root) NOPASSWD: ALL
Причина использования NOPASSWD — упростить жизнь, для чего-то вроде редактирования файлов с помощью vim
, а также для apt
для установки пакетов.
Но я все же хочу ограничить некоторые команды только запросом пароля, например reboot / shutdown
и sudo -i
. Как я могу это сделать? Должен ли я назначить каждой команде, которую я использую, строку с NOPASSWD
?
Ответ или решение
Чтобы настроить систему так, чтобы некоторые команды выполнялись с правами суперпользователя без запроса пароля, в то время как другие команды требовали бы ввода пароля, вы можете использовать конфигурацию файла sudoers. Ниже приведены подробные шаги по реализации этой настройки.
Шаг 1: Открытие файла sudoers
Для изменения конфигурации sudo следует использовать утилиту visudo
, которая обеспечивает синтаксическую проверку перед сохранением изменений и предотвращает возможные ошибки, которые могут привести к блокировке доступа:
sudo visudo
Шаг 2: Настройка правил sudo
В файле sudoers вы можете указать права для конкретного пользователя. В вашем случае, допустим, имя пользователя myusername
. По умолчанию вы можете установить разрешение для вашего пользователя выполнять все команды без запроса пароля:
myusername ALL=(ALL) NOPASSWD: ALL
Однако это предоставит полный доступ без пароля ко всем командам, что не соответствует вашим требованиям.
Шаг 3: Добавление ограничений для конкретных команд
Чтобы ограничить некоторые команды, необходимо предоставить разрешения с запросом пароля. Например, чтобы заблокировать доступ к командам reboot
, shutdown
и sudo -i
, вы можете сделать следующее:
- Сначала предоставьте права на выполнение всех команд без пароля.
- Затем добавьте строки, которые требуют пароль для конкретных команд.
Ваша окончательная конфигурация может выглядеть следующим образом:
myusername ALL=(ALL) NOPASSWD: ALL
myusername ALL=(ALL) PASSWD: /sbin/shutdown, /sbin/reboot, /bin/sudo -i
Шаг 4: Объяснение конфигурации
myusername ALL=(ALL) NOPASSWD: ALL
— этот параметр позволяет пользователю выполнять любую команду без запроса пароля.myusername ALL=(ALL) PASSWD: /sbin/shutdown, /sbin/reboot, /bin/sudo -i
— этот параметр требует ввода пароля при выполнении указанных команд.
Шаг 5: Сохранение изменений
После того, как вы внесли необходимые изменения, сохраните файл. Если было сделано всё правильно, у вас будет возможность выполнять большинство команд без запроса пароля, за исключением специфических команд, для которых будет требоваться подтверждение.
Заключение
Использование файла sudoers позволяет тонко настроить доступ к командам системы, основываясь на ваших потребностях. Позаботьтесь о том, чтобы тщательно тестировать настройки, чтобы убедиться, что они работают так, как задумано. Это улучшит безопасность системы и упростит управление пользователями.