Sudo 명령은 지정된 사용자 대신 루트로 실행됩니다.

Sudo 명령은 지정된 사용자 대신 루트로 실행됩니다.
sudo -EH -u someuser nohup sh check.sh &

위 명령은 -u 플래그로 지정된 사용자가 아닌 루트로 프로세스를 실행합니다.

root      4056  2388  0 13:00 pts/4    00:00:00 sudo -EH -u someuser nohup sh /tmp/check.sh &

다음은 sudoers 항목입니다.

Cmnd_Alias SUDO_CMNDS = /bin/echo,/bin/ls,/bin/cat,/bin/vim,/bin/mv,/bin/cp,/bin/rm,/bin/mkdir,/bin/diff,/bin/id,/bin/hostname,/bin/grep,/bin/nohup,/bin/locate,/bin/find,/bin/sed,/bin/awk,/usr/bin/whoami

%sudomygroup ALL=(someuser) NOPASSWD:SETENV: SUDO_CMNDS

@michael homer가 제안한 추가 출력

$ ps -ef|grep -i check 
root     14260 14090  0 13:20 pts/4    00:00:00 sudo -HE -u someuser nohup sh /tmp/check.sh
someuser    14261 14260  0 13:20 pts/4    00:00:00 sh /tmp/check.sh

답변1

이 줄은:

root 4056 2388 0 13:00 pts/4 00:00:00 sudo -EH -u someuser nohup sh /tmp/check.sh

sudo ...루트로 실행 중 입니다 . 이는 sudo바이너리가 setuid이기 때문에 발생하며 이는 예상된 것입니다(어떤 사용자가 sudo실행을 요청했는지에 관계없이). 어떤 사용자를 알아보고 싶으신가요?sudo를 입력한 다음 명령을 실행하세요.다음으로 실행 중입니다.

only를 사용하면 ps -ef|grep -i nohup한 줄의 출력이 제공됩니다. 왜냐하면 nohup실행 시 실행하라는 요청을 받은 명령을 실행하자마자 자동으로 종료되고 nohup출력에 psgrep이 남지 않기 때문입니다.

을 검색하면 check.sh(적어도) 두 줄의 출력이 표시됩니다. 이미 본 줄과 다음에 대한 또 다른 줄이 표시됩니다 sh /tmp/check.sh.

root        14260 14090  0 13:20 pts/4    00:00:00 sudo -HE -u someuser nohup sh /tmp/check.sh
someuser    14261 14260  0 13:20 pts/4    00:00:00 sh /tmp/check.sh

이는 sh명령이일부 사용자로 실행하고 sudo내부 명령이 완료될 때까지 기다리며 여전히 루트로 실행됩니다.

관련 정보