Как установить выполнение конкретной команды от имени root / sudo с запросом пароля, в то время как все остальные команды не требуют пароля?

Вопрос или проблема

Сделать это без запроса пароля довольно просто, как в этом примере, используя 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, вы можете сделать следующее:

  1. Сначала предоставьте права на выполнение всех команд без пароля.
  2. Затем добавьте строки, которые требуют пароль для конкретных команд.

Ваша окончательная конфигурация может выглядеть следующим образом:

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 позволяет тонко настроить доступ к командам системы, основываясь на ваших потребностях. Позаботьтесь о том, чтобы тщательно тестировать настройки, чтобы убедиться, что они работают так, как задумано. Это улучшит безопасность системы и упростит управление пользователями.

Оцените материал
Добавить комментарий

Капча загружается...