Sudoコマンドは、指定されたユーザーの代わりにrootとして実行されます。

Sudoコマンドは、指定されたユーザーの代わりにrootとして実行されます。
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 nohup1行の出力が提供されます。なぜならnohup、実行時に実行するように要求されたコマンドを実行するとすぐに自動的に終了し、nohup出力にpsgrepが残らないからです。

を検索すると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として実行されます。

関連情報