git push
게임 서버를 개발하기 위해 현재 안정 버전을 프라이빗 VPS로 전환 하고 싶습니다 . git-hook 내부에서 receive
다음이 발생해야 합니다.
sudo systemctl stop myserver
dotnet publish --configuration release
sudo systemctl start myserver
myserver.service 내에서 컴파일된 바이너리는 git-repository에 대한 액세스 권한이 있는 사용자로 실행됩니다.
나의 현재 아이디어는 첫 번째와 마지막 줄을 루트가 소유하고 모든 사람이 읽을 수 있는 스크립트로 바꾸는 것입니다 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>
악의적인 사용자가 스크립트 내용을 수정할 수 있다면 이는 안전하지 않으므로 루트 권한을 완전히 요구하지 않는 것이 더 좋습니다.