其他用户可以查看传递给命令的参数吗?


Answers:


13

通常,他们可以看到它。这是从w手册页:

将为每个用户显示以下条目:登录名,tty名称,远程主机,登录时间,空闲时间,JCPU,PCPU及其当前进程的命令行。

将显示当前正在运行的进程的完整命令行。这就是为什么您不想通过命令行参数提供诸如密码之类的东西。


有没有办法禁用它?
内森·奥斯曼

3
@George之所以存在,是因为rdesktop以某种方式执行了此操作(password参数变成了XXXXXXXX);我很想知道如何。它可能会做些la脚的事情,例如只是分叉自己并传递假的论点。我不确定
Michael Mrozek

13
在Linux上,进程可以覆盖传递给它的参数数组。这反映在其他用户可见的过程树中。但是,总有一段时间它们会暴露在外,并且可能容易受到比赛条件和计时攻击的影响。
mattdm 2011年

15

通常,命令行参数对所有人可见。例如,作为OpenBSD上的非root用户,我可以看到以root身份运行的进程的参数:

$ ps -U root -o command= |grep getty |head -n 1
/usr/libexec/getty std.9600 ttyC0

在Linux上,您会注意到所有 /proc/*/cmdline文件都是世界可读的。

可能有一些非常具体的设置,其中命令行参数保持私有状态。例如,SELinux和Solaris可以完全向其他用户隐藏进程。但是除非您绝对知道自己处于这种设置,否则请假定命令行参数是公共的。


8

在标准设置中,参数可见。正如已经提到的,过程可以覆盖它们在内存而不是之前其他进程有机会看到它们。

但是,grsecurity修补程序包含一个可对其进行更改的修补程序,因此只有进程所有者(和根)才能看到传递给进程的参数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.