특정 사용자가 비밀번호를 입력하지 않고 특정 명령을 sudo하도록 허용

특정 사용자가 비밀번호를 입력하지 않고 특정 명령을 sudo하도록 허용

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>. 악의적인 사용자가 스크립트 내용을 수정할 수 있다면 안전하지 않으므로 루트 권한이 전혀 필요하지 않도록 하는 것이 더 좋습니다.

관련 정보