ルートではなく特定のユーザーとして実行されたコマンドにstraceを使用する方法は?

ルートではなく特定のユーザーとして実行されたコマンドにstraceを使用する方法は?

strace特定のプロセスがファイルを検索する場所を観察するために使用しようとしています。このプロセスが検索する場所は、ユーザーと固有の環境変数によって異なります。ただし、strace実行するにはroot権限が必要で、実行するときは次のことを行います。

sudo strace mycommand 

mycommandroot ユーザーのコンテキストで実行されているように見え、検索された場所は現在のユーザーには適用されません。

「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必ずしも必要ではありませんが、rootHOMEを使用しようとしたときに追跡したいプロセスは拒否されました。

答え2

root以外のユーザーを設定し、次のようにstraceとコマンドを設定します。

sudo -u <no-root user> strace <command>

前任者:

sudo -u noroot strace ls

-u – ユーザーとしてコマンドを実行する

関連情報