Intereting Posts
Каковы программы / команды, вызываемые магическим ключом SysRq? Создание новых пользователей через терминал не назначает правильные разрешения? Программа не работает при вызове через символическую ссылку Проверка md5sum (без файла) Насколько универсален переключатель -L (разыменованная символьная ссылка) команды ls? Как посмотреть, какие порты открыты на определенном брандмауэре зеркалирование панели между двумя окнами Включает ли vi в конце файла новую строку (LF)? Совпадение шаблонов Исключить повторяющиеся символы Как настроить zsh-запрос, чтобы его длина была пропорциональна ширине терминала Ошибка анализа на блоке таймера systemd. Неверная документация? Какие существуют опции для настройки кэширования файловой системы Linux? Измените SSH-баннер, который захватывает netcat Процесс sshd не работает Как узнать тип шифрования из почтового сообщения?

/ etc / motd не отображается при именованном канале?

Запуск Gentoo 3.4.0

Недавно услышав о файле / etc / motd, я попытался отобразить случайные сумасшедшие состояния. Я написал некоторый случайный сценарий bash, чтобы действовать как демон, подавая / etc / motd как именованный канал, как видно на некоторых форумах.

Я не думаю, что есть какие-либо проблемы с скриптом, потому что cat'ing pipe работает отлично, но MOTD не будет отображаться при входе в систему (с использованием обычного файла)!

fira@nyan ~ % cat /etc/motd _______________________________________ / We didn't put in ^^ because then we'd \ | have to keep telling people what it | | means, and then we'd have to keep | | telling them why it doesn't short | | circuit. :-/ | | | | -- Larry Wall in | \ <199707300650.XAA05515@wall.org> / --------------------------------------- \ \ .--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/ 

Мне что-то не хватает?

Не используя ничего, как .hushlogin или whatnot, попробовав использовать несколько оболочек, труба читается a + r.

Вы ничего не пропустили. Я выкопал источник модуля pam_motd чтобы понять это.

Фокус в том, что pam_motd выполняет следующие действия с /etc/motd :

  1. Проверьте размер файла.
  2. Выделите буфер такого размера.
  3. Прочитайте весь файл в буфере.
  4. Вывод буфера через любой метод вывода. (PAM является модульным, в конце концов, не может считать, что это терминал.)

Поскольку у канала нет размера файла, это не выполняется на шаге 1.

EDIT : Почему PAM обеспокоен размером в первую очередь? Я предполагаю, что это предотвращает опровержения служения, преднамеренные или непреднамеренные. Когда PAM проверяет размер файла, он также отказывается выводить motd, если файл больше 64 килобайт. Я предполагаю, что кто бы ни пытался зайти в систему, было бы очень грустно, если бы кто-то смог подключить файл фильма DVD в / etc / motd, например, – не говоря уже о том, сколько памяти может потребоваться.

Эта ссылка проведет вас через все важные шаги