哪个多用户操作系统允许一个用户查看其他用户的当前命令行?


13

我正在阅读的联机帮助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.

虽然不采用明文形式输入密码(并使其最终出现在外壳程序历史记录中)的安全预防措施当然是正确的,但我发现很难相信有些操作系统可以让其他用户看到其他任何命令行用户。有人可以给我一个例子(包括旧系统)吗?


我相信pstop等等是UNIX的答案。


键盘驱动程序)
STTR,2015年

@STTR我对硬件知之甚少,所以我不确定键盘驱动程序是否为所有用户提供平等和完全的访问权限,但是那肯定不是操作系统,并且没有tty连接。
2015年

1
请注意,如果要防止命令进入bash历史记录,请在命令前加一个空格。
joshreesjones

Answers:


4

我的猜测是在Unix / Linux系统上使用lsof可能会暴露用户交互。逻辑是lsof显示系统上打开文件的列表。也许如果要解压缩一个巨大的文件,则该文件仍会打开足够长的时间,以便有人注意到然后偷看活动。哎呀,编写一个Bash脚本并通过cron作业每分钟左右运行一次,以收集打开文件活动的持续日志,这是相当琐碎的。

但这对我仍然是错误的。我的意思lsof是可能会以这种方式公开内联MySQL密码等内容。但是对于没有sudo/ root权限的普通用户是否能够看到lsof其他用户的活动,我不是100%的。


3
呃,你绝对是对的。我认为可以lsof显示其他用户的打开文件,并且您不需要提升的特权(在我机构的服务器上进行了测试)。同样,pstop显示其他用户的命令行。
4ae1e1

1
我进一步检查的联机帮助页pstoplsof发现没有提到的特权。还有一个问题:如何使其他用户看不到进程?。因此,我想命令行的确对UNIX系统上的每个人都是可见的。嗯,真是个大惊喜。
4ae1e1

我发现了ttysnoopconspy但是我不确定它们是否需要root特权。
Vinayak,2015年

传递给哪个选项lsof可以查看命令行参数?例如,lsof -a +c0 /dev/null我能够看到长命令名称,但看不到传递给命令的参数。我错过了什么?:-)
Hastur

4

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

至少以这种方式,基于文件系统实现的权限可能会提供一些保护。


1
为了查看Windows上另一个用户的进程,您必须是管理员。
Moshe Katz

4

Linux的某些(并且我认为不是全部)方法可以查看zip -PThat_Password ...没有root特权的另一个用户的命令:

  • cat /proc/24695/cmdline 如果PID是24695 ...

    zip-P That_Password

    注意:它没有空格,但是可以猜测密码

  • grep -H -e "zip" /proc/[0-9]*/cmdline

    二进制文件/ proc / 24695 / cmdline匹配

    很好,如果它可以工作,cat那么其他所有基于文本的工作都可以...

  • pgrep -a zip选项-a列出完整的命令行以及进程ID。(并非总是适用于的旧版本[例如<2008] pgrep

    24695 zip -P That_Password

当然提到了操作

  • ps -aux | grep zip

    That_User 24695 1.9 0.0 15012 1192 pts / 40 T 12:37 0:45 zip -P That_Password

  • top -c -b -n 1 | grep zip 用类似的答案

    24695 That_User 20 0 15012 1192 820 T 0.0 0.0 0.0:45.12 zip -P That_Password


@JakeGould至少在我的系统上,该命令像cat /proc/24695/cmdline没有空格的给定输出...
Hastur 2015年

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.