Я пытаюсь разрешить пользователю в группе deployer
перезапустить группу супервизора без пароля; это содержание моего /etc/sudoers.d/deploy
:
%deployer ALL=(ALL:ALL) NOPASSWD:/usr/sbin/service nginx stop,/usr/sbin/service nginx start,/usr/bin/supervisorctl stop gname\:*,/usr/bin/supervisorctl start gname\:*
Предполагается, что пользователь в группе deployer
перезапустить nginx и группу супервизоров gname
. Он работает для nginx, но не для супервизора.
Я пробовал несколько комбинаций:
/usr/bin/supervisorctl stop gname,/usr/bin/supervisorctl start gname
/usr/bin/supervisorctl stop gname*,/usr/bin/supervisorctl start gname*
/usr/bin/supervisorctl stop gname\:,/usr/bin/supervisorctl start gname\:
/usr/bin/supervisorctl stop gname\:\*,/usr/bin/supervisorctl start gname\:\*
Но не могу заставить его работать ... Почему не работает?
Похоже, это может быть из-за пробелов в командах, которые вы разрешаете, например. supervisorctl stop gname
и т.п.
Хотя я не могу протестировать в данный момент, сначала я бы попытался избежать пробелов, например.
%deployer ALL=(ALL:ALL) NOPASSWD:/usr/sbin/service\ nginx\ stop,/usr/sbin/service\ nginx\ start,/usr/bin/supervisorctl\ stop\ gname\:*,/usr/bin/supervisorctl\ start\ gname\:*
Если это не удается, вы можете поместить команды в сценарий под названием supercontrol.sh
с разными параметрами cmd для разных команд и укажите NOPASSWD
только по этому сценарию.
%deployer ALL=(ALL:ALL) NOPASSWD:/path/to/supercontrol.sh
Надеюсь это поможет.