Centos 7. 일반적으로 루트가 아닌 사용자로 sudo 명령을 실행하려면 visudo를 열고 다음 줄을 올바른 위치에 추가합니다.
%<userGroup> ALL= NOPASSWD: <command>
서비스를 다시 시작하고 싶을 때(현재의 경우) jenkins 사용자와 함께 mongodb.service를 다음과 같이 하고 싶습니다.
%jenkins ALL= NOPASSWD: /usr/bin/systemctl restart mongod.service
여태까지는 그런대로 잘됐다. 그런 다음 다음과 같이 Jenkins 사용자로 전환합니다.
sudo su -s /bin/bash jenkins
그런 다음 명령을 테스트하면 모든 것이 잘 작동합니다. 중지/상태/시작 명령에도 동일한 작업을 수행하고 테스트합니다. 그것이 내가 그들과 함께 하고 싶은 전부입니다. 문제는; 젠킨스로 테스트를 실행하면 이러한 명령이 호출되고 아무 작업도 수행되지 않습니다. 이 mongodb는 테스트용이므로 필요할 때만 실행해도 괜찮습니다. 그래서 제가 알고 싶은 것은; 어떻게 작동하게 만들 수 있나요? 아니면 서비스 사용자와 함께 서비스를 다시 시작/중지/시작할 수 있는 방법은 무엇입니까?
답변1
다른 사람이 같은 유형의 문제를 겪게 될 경우를 대비해 이러한 문제에 대한 오류 메시지가 표시되지 않았기 때문에 모든 것을 스크립트 파일에 넣은 다음 sudo 권한으로 스크립트 파일을 실행할 수 있는 권한을 부여하기로 결정했습니다. 이 경우 다음 오류 메시지가 표시됩니다. "sudo: 죄송합니다. sudo를 실행하려면 tty가 있어야 합니다." 이를 사용하면 이 솔루션으로 문제를 추적할 수 있습니다. https://unix.stackexchange.com/questions/122616/why-do-i-need-a-tty-to-run-sudo-if-i-can-sudo-without-a-password