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
출력에 ps
grep이 남지 않기 때문입니다.
을 검색하면 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
내부 명령이 완료될 때까지 기다리며 여전히 루트로 실행됩니다.