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

ich*_*len 6 command-line ubuntu write

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

me@host>>wall
message to everyone


<ctrl> + d
Run Code Online (Sandbox Code Playgroud)

当我完成消息后,我使用(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
Run Code Online (Sandbox Code Playgroud)

Tho*_*key 3

Debian(和 Ubuntu)上的wall和 都使用组的 setgid ( set-group-id ) 权限来允许这些程序写入其他用户的终端。writetty

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

ls -lL /usr/bin/write /usr/bin/wall
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)

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

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

进一步阅读: