w 命令对用户安全吗?

w 命令对用户安全吗?

某些应用程序允许将密码作为参数传递。例如:

mysql --user=user_name --password=your_password db_name

安全吗?除了输入的密码将保存在 bash 历史记录中之外,某人还可以w在适当的时候输入命令,并会看到进程的完整命令行(包括密码)。

让我感到非常惊讶的是,每个用户都可以看到我当前正在执行的命令。

答案1

系统中每个进程的命令行参数都被视为“公共”。当然,不仅是w命令,而且ps还有许多其他命令都可以访问该信息。top事实上,获取该信息不需要任何特殊权限。在 Linux 上,您可以通过读取 来读取另一个进程的命令行,甚至是属于另一个用户的进程/proc/<pid>/cmdline

w这不是或topps(或)方面的缺陷或不安全行为cat。相反,责任在于永远不要在多用户系统的命令行上传递敏感信息。

大多数能够在命令行上接受密码的实用程序都表明不建议这样做。例如,来自 的mysql联机帮助页:

在命令行上指定密码应被视为不安全。请参阅第 5.3.2.2 节“密码安全的最终用户指南”。您可以使用选项文件来避免在命令行上提供密码。

顺便说一句,在环境变量中传递密码或敏感数据并不是那么明显的不安全,但在大多数系统上实际上也是不安全的。

答案2

不,在命令行上向程序传递密码并不安全。最好使用:

mohsen@debian:~$ mysql -uuser -p
Enter password: 

答案3

虽然它并不安全,但请记住,Linux 现在才二十岁出头——就像 IT 中的其他事物一样,安全隐患要么当时不那么明确,要么后来才得到解决。

因此,正如其他答案中提到的,不要在命令行上使用密码。

您还可以(并且可能应该)限制任一安装环提供的信息procfs with the,或使用网络安全硬化内核。请注意,这可能会破坏一些东西(可能是 cgroup 和任何依赖它们的东西 - 例如 systemd),至少在撰写本文时是这样。

相关内容