Рейтинг:0

Можно ли разрешить NOPASSWD для псевдонима команды, требующей sudo?

флаг in

Я добавил этот псевдоним:

псевдоним shutdown2h='sudo shutdown -h +120'

который я хотел бы запустить без ввода пароля, а также без добавления NOPASSWD для всей команды выключения.

Можно ли вместе с NOPASSWD добавить псевдоним в файл sudoers? Я пробовал это с расположением команды ~/.bash_aliases/shutdown2h который дал мне синтаксическую ошибку. Или есть другой способ?

Большое спасибо!

waltinator avatar
флаг it
Всегда вставляйте свой скрипт в `https://shellcheck.net`, средство проверки синтаксиса или устанавливайте `shellcheck` локально. Сделайте использование `shellcheck` частью вашего процесса разработки. Также прочитайте `man sudoers visudo`. Так как «псевдоним» заменяется расширением родительской оболочки перед выполнением, «shutdown2h» не выполняется, а «sudo shutdown -h +120».
Рейтинг:3
флаг it

Вы хотите убедиться, что ваш пользователь не может вносить изменения в то, что ему разрешено запускать. Например, при попытке добавить скрипт, принадлежащий вашему пользователю (~/.bash_aliases/shutdown2h) для запуска от имени пользователя root через судо без пароля вы разрешите выполнение любой произвольной команды. Просто отредактируйте этот файл и запустите его. Это было бы то же самое, что разрешить пользователю выполнять любую команду через sudoers. Например, пользователь отредактирует файл, чтобы прочитать в настоящее время вместо -ч +120 и немедленно выключите машину.

Вместо этого было бы лучше добавить в систему сценарий, принадлежащий пользователю root, возможно, в /USR/местные/бен/. Например, /USR/локальные/бен/shutdown2h, исполняемый всеми, но доступный для записи только пользователю root. Таким образом, вы гарантируете, что пользователь может запускать только определенный сценарий, и этот сценарий не может быть изменен им для запуска чего-то другого. Путь, по которому вы размещаете скрипт, должен быть в вашем $ПУТЬ, который /USR/местные/бен должно быть по умолчанию.

  1. Создать скрипт
sudo vim /usr/local/bin/shutdown2h

#!/бин/баш
выключение -ч +120
  1. Разрешить выполнение скрипта
sudo chmod +x /usr/local/bin/shutdown2h
  1. Разрешить ПОЛЬЗОВАТЕЛЮ запускать определенный скрипт
Судо Визудо

# Добавляем эту запись
ПОЛЬЗОВАТЕЛЬ ВСЕ=(ВСЕ) NOPASSWD: /usr/local/bin/shutdown2h

Теперь ваш пользователь может запустить sudo shutdown2h без запроса пароля и быть уверенным, что этот пользователь сможет запустить только выключение -ч +120 без пароля.

Также при изготовлении sudoers записи, обязательно укажите полный путь к исполняемому файлу/сценарию и не используйте ярлыки, такие как ~/ или же $ГЛАВНАЯ.

Alin Anca avatar
флаг in
Большое спасибо!
vanadium avatar
флаг cn
"вероятно, в /usr/bin/": сделайте это `/usr/local/bin`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.