我正在读的手册页unzip
,并遇到了以下情况
-P password
use password to decrypt encrypted zipfile entries (if any). THIS
IS INSECURE! Many multi-user operating systems provide ways for
any user to see the current command line of any other user; even on
stand-alone systems there is always the threat of over-the-shoulder
peeking.
虽然不以明文形式输入密码(并让它们最终进入 shell 历史记录)的安全预防措施当然是正确的,但我很难相信有操作系统任何用户可以看到命令行任何其他用户。有人可以给我举个例子吗(包括遗留系统)?
我相信ps
、、top
等是 UNIX 的答案。
答案1
我的猜测是在 Unix/Linux 系统上使用lsof
可能会暴露用户交互。其逻辑是lsof
显示系统上打开的文件列表。也许如果有人正在解压一个巨大的文件,那么它仍然会打开很长时间,足以让某人注意到并窥视活动。哎呀,编写一个 Bash 脚本并通过 cron 作业每隔一分钟左右运行一次以收集打开文件活动的持续日志是相当简单的。
但在我看来,这仍然是错误的。我的意思是,lsof
这种方式确实有可能暴露内联 MySQL 密码之类的东西。但我不能 100% 确定没有 /root 权限的普通用户是否sudo
能够看到lsof
其他用户的活动。
答案2
Unix 允许使用“ps”。此外,Unix 通常有一个“w”命令,可以显示用户正在运行的内容。“w”通常会根据终端大小截断命令,但这可以被覆盖。(一种简单的方法可能是使用更宽的终端。)
这可能还会影响多个类 Unix 系统(Linux、BSD 系统、Solaris 等)。
我相信 Microsoft Windows 也会在任务管理器中显示这一点。好吧,也许这在 Windows Vista 和用户帐户控制中不太常见,因为可能需要用户帐户控制。但在 WinXP/Server2003 及更早的时代,这种限制可能更宽松。NET USE 开始支持星号,然后提示用户输入密码是有原因的。使用:
WMIC /NODE:ComputerName PROCESS LIST
用户甚至可能不需要在同一台计算机上就能看到正在运行的命令。我猜想 TaskList、TList 和 PSList(均由 Microsoft 免费分发)中的多个可能也支持查看正在发生的事情的功能,无论用户正在运行什么。至少,具有管理员权限的用户是这样的,这在 Vista 之前的操作系统上更为常见。(在 Win9x 中,一般标准是所有用户都具有管理员般的能力。)请记住,您引用的文档 Info-Zip 比 WinXP 要老得多。我认为它比 Win95 还要老。
对于较旧的多用户系统,保密性并不是一个大问题。能够看到计算机正在做什么,包括其他用户正在运行哪些命令,可能被视为一项积极功能,而不是安全性的负面漏洞。也许更适用的问题是:是否有任何主要的多用户操作系统不支持用户能够看到计算机上正在运行的命令?
更安全的方法是永远不要在命令行上输入敏感密码。另一种选择是将密码放在文件中,然后在命令行上指定该文件。例如:
type pwfile | command
至少这样,基于文件系统实现的权限可能会提供一些保护。
答案3
zip -PThat_Password ...
有些(我相信不是全部)Linux 方式可以查看另一个用户的命令,而无需root 权限:
cat /proc/24695/cmdline
如果 PID 是 24695...zip-P那个密码
笔记:虽然没有空格,但密码还是可以被猜出来的
grep -H -e "zip" /proc/[0-9]*/cmdline
二进制文件 /proc/24695/cmdline 匹配
如果它有效,
cat
那么其他一切都有效文本基于 ...pgrep -a zip
选项 -a 列出完整的命令行以及进程 ID。(在旧版本 [例如 <2008] 中并不总是可用pgrep
)24695 邮编-P那个密码
当然还有操作提及
ps -aux | grep zip
That_User24695 1.9 0.0 15012 1192 分/40 T 12:37 0:45 压缩 -P那个密码
top -c -b -n 1 | grep zip
答案是这样的24695That_User 20 0 15012 1192 820 T 0.0 0.0 0:45.12 邮编 -P那个密码
答案4
ps ax
在 Unix/Linux 和类似系统上。