w
显示用户列表和每个用户上次运行的程序。有什么方法可以隐藏上次运行的程序?
答案1
注意:w
仅显示用户当前运行的命令,而不是最后运行的命令。
破解此问题的一种方法是使用 perl:
perl -e '$0 = "fake command"; system("....");'
如果你在另一个终端上检查输出w
,它会说你正在运行“假命令”。无论你实际上想要运行的可以放在system()
调用里面。
这是有效的,因为$0
它引用了 perl 中的当前程序名称,并且您可以将其更改为您喜欢的任何名称。
还请注意,这是完成您尝试做的事情的一种绝对不正当的方式。
另一种方法是将您想要的任何内容放入 shell 脚本中,然后运行它。但这并不那么有趣。
答案2
有哪些方法可以隐藏最后运行的程序?
您必须使进程属性不可读。程序名称和/或可执行文件名称(无论如何)位于 /proc/N/{cmdline,comm,environ,exe,maps,numa_maps,smaps}... 中,并且除了卸载 /proc 之外,还会导致各种程序无法按预期运行,以某种方式执行此操作的先决条件是更改 linux 内核源代码。
即使如此,auditd(8) 或 selinux 等系统也有办法记录您正在执行的操作。如果您不喜欢被监视,请不要使用特定系统。
答案3
命令行可见的更大安全问题是:
sqlplus uername/password@oracleinstance
用户和批处理应用程序访问数据库和/或嵌入密码的地方。如果您无法更改此行为,则必须 chroot 具有该系统命令行访问权限的用户。chroot 允许您有选择地禁止或允许普通用户访问 top、ps 等命令以及使用 /proc 的其他命令。这是解决此类问题的标准方法。