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

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

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

관련 정보