Мне нужно sudo без пароля, для сценариев. Где я неправ?

9

Я в группе sudo все в порядке:

$ id
uid=1002(molot) gid=1002(molot) groups=1002(molot),27(sudo),33(www-data)

В моих судорогах у меня, кажется, есть подходящая настройка:

sudo    ALL=(ALL:ALL) NOPASSWD: ALL

и это последняя некомментированная строка там.

Но когда я пытаюсь это сделать git pull, я снова набираю пароль:

$ sudo -u www-data git --git-dir /var/www/.git --work-tree /var/www pull "origin" master
[sudo] password for molot:

Когда я вошел в консоль, это не проблема, но это неприемлемо в скриптах. Итак, как я могу разрешить кому-либо из группы sudo использовать git pull как www-data без повторного ввода пароля?

Когда я ставлю свое имя напрямую:

molot ALL=(ALL) NOPASSWD: ALL

меня устраивает. Но, очевидно, не для Мэриан или других пользователей из группы sudo. Насколько я понял руководство , имена пользователей и группы должны работать в первом файле.

МОЛОТ
источник
Ты не можешь sudo -u www-data ./your_script.sh? Какова цель сценария?
jimbobmcgee
@jimbobmcgee это мерзавец, так что нет, я ничего не могу к нему добавить. Он вызывается пользователем, который отправил изменения git, и я не нашел реального способа обойти это.
Молот
Первое поле (если я правильно понимаю sudoersформат файла) - это имя вызывающего пользователя. Вы пытались заменить его подстановочным знаком *, или каким бы пользователем ни был запущен git hook?
CVn
@ MichaelKjörling, как указано здесь, должна быть возможность писать как пользователей, так и группы в первом поле. *не работает. Помещение моего имени работает непосредственно для меня ... но не для других пользователей в группе sudo, очевидно.
Молот
@ MichaelKjörling, спасибо, ваш комментарий заставил меня искать специальные символы и позволил мне найти ответ: D Редактировать: удалить собственный ответ и принять сторонний ответ с того же момента.
Молот

Ответы:

19

Кажется, у вас есть соответствующая строка в вашем sudoers, пропускающая символ:

sudo ALL = (ALL: ALL) NOPASSWD: ALL

соответствует пользователю с именем 'sudo'. Для «всех пользователей в группе sudo» должно быть:

% sudo ALL = (ALL: ALL) NOPASSWD: ALL

(обратите внимание на знак% в начале).

rafalmp
источник
1
Ах , так это то , что %в %wheelвиду.
Нихил
1

sudo visudo

Затем, предполагая, что molotваше имя пользователя, перейдите в конец файла и:

molot ALL=(ALL) NOPASSWD: ALL

Это должно работать, но если это не так, держите нас в курсе.

Джугуртха Хаджар
источник
Это работает. Для меня. Но, очевидно, не для Мэриан или любого другого пользователя в группе sudo.
Молот
Затем создайте псевдонимы пользователя ( User_Alias) и дайте разрешение на запуск определенных команд от имени пользователя root ( Runas_Alias). Я не знаю, как настроена ваша группа, вы можете посмотреть википедию Sudoers help.ubuntu.com/community/Sudoers. Это действительно лаконично. Проверьте раздел «Технические характеристики пользователя», это должно помочь.
Джугуртха Хаджар