我不想让我的用户看到彼此的 IP/登录信息,所以我想在他们使用“who”和“w”命令时更改输出以隐藏该信息 - 有没有办法做到这一点?
答案1
不是全局的,不是。但是,您可以限制访问/usr/bin/w
并将备用文件作为/usr/local/bin/w
。这可能是一个简单的脚本,它使用参数和过滤器参数以及语句调用原始工具setuid
。
像:
w -hus | tr -s ' ' | cut -d' ' -f5-
ETC。
答案2
w
所使用和who
保存的信息/var/run/utmp
或者/run/utmp
(有时/etc/utmp
在旧系统中)。您需要限制对该文件的读取权限。
(不要费心删除命令;如果保留utmp
可读的命令,任何人都可以用两分钟的脚本获取地址。)
但是,这不会隐藏其他用户的登录名。为此,您必须阻止普通用户查看所有进程 - 这只能通过以下内核补丁来实现:格塞克.(如果你要向随机的、不受信任的人授予访问权限,格塞克无论如何这可能是一个好主意。)
其次,如果您要保护隐私,则必须阻止用户列出所有系统帐户;这在传统 Unix 中无法实现/etc/passwd
,因为限制对它的读取权限会破坏许多功能。相反,您需要一个单独的用户目录,例如ssd 的、LDAP、也许还有一些 SQL 数据库。
答案3
默认情况下,FROM
w 中的字段仅显示给 root,而不显示给“普通”用户。假设您的用户使用的是普通帐户,他们不应该看到您所看到的详细信息。如果您的编译版本确实这样做,请使用 -f 开关来隐藏信息:
w -f
您可以在用户配置文件 (~/.bash_profile) 中将其添加为 w 的别名:
alias w='w -f'
答案4
您可以考虑为用户提供一个受限的 shell,并为他们设置一个特殊的 bin 目录,其中有包装或特殊版本的“w”和“who”。请参阅 bash 手册页中的“受限 shell”部分。