Dynamische Motd-Nachricht von Remote-Quelle?

Dynamische Motd-Nachricht von Remote-Quelle?

motdermöglicht die Anzeige von Willkommens-Anmeldenachrichten für Linux-Benutzer.

Ist es möglich, motd so zu konfigurieren, dass einige Remote-URLs abgerufen werden?

Beispielszenario:

  • Informieren Sie die Benutzer über das Ende des Lebenszyklus von Python 2, hören Sie jedoch damit auf, wenn die Frist abgelaufen ist.

  • Unterdrückt diese Meldung, wenn kein Python2 installiert ist.

Beispiele für komplexere Szenarien:

  • Übergeben Sie ein Argument, bewerten Sie es dynamisch und informieren Sie den Benutzer, dass dieses Betriebssystem nicht mehr unterstützt wird.

Antwort1

Für systemweite Nachrichten könnte das motd beim Booten generiert werden – so wie es Ubuntu und Debian derzeit machen. Sie haben ein update-motdSystem, das die Textdatei aus einem Standardheader, Tipps, Ankündigungen, Systemaktualisierungsnachrichten usw. zusammenstellt.

In den meisten Fällen wird das motd durch ein PAM-Modul namens angezeigt pam_motd. (Das Debian/Ubuntu-System funktioniert tatsächlich, indem es das Modul zweimal aufruft – zuerst für das statische /etc/motd, dann für das automatisch generierte /run/motd.)

Wenn Sie also dynamischeren Text benötigen (z. B. basierend auf dem angemeldeten Benutzernamen), können Sie Ihre eigene Version dieses Moduls erstellen und es alles tun lassen, was Sie möchten.

Jedoch,nichtLassen Sie es die Dateien direkt aus dem Internet abrufen, da dies die Anmeldungen nur verlangsamt und Ihre Benutzer jedes Mal nervt. Richten Sie stattdessen einen Cronjob ein, der die Datei herunterlädt, und rufen Sie dann einfach das vorhandene pam_motd-Modul mit dem Dateinamen als Parameter auf:

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

Antwort2

/etc/motdist nur eine statische Textdatei.

Was Sie sagen, klingt eher nach etwas, das mit einem Anmeldeskript umgesetzt werden könnte.

Neuere Linux-Distributionen verfügen in der Regel über ein /etc/profile.dVerzeichnis, in das Sie einfach Skriptfragmente einfügen können, die bei der Anmeldung eines Benutzers ausgeführt werden. Um alle gängigen Shells abzudecken, sollten Sie zwei Varianten solcher Skriptfragmente erstellen: eine, die mit POSIX kompatibel ist /bin/shund ein .shSuffix enthält, und eine andere, die csheine Syntax mit einem .cshSuffix verwendet.

Bei älteren Distributionen können Sie die gewünschte Funktionalität zu /etc/profileund hinzufügen /etc/csh.login(für alle POSIX sh-kompatiblen Shells bzw. für csh/ tcsh-Shells).

Sie könnten sicherlich ein Skript erstellen, das eine bestimmte Remote-URL kontaktiert und einige relevante Systeminformationen hinzufügt, wie z. B. benutzerdefinierte HTTP-Header, die das Remote-Ende analysieren und mit einem angepassten Nachrichtentext antworten könnte.

Wenn die von der Remote-URL zurückgegebene Antwort jedoch nicht nur einfacher Text ist, sondern potenziell ausführbare Inhalte enthält, wird dieser Mechanismus sicherheitsrelevant: Wenn der Server, der die Remote-URL enthält (oder das Netzwerk oder das Anmeldeskript selbst), nicht sicher ist, könnte dies für einen Eindringling eine Möglichkeit sein, Zugriff auf Ihr System zu erhalten. Sie müssten bei Ihrer Implementierung viel vorsichtiger sein, um dies zu verhindern.

Sie sollten auch darüber nachdenken, was passiert, wenn sich die Remote-URL als nicht erreichbar erweist oder die Netzwerkverbindung unterbrochen ist: In den meisten Fehlersituationen möchten Sie, dass das Nachrichtensystem eine Zeitüberschreitung meldet und die Anmeldung fortgesetzt wird.

verwandte Informationen