Я пытаюсь отправлять сообщения с помощью wall или write. Чтобы проверить это, я открыл два окна gnome-terminal. Затем в одном окне ввел следующее:
me@host>>wall
message to everyone
<ctrl> + d
Когда я закончил сообщение, я послал сигнал прерывания EOF символ с помощью (ctrl-d). Вместо отправки сообщения терминал издал звуковой сигнал, как будто я ввел недопустимые данные. У меня такое же поведение при записи. Может кто-нибудь помочь мне с тем, что не так?
Редактировать: Вот информация о разрешениях:
me@host>>ls -l $(type -p wall)
-rwxr-sr-x 1 root tty 27368 May 26 18:31 /usr/bin/wall
решение1
И wall
в write
Debian (и в Ubuntu) используется setgid (установить-идентификатор-группы) привилегия для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
Thes
в первом поле-rwxr-sr-x
это бит setgid, а четвертое поле — это группаtty
. Для работы функции вам понадобятся оба варианта (или эквивалентная группа).
Помимо разрешений, есть еще один аспект, с которым вы столкнетесь при использовании gnome-terminal: wall
и write
отправка их сообщенийзарегистрированные пользователи. Они получают эту информацию из файла данных utmp, который gnome-terminal не поддерживает.
Дальнейшее чтение:
- Широковещательные сообщения не отображаются в gnome-terminal, но отображаются в xterm
- Является ли терминал gnome оболочкой без входа в систему?
- исходный код для
write
- исходный код для
wall
- Ошибка 71368 — опция gnome-terminal «обновить utmp/wtmp» не работает, если не используется gdm
- Ошибка 747046 - очистка pty.c