有人能帮忙找到一种方法来创建一个ruser
和user
不同的进程吗?目前,我使用了行sudo su david -c ./test.pl
,然后当我输入以下行来获取user
和时ruser
:
% ps -eo pid,user,ruser,fname,pcpu,nice,stime,time | grep test.pl
10322 david david test.pl 12.4 20 13:37:00 01:38
和user
仍然ruser
相同。我需要创建一个类似以下示例的流程:
% ps -o user,ruser,comm -p 59515
...
USER RUSER COMMAND
root csrethab xscreensaver
有什么想法吗?
答案1
不要运行sudo su david
该进程,而是更改程序的模式以允许 setuid:
chmod u+s /path/to/program
(这必须以允许 chmod 程序的用户身份执行,例如 root)
然后,直接运行该程序而不使用 sudo。它将具有有效用户 david,但 ruser 将是你。
答案2
差异非常小,主要与 suid 进程等有关。
例如,passwd 之类的东西,作为非特权用户,您有权修改只有 uid 为 0 的文件。因此,您的有效用户或user
将是 root,而您的ruser
实际用户将是 david。
因此对于具有 setuid root 的进程(即 passwd),您将会有一个区别。
通过将文件设置为与正在运行的用户不同的用户,您应该能够看到差异。