Назад | Перейти на главную страницу

Не могу писать другим пользователям: «У вас отключено разрешение на запись»

По какой-то причине я не могу писать другим пользователям в моей системе.

[root@hostname ~]# write
write: you have write permission turned off.
[root@hostname ~]# mesg y
[root@hostname ~]# mesg
is y
[root@hostname ~]# write
write: you have write permission turned off.

Что еще нужно включить / исправить, чтобы это работало?

Тестирование strace write и strace mesg показывает небольшую разницу в том, как они идентифицируют ваш tty.

write сначала сделаю readlink("/proc/self/fd/0", ...) найти имя tty а затем сделать stat вызовите получившийся путь.

mesg с другой стороны позвонит fstat(1, ...) который пропускает шаг использования readlink и не полагается на /proc файловая система.

Обратите внимание, что они также смотрят на разные файловые дескрипторы. 0 против 1. Обычно интерактивная оболочка имеет файловые дескрипторы. 0, 1, и 2 все ссылаются на один и тот же tty. Если вы каким-то образом запустили свою оболочку с 0 и 1 ссылка на что-то другое, например, если вы перенаправили один из них, это могло бы объяснить несоответствие между выводом из mesg и write.

Если оба файловых дескриптора ссылаются на один и тот же tty, другой возможной причиной несоответствия может быть то, что ваш /proc mount работает не так, как ожидалось, или inode символьного устройства для вашего tty был заменен.

При запуске от имени root с mesg отключен (возвращается n), Я получаю ту же ошибку, что и вы. Запуск команды mesg y позволяет мне писать. Работает как root Я могу писать пользователям, у которых есть mesg отключен, что я не могу сделать без полномочий root.

Есть несколько утилит, которые обеспечивают write функциональность. Все они должны иметь возможность писать на терминалы. Однако, поскольку вы работаете как root разрешения не должны быть проблемой.