Para desenvolver um servidor de jogos, quero transformar git push
meu estábulo atual em um VPS privado. Dentro do git-hook receive
deve 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 receive
se 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/script
como <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.