Назад | Перейти на главную страницу

Как разрешить обычному пользователю перезапускать группу супервизора без пароля?

Я пытаюсь разрешить пользователю в группе 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

Надеюсь это поможет.