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