如何改变“who”和“w”命令的输出?

如何改变“who”和“w”命令的输出?

我不想让我的用户看到彼此的 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

默认情况下,FROMw 中的字段仅显示给 root,而不显示给“普通”用户。假设您的用户使用的是普通帐户,他们不应该看到您所看到的详细信息。如果您的编译版本确实这样做,请使用 -f 开关来隐藏信息:

w -f

您可以在用户配置文件 (~/.bash_profile) 中将其添加为 w 的别名:

alias w='w -f'

答案4

您可以考虑为用户提供一个受限的 shell,并为他们设置一个特殊的 bin 目录,其中有包装或特殊版本的“w”和“who”。请参阅 bash 手册页中的“受限 shell”部分。

相关内容