为什么有人不应该在命令行中使用密码?


33

人们为什么害怕在命令行中写密码?

历史记录文件位于中~/.history,因此它仅对执行命令(和root)的用户可用。


2
您可以避免在历史记录文件中记录一些命令。请参阅避免在历史上保持指挥权中
Luc M

5
k!即使您使用定义了密码export mypass=secret并使用a_command --password=$mypass,您也会secretps表中看到。
吕克M

Answers:


51

命令行不仅在历史记录中可用。例如,在文件系统的输出ps -ocmd或通过/proc文件系统的输出中,它们也可用。(/proc/<pid>/cmdlineps读取它们的位置。

而且,用户的主目录通常是世界可读或组可读的。您可以将历史记录文件设置为仅用户可读,但在删除和重新创建后可能无法保存。


17

一直以来,命令行上的密码都是一个坏主意。除了其他答案中讨论的方法外:

  • / proc
  • 流程清单(ps
  • 用户的历史记录文件

用户命令也可以显示在以下位置:

  • 审核日志
  • / var / log / *

此外,当用户在系统之间登录时,用户的命令也会显示出来,因此通常这是一种不好的做法,应始终避免。


3
/ var / log参考为+1-请注意,重要的系统日志通常可以发送到其他地方,而不一定要保留在同一系统上。因此,您的密码也可能无意间以明文形式在网络上传输。
马克·格洛索普

11

问题是命令运行时参数的可见性(在大多数情况下,甚至对于超级用户来说,其他用户也可以看到)。查看输出

ps -eo pid,user,args
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.