为什么我无法使用 wall 命令发送消息?

为什么我无法使用 wall 命令发送消息?

我正在尝试使用 wall 或 write 发送消息。为了测试这一点,我打开了两个 gnome 终端窗口。然后在一个窗口中输入以下内容:

me@host>>wall
message to everyone


<ctrl> + d

当我完成消息后,我使用(ctrl-d)发送了一个中断信号EOF 字符。终端没有发送消息,而是向我发出蜂鸣声,就好像我输入了无效的输入一样。我在 write 中得到了类似的行为。有人可以帮助我解决问题吗?

编辑:这是权限信息:

me@host>>ls -l $(type -p wall)
-rwxr-sr-x 1 root tty 27368 May 26 18:31 /usr/bin/wall

答案1

wallwrite在 Debian(和 Ubuntu)上都使用 setgid (设置组 ID) 的特权tty组以允许这些程序写入其他用户的终端。

然而,共享计算机系统的管理员通常会禁用此功能。您可以通过执行以下操作来查看权限

ls -lL /usr/bin/write /usr/bin/wall

在正常的系统上会看到这个(日期并不重要):

$ ls -lL /usr/bin/write /usr/bin/wall
-rwxr-sr-x 1 root tty 23056 Dec 11  2012 /usr/bin/wall
-rwxr-sr-x 1 root tty 14624 Jun 11  2012 /usr/bin/write

s在第一个字段中-rwxr-sr-x是setgid位,第四个字段是组tty。您需要两者(或等效的组)才能使该功能发挥作用。

除了权限之外,使用 gnome-terminal 还会遇到另一个方面:wall并将write消息发送到登录用户。他们从 utmp 数据文件中获取该信息,而 gnome-terminal 不支持该文件。

进一步阅读:

相关内容