Mogekoff
@Mogekoff
студент кмбшник

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

Я пишу скрипт установщик для дистрибутива Arch Linux.

1) В скрипте имеются команды, которые должны быть запущены от имени пользователя.
2) В скрипте имеются команды, которые требуют прав суперпользователя.

Я хочу, чтобы скрипт выполнялся непрерывно. То есть при выполнении sudo команд у пользователя НЕ спрашивался пароль и скрипт продолжал дальше работать.

Что я сделал: сохранил пароль от пользователя (которого заранее добавил в sudoers), запустил скрипт от имени пользователя, а в нем, в командах, которые требуют root, просто приписывал
echo $USER_PASS | sudo -S command

Казалось бы всё отлично, костыль работает, но вот незадача.

Есть одна очень неудобная команда, которую я использую в скрипте
makepkg -sri
Дело в том, что она не даёт запустить себя от root'a. Но в процессе её выполнения она сама вызывает sudo, которому я конечно же не могу задать параметр -S.

Что делать в такой ситуации? Решения нет? Забыть про непрерывность скрипта?

Сам скрипт (я только-только на этой неделе начал изучать BASH):
  • Вопрос задан
  • 4035 просмотров
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Что делать в такой ситуации?

Добавить пользователя который выполняет этот скрипт в /etc/sudoers с флагом NOPASSWD. Костыли убрать:

username ALL=(ALL:ALL) NOPASSWD: ALL
Ответ написан
xotkot
@xotkot
хорошо есть и хорошо весьма
makepkg from the Arch ISO

да и зачем нагружать пользователя компиляцией ? вы хотите чтобы он уснул ?
у вас там browsh и ly-git ставятся из аура
в ауре есть же скомпиленные
https://aur.archlinux.org/packages/browsh-bin
https://aur.archlinux.org/packages/ly

да и правильнее наверное будет запускать установочный скрипт от суперпользователя, а уже в процессе если нужно запускать команды от выбранного пользователя или вообще лучше разнести на два скрипта в одном установка и настройка системы а во втором настройка пользователя
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Oxyd
@Oxyd
Linux enthusiast
sudo -u username command
Не поможет отцу русской демократии?
Ответ написан
@Karpion
Тут уже много насоветовали, я добавлю:
Если "одна очень неудобная команда" вызывает sudo - то очевидно, в её документации д.б. описано, как работать в этом случае.
Ответ написан
@jimquery
Во-первых в sudoers можно прописать nopasswd для конкретной команды.
Во-вторых, не уверен, но попробуйте установить sticky bit для программы, которая просит пароль.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы