Sudo 命令以 root 身份而不是指定用户身份执行

Sudo 命令以 root 身份而不是指定用户身份执行
sudo -EH -u someuser nohup sh check.sh &

上述命令以 root 身份运行进程,而不是以 -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 ...以 root 用户身份运行。发生这种情况是因为sudo二进制文件是 setuid,并且这是预期的(无论哪个用户要求sudo运行)。你想要找出的是哪个用户sudo 然后运行的命令正在执行为。

使用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只是坐在那里等待内部命令完成,仍然以 root 身份运行。

相关内容