sudo -EH -u someuser nohup sh check.sh &
上記のコマンドは、-u フラグで指定されたユーザーではなく root としてプロセスを実行します。
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
1行の出力が提供されます。なぜならnohup
、実行時に実行するように要求されたコマンドを実行するとすぐに自動的に終了し、nohup
出力にps
grepが残らないからです。
を検索するとcheck.sh
(少なくとも)、2行の出力が表示されます。すでに見た行と次の別の行が表示されます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として実行されます。