strace
特定のプロセスがファイルを検索する場所を観察するために使用しようとしています。このプロセスが検索する場所は、ユーザーと固有の環境変数によって異なります。ただし、strace
実行するにはroot権限が必要で、実行するときは次のことを行います。
sudo strace mycommand
mycommand
root ユーザーのコンテキストで実行されているように見え、検索された場所は現在のユーザーには適用されません。
「user」というユーザーのコンテキストで mycommand を実行しようとする次の試みは失敗しました。
sudo strace su user -c "mycommand"
sudo strace su -u user mycommand
strace
ルートではなく特定のユーザーとして実行されたコマンドを使用するには?
答え1
strace/ptrace 権限を変更する必要はありません。
sudo strace -u someuser -E HOME=/home/someuser [any extra args] [traced command]
渡すhttps://man7.org/linux/man-pages/man1/strace.1.html、
-u username
--user=username
Run command with the user ID, group ID, and supplementary
groups of username. This option is only useful when
running as root and enables the correct execution of
setuid and/or setgid binaries. Unless this option is used
setuid and setgid programs are executed without effective
privileges.
-E var=val
--env=var=val
Run command with var=val in its list of environment
variables.
環境変数の変更はHOME
必ずしも必要ではありませんが、root
HOMEを使用しようとしたときに追跡したいプロセスは拒否されました。
答え2
root以外のユーザーを設定し、次のようにstraceとコマンドを設定します。
sudo -u <no-root user> strace <command>
前任者:
sudo -u noroot strace ls
-u – ユーザーとしてコマンドを実行する