如何确保在命令行中输入的密码根本不存储在 Linux 服务器上?

如何确保在命令行中输入的密码根本不存储在 Linux 服务器上?

我有一个在服务器上运行 p7zip 的网页 PHP 脚本:

这将传递用户提供的密码来加密其上传的文件。

其次,密码通过 PHP 通过电子邮件发送给收件人。

密码可能存储在哪些位置?

我执行了 grep -r "Passw0rd" /var/log/*,但没有找到任何内容。

Bash 历史记录中也没有任何内容。

Dist 是 opensuse。

非常感谢!

答案1

当它在命令行上传递时,它将是短暂地存储在/proc/文件系统中。任何拥有本地帐户的人都可以获取正在运行的进程及其命令行参数的列表。

 cat /proc/[pid]/cmdline

它会返回一个字符串。例如:

 /usr/bin/Xorg:0-backgroundnone-logverbose7-auth/var/run/gdm/auth-for-gdm-yrx0zQ/database-nolistentcpvt7

翻译过来就是:

 /usr/bin/Xorg:0 -background none -logverbose 7 -auth /var/run/gdm/auth-for-gdm-yrx0zQ/database -nolistentcp vt7

伪文件cmdline是所有人可读的,但它仅在进程实际运行时才存在。top按下c键后即可看到它们。

有些程序确实会操纵该字符串,因此它不能代表实际运行的内容,但我不知道 php 是否允许这样做。

相关内容