Разрешить определенному пользователю выполнять определенную команду sudo без ввода пароля

Разрешить определенному пользователю выполнять определенную команду sudo без ввода пароля

Для разработки игрового сервера я хочу перенести git pushсвою текущую стабильную версию на частный VPS. Внутри git-hook receiveдолжно произойти следующее

sudo systemctl stop myserver
dotnet publish --configuration release
sudo systemctl start myserver

Внутри myserver.service скомпилированный двоичный файл запускается от имени пользователя, имеющего доступ к git-репозиторию.

Моя идея теперь заключалась в том, чтобы заменить первую и последнюю строку скриптами, принадлежащими пользователю root и доступными для чтения всем, чтобы git-hook receiveпревратился в

sudo stop-server.sh 
dotnet publish --configuration release
sudo start-server.sh

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

решение1

Вы можете добавить следующее /etc/sudoers(или создать новый файл внутри /etc/sudoers.d/):

<username> ALL=(ALL) NOPASSWD: /path/to/script

Это сделало бы запуск sudo /path/to/scriptот имени <username>пользователя без пароля. Обратите внимание, что это небезопасно, если содержимое скрипта может быть изменено злонамеренным пользователем, и вам лучше попытаться вообще избежать необходимости в привилегиях root.

Связанный контент