如何在以特定非 root 用户身份执行的命令上使用 strace?

如何在以特定非 root 用户身份执行的命令上使用 strace?

我试图用来strace观察某个进程在哪里搜索文件。此过程搜索的位置将根据用户及其独特的环境变量而有所不同。但是,strace需要 root 权限才能运行,当我运行时:

sudo strace mycommand 

mycommand似乎在 root 用户的上下文中执行,并且搜索到的位置不适用于当前用户。

以下使 mycommand 在用户(名为“user”)上下文中执行的尝试未成功:

sudo strace su user -c "mycommand"

sudo strace su -u user mycommand

如何使用strace以特定的非 root 用户身份执行的命令?

答案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 – 以用户身份运行命令

相关内容