在我的学校,我们共享一台服务器来运行程序。
使用top
我们可以看到服务器的情况,如果按 键c,我们甚至可以看到命令详细信息,不知何故包括我的实验室数据信息。
那么如何才能让其他人在使用后也无法看到我的跑步信息c呢?是否可以只显示进程的名称,java或awk,但隐藏详细信息。
答案1
隐藏您的用户信息
因此,top
其默认行为是在框中显示所有进程,并且您不能真正拒绝其他用户查看这些详细信息。此 U&L 问答中讨论了执行此操作的方法,标题为:
第三个链接显示了一个有趣的方法,它是内核补丁添加了一个在 Linux 内核 3.3+ 中hidepid
调用的选项:mount
$ mount /proc -o remount,hidepid=2
隐藏PID=0(默认)意味着旧行为 - 任何人都可以读取所有世界可读的 /proc/PID/* 文件。
hidepid=1意味着用户不能访问任何 /proc// 目录,只能访问他们自己的目录。 cmdline、sched*、status 等敏感文件现在受到保护,免受其他用户的攻击。由于在 proc_pid_permission() 中完成权限检查并且文件的权限保持不变,因此需要特定文件模式的程序不会混淆。
hidepid=2意味着 hidepid=1 加上所有 /proc/PID/ 对其他用户来说是不可见的。这并不意味着它隐藏进程是否存在(可以通过其他方式获知,例如通过kill -0 $PID),但它隐藏进程的euid和egid。它使入侵者收集有关正在运行的进程的信息的任务变得复杂,这些信息包括某些守护程序是否以提升的权限运行、其他用户是否运行某些敏感程序、其他用户是否运行任何程序等。
组号=XXX定义一个能够收集所有进程信息的组(如 hidepid=0 模式)。应该使用该组,而不是将非 root 用户放入 sudoers 文件或其他文件中。但是,不应将不应该监视整个系统中的任务的不受信任的用户(例如守护程序等)添加到该组中。
笔记:这并不赋予您任何控制可见性的能力,仅限制用户在 下查看其详细信息
/proc
。
隐藏其他用户的信息
如果您想在使用时隐藏其他用户,top
可以这样做:
$ top -u '!root'
...
top - 00:04:16 up 2 days, 1:51, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 80 total, 1 running, 79 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1016156 total, 204212 free, 80104 used, 731840 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 755224 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
597 dbus 20 0 26668 1924 1364 S 0.0 0.2 0:08.55 dbus-daemon
633 polkitd 20 0 536264 10216 4796 S 0.0 1.0 0:00.35 polkitd
634 libstor+ 20 0 8576 816 668 S 0.0 0.1 0:00.49 lsmd
1305 postfix 20 0 91956 4292 3232 S 0.0 0.4 0:00.09 qmgr
4199 vagrant 20 0 152392 3020 1424 S 0.0 0.3 0:01.53 sshd
4200 vagrant 20 0 116196 2928 1796 S 0.0 0.3 0:00.05 bash
5622 postfix 20 0 91776 4044 3028 S 0.0 0.4 0:00.00 pickup
5672 user1 20 0 116096 2864 1808 S 0.0 0.3 0:00.04 bash
5758 user1 20 0 157624 2136 1544 R 0.0 0.2 0:00.00 top
符号,'!root'
意思是不是显示 root 用户。