Динамическое сообщение motd из удаленного источника?

Динамическое сообщение motd из удаленного источника?

моттдпозволяет отображать приветственные сообщения при входе в систему для пользователей Linux.

Можно ли настроить motd таким образом, чтобы он извлекал какой-то удаленный URL?

Пример сценария:

  • информировать пользователей о завершении поддержки Python 2, но прекратить делать это, поскольку срок истек.

  • подавить это сообщение, если Python2 не установлен

Примеры более сложных сценариев:

  • передать аргумент, оценить его динамически и сообщить пользователю, что эта ОС больше не поддерживается.

решение1

Для общесистемных сообщений motd может быть сгенерирован во время загрузки – как это сейчас делают Ubuntu и Debian. У них есть система, update-motdкоторая собирает текстовый файл из стандартного заголовка, советов, объявлений, сообщений об обновлении системы и т. д.

В большинстве случаев motd отображается модулем PAM с именем pam_motd. (Система Debian/Ubuntu на самом деле работает, вызывая модуль дважды — сначала для статического /etc/motd, затем для автоматически сгенерированного /run/motd.)

Поэтому, если вам нужен более динамичный текст (например, на основе имени вошедшего в систему пользователя), вы можете создать собственную версию этого модуля и заставить его делать все, что захотите.

Однако,незаставьте его получать файлы из сети напрямую, так как это только замедлит входы и будет раздражать ваших пользователей каждый раз. Вместо этого настройте cronjob, который загружает файл, а затем просто вызовите существующий модуль pam_motd с именем файла в качестве параметра:

session optional pam_motd.so motd=/tmp/downloaded_message.txt

решение2

/etc/motdэто просто статический текстовый файл.

То, о чем вы говорите, больше похоже на то, что можно реализовать с помощью скрипта входа.

В новых дистрибутивах Linux, как правило, есть каталог /etc/profile.d, в который можно просто поместить фрагменты скриптов, которые будут выполняться при входе пользователя в систему. Чтобы охватить все распространенные оболочки, следует создать два варианта таких фрагментов скриптов: один, совместимый с POSIX /bin/shс .shсуффиксом, и другой, использующий cshсинтаксис с .cshсуффиксом.

Для более старых дистрибутивов вы можете добавить желаемую функциональность в /etc/profileи /etc/csh.login(для всех POSIX sh-совместимых оболочек и для csh/ tcsh-оболочек соответственно).

Конечно, вы можете создать скрипт, который связывается с определенным удаленным URL-адресом и добавляет некоторую соответствующую системную информацию, например, пользовательские заголовки HTTP, которые удаленная сторона может проанализировать и ответить с помощью адаптированного текста сообщения.

Однако, если ответ, возвращаемый с удаленного URL, не является просто текстом, а содержит потенциально исполняемый контент, этот механизм становится уязвимым для безопасности: если сервер, содержащий удаленный URL (или сеть, или сам скрипт входа), не защищен, это может стать способом для злоумышленника получить доступ к вашей системе. Вам придется быть гораздо более осторожным в своей реализации, чтобы предотвратить это.

Вам также следует подумать о том, что произойдет, если удаленный URL-адрес окажется недоступным или сетевое соединение выйдет из строя: вам нужно, чтобы система сообщений отключалась по истечении времени ожидания и продолжала вход в систему в большинстве ситуаций с ошибками.

Связанный контент