¿Mensaje dinámico motd desde una fuente remota?

¿Mensaje dinámico motd desde una fuente remota?

motdpermite mostrar mensajes de inicio de sesión de bienvenida para los usuarios de Linux.

¿Es posible configurar motd para recuperar alguna URL remota?

Escenario de ejemplo:

  • informar a los usuarios sobre el final de vida de Python 2, pero dejar de hacerlo cuando se pase la fecha límite.

  • suprima este mensaje si no hay Python2 instalado

Ejemplos de escenarios más complejos:

  • pase un argumento, evalúelo dinámicamente e informe al usuario que este sistema operativo ya no es compatible.

Respuesta1

Para mensajes de todo el sistema, el motd podría generarse en el momento del arranque, que es como lo hacen actualmente Ubuntu y Debian. Tienen un update-motdsistema que ensambla el archivo de texto a partir de un encabezado estándar, sugerencias, anuncios, mensajes de actualización del sistema, etc.

En la mayoría de los casos, el motd se muestra mediante un módulo PAM denominado pam_motd. (El sistema Debian/Ubuntu en realidad funciona llamando al módulo dos veces: primero para el /etc/motd estático y luego para el /run/motd generado automáticamente).

Entonces, si necesita texto más dinámico (por ejemplo, basado en el nombre de usuario que inició sesión), puede crear su propia versión de este módulo y hacer que haga lo que quiera.

Sin embargo,nohaga que recupere archivos de la web directamente, ya que eso solo ralentizará los inicios de sesión y molestará a sus usuarios en todo momento. En su lugar, configure un cronjob que descargue el archivo, luego simplemente llame al módulo pam_motd existente con el nombre del archivo como parámetro:

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

Respuesta2

/etc/motdes solo un archivo de texto estático.

De lo que estás hablando suena más como algo que podría implementarse con un script de inicio de sesión.

Las distribuciones de Linux más nuevas tienden a tener un /etc/profile.ddirectorio, en el que simplemente se pueden colocar fragmentos de script para que se ejecuten cuando el usuario inicia sesión. Para cubrir todos los shells comunes, debe producir dos variantes de dichos fragmentos de script: uno compatible con POSIX /bin/shcon un .shsufijo y otro que usa cshsintaxis con un .cshsufijo.

Para distribuciones más antiguas, puede agregar la funcionalidad deseada a /etc/profiley /etc/csh.login(para todos shlos shells compatibles con POSIX y para csh/ tcshshells, respectivamente).

Ciertamente, podría crear una secuencia de comandos que contacte una URL remota específica y agregue información relevante del sistema como, por ejemplo, encabezados HTTP personalizados, que el extremo remoto podría analizar y responder con un texto de mensaje personalizado.

Sin embargo, si la respuesta devuelta por la URL remota no es solo texto plano sino que contiene contenido potencialmente ejecutable, este mecanismo se vuelve sensible a la seguridad: si el servidor que contiene la URL remota (o la red, o el propio script de inicio de sesión) no es seguro, podría convertirse en una forma para que un intruso obtenga acceso a su sistema. Tendría que ser mucho más cuidadoso en su implementación para evitarlo.

También debe pensar en lo que sucede si resulta inaccesible la URL remota o si el enlace de red no funciona: querrá que el sistema de mensajes expire y continúe con el inicio de sesión en la mayoría de las situaciones de error.

información relacionada