답변:
스크립트에서 sudo 명령을 사용하십시오.
의 형태의:
sudo -u username command
Sudo 명령 실행은 명령을 사용자로 사용자 이름 .
스크립트가 루트로 실행되는 경우 암호를 묻는 메시지가 표시되지 않습니다. 그렇지 않으면,이 기사 는 하나의 명령 행에서 비밀번호로 sudo 를 사용하는 방법을 설명합니다 이 기사에서는 암호없이 sudo 를 사용하는 방법에 대해 설명 합니다.
chmod +x script.sh
한 다음sudo -u username script.sh
i
사용자 환경을 얻으려면 옵션 도 포함하십시오
이 답변 은 좋지만 serverfault 조언은 약간 위험합니다. 누구든지 루트로 아무것도 실행할 수 있습니다! 의견을 형식화 할 수 없으므로 여기에 게시하고 있습니다.
visudo를 사용하여 필요한 권한을 최대한 정확하게 부여하는 것이 좋습니다. 다음 visudo
과 같은 줄을 입력 하고 추가하십시오 :
username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2
많은 호스트에서 동일한 것을 실행 해야하는 경우 다음을 사용하여 열 수 있습니다.
username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2
그러나 나는 어느 쪽도 사용하지 않을 것이다 :
username ALL=(ALL) NOPASSWD: ALL
또는 username 호스트 이름 = ALL
sudoer 맨 페이지는 피투성이의 세부 정보를 많이있다
username
에서는 명령을 실행할 수있는 사용자 이름으로 바꿉니다). 실행하려는 실행 파일이 특정 사용자 만 실행할 수 sudo -u username commandline
있는 경우 스크립트 행에 해당 사용자 이름을 전달 하면됩니다.
# I = 좋아요 :
#test if running bash as a different user works
sudo -u nobody bash -c : && RUNAS="sudo -u nobody"
echo 1: $USER
#Runs bash with commands between '_' as nobody if possible
$RUNAS bash<<_
echo 2: \$USER
_
echo 3: $USER
# ./운영
1: root
2: nobody
3: root