Permitir que um usuário específico execute um comando específico do sudo sem inserir a senha

Permitir que um usuário específico execute um comando específico do sudo sem inserir a senha

Para desenvolver um servidor de jogos, quero transformar git pushmeu estábulo atual em um VPS privado. Dentro do git-hook receivedeve acontecer o seguinte

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

Dentro do myserver.service o binário compilado é executado como o usuário que tem acesso ao repositório git.

Minha ideia agora era substituir a primeira e a última linha por scripts de propriedade do root e legíveis por todos para que o git-hook receivese transformasse em

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

Como etapa final, quero permitir que os privilégios do usuário invoquem ambos os scripts com sudo, mas nada mais. Além disso, os scripts executados sem o sudo solicitam a senha do usuário, pois não há interação possível.

Responder1

Você pode anexar o seguinte /etc/sudoers(ou criar um novo arquivo dentro /etc/sudoers.d/):

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

Isso tornaria a execução sudo /path/to/scriptcomo <username>usuário sem senha. Observe que não é seguro se o conteúdo do script puder ser modificado por um usuário mal-intencionado, e é melhor tentar evitar a necessidade de privilégios de root.

informação relacionada