sudo -EH -u someuser nohup sh check.sh &
Run Code Online (Sandbox Code Playgroud)
以上命令以 root 身份运行进程,而不是以 -u 标志指定的用户身份运行。
root 4056 2388 0 13:00 pts/4 00:00:00 sudo -EH -u someuser nohup sh /tmp/check.sh &
Run Code Online (Sandbox Code Playgroud)
下面是 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
Run Code Online (Sandbox Code Playgroud)
%sudmygroup 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
Run Code Online (Sandbox Code Playgroud)
Mic*_*mer 17
这一行:
root 4056 2388 0 13:00 pts/4 00:00:00 sudo -EH -u someuser nohup sh /tmp/check.sh
Run Code Online (Sandbox Code Playgroud)
正在报告sudo ...以 root 用户身份运行。发生这种情况是因为sudo二进制文件是 setuid,这是预期的(无论哪个用户要求sudo运行)。您试图找出sudo 然后运行的命令正在执行的用户身份。
Usingps -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
Run Code Online (Sandbox Code Playgroud)
这表明该sh命令被运行的SomeUser的,而sudo只是坐在那里等待内部命令完成,如根本身仍在运行。
| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |