Auf welche Weise kann eine Nachricht einer Bash-Shell angezeigt werden, nachdem sich ein Benutzer angemeldet hat?

13

Ich habe ein CentOS 5.7 VPS mit bash als Shell, das unmittelbar nach der Anmeldung über SSH eine markenbezogene Begrüßung anzeigt. Ich habe versucht, es zu ändern, kann aber an den üblichen Stellen scheinbar nicht feststellen, wo es sich befindet. Bisher habe ich in die motdDatei geschaut und sshd_confignach Einstellungen für Bannerdateien gesucht . Eine Bannerdatei ist nicht festgelegt.

Wo kann ich sonst nachsehen, wo sich die Login-Nachricht befinden könnte?

Wesley
quelle
1
Sie könnten eine rekursive versuchen grepin /etceinigen Teilmengen der Nachricht.
Kevin
@ Kevin Warten Sie, folgen Sie mir auf Twitter? Ich habe nur darüber nachgedacht, dass ich grep -r verwende, um etwas zu finden. Außer ich bin doof und habe beschlossen um / =)
Wesley
Ich habe auch angefangen /, dauert ewig auf einer 1-TB-Festplatte, lassen Sie mich sagen ... Aber ich war noch nie auf Twitter :)
Kevin
@WesleyDavid kannst du einen Screenshot posten?
Karlson

Antworten:

21

Herkömmliche Unix-Systeme werden angezeigt, /etc/motdnachdem der Benutzer erfolgreich authentifiziert wurde und bevor die Shell des Benutzers aufgerufen wird. Bei modernen Systemen pam_motdübernimmt dies das PAM-Modul, das in /etc/pam.confoder /etc/pam.d/*zur Anzeige einer anderen Datei konfiguriert werden kann.

Der SSH-Server selbst kann so konfiguriert werden, dass er druckt, /etc/motdwenn die PrintMotdOption in nicht deaktiviert ist /etc/sshd_config. Es kann auch die Zeit der vorherigen Anmeldung drucken, wenn PrintLastLognicht deaktiviert ist.

Eine andere traditionelle Nachricht könnte Ihnen sagen, ob das You have new mailoder You have mail. Bei Systemen mit PAM übernimmt dies das pam_mailModul. Einige Shells drucken möglicherweise eine Nachricht über verfügbare E-Mails.

Nachdem die Shell des Benutzers gestartet wurde, werden in den Startdateien des Benutzers möglicherweise zusätzliche Nachrichten gedruckt. Für eine interaktive Anmeldung, wenn der Login - Shell des Benutzers eines Bourne-Shell - Stil ist, schaut in /etc/profile, ~/.profileplus ~/.bash_profileund ~/.bash_loginfür bash. Für eine interaktive Anmeldung zu zsh, Blick in /etc/zprofile, /etc/zlogin, /etc/zshrc, ~/.zprofile, ~/.zloginund ~/.zshrc. Um sich interaktiv bei csh anzumelden, schauen Sie in /etc/csh.loginund ~/.login.

Wenn es sich bei der Anmeldeshell des Benutzers um eine Bash handelt und es sich um eine nicht interaktive Anmeldung handelt, wird die Bash ausgeführt ~/.bashrc(was sehr merkwürdig ist, da sie ~/.bashrcnur für interaktive Shells ausgeführt wird, wenn die Shell keine Anmeldeshell ist). Dies kann zu Problemen führen. Ich empfehle, das folgende Snippet oben ~/.bashrcin das Hilfsprogramm einzufügen, wenn die Shell nicht interaktiv ist:

if [[ $- != *i* ]]; then return; fi
Gilles 'SO - hör auf böse zu sein'
quelle
Es war eine Reihe von Echos in meinem .bash_profile. > _ <Diese Frage hat nichts mit dem Original zu tun, aber: Klingt es nicht nach einer schlechten Methode, eine Nachricht zu senden, wenn Sie Dinge in .bash_profile wiedergeben? Vielleicht ist es besser, wenn Sie nur Nachrichten an einen einzelnen Benutzer senden möchten. Dies ist immerhin das Root-Konto. Andererseits bin ich ein Noob und daher nicht in der Lage, Dinge zu kritisch zu beurteilen.
Wesley
@WesleyDavid Das Echo von etwas in .bash_profilesendet nur eine Nachricht an sich selbst. Einige Leute sehen gerne nützliche oder lustige Nachrichten, wenn sie sich anmelden. Ich kann nicht für das Root-Konto Ihres Systems sprechen, da ich weder den Inhalt der Nachricht noch die beteiligten Personen und Einstellungen kenne.
Gilles 'SO- hör auf böse zu sein'
Das Einfügen einer Nachricht in / etc / motd funktionierte unter Mac OS X. Das ist alles, was ich brauchte. Dank dafür.
dgig
8

Es gibt ein paar:

/etc/motd
/etc/issue
/etc/profile - Could echo the message
/etc/profile.d/* - Would be called from /etc/profile

zusätzlich

/etc/bash_bashrc
/etc/.bashrc
/etc/bashrc
$HOME/.profile
$HOME/.bashrc

Möglicherweise müssen Sie auch jedes Programm durchgehen, das von diesen Skripten aus aufgerufen wird, da so etwas wie fortunedas Speichern der darin angezeigten Quips möglich ist /usr/share. Um es zu isolieren, können Sie Folgendes tun:

. /etc/profile
. /etc/bash.bashrc
. $HOME/.profile
. $HOME/.bashrc

Auf Ubuntu gibt es auch Datei:

/etc/motd.tail
Karlson
quelle
1
/etc/issuewird traditionell angezeigt, bevor sich ein Benutzer anmeldet, nicht danach.
Chris Down
Vielen Dank! Wusste nicht über profileund profile.d. Leider haben alle vier Vorschläge nichts ergeben. Ich frage mich, ob etwas Benutzerdefiniertes in die Bash-Binärdatei kompiliert wurde ...?
Wesley
@ChrisDown Richtig, aber mir ist kein System bekannt, das nach der Anzeige der Eingabeaufforderung etwas auf den Bildschirm bringt.
Karlson,
@WesleyDavid Ich habe die Antwort geändert.
Karlson,
Vielen Dank für alle Informationen! Dadurch habe ich viel gelernt, wie Muscheln Informationen an TTY-Sitzungen senden können. =)
Wesley
3

Neuere Systeme speichern die MOTD-Komponenten /etc/update-motd.dso, dass verschiedene Makros ausgeführt werden können, um die MotD so anzupassen, dass beim Anmelden Aktualisierungsinformationen, Systemwarnungen usw. angezeigt werden.

Fügen Sie Ihre Anpassung als eine andere Datei mit der Priorität von 00bis hinzu99

99-footer/etc/motd.tailWird normalerweise geladen, wenn das Anheften am Ende ausreicht und Sie keine der Makroelemente verwenden möchten.

Fiasco Labs
quelle
1

Sie könnten reingucken /etc/shell, dort habe ich eine Nachricht gefunden, die ich ändern wollte. Das Auskommentieren mit einem "#" funktioniert nicht. Sie müssen lediglich einen beliebigen Text löschen und einen eigenen hinzufügen. Auch Leerzeichen und neue Zeilen werden angezeigt, wenn Sie sie in die Datei einfügen.

Miguel Herrera
quelle