Quali sono i diversi modi in cui un messaggio può essere visualizzato in una shell bash dopo che un utente accede?


13

Ho un VPS CentOS 5.7 che usa bash come shell che mostra un saluto con marchio subito dopo aver effettuato l'accesso tramite SSH. Ho provato a modificarlo, ma non riesco a trovare dove si trova nei soliti posti. Finora ho cercato nel motdfile e verificato sshd_configle impostazioni del file banner. Non è stato impostato un file banner.

Dove altro posso cercare dove potrebbe essere il messaggio di accesso?


1
Si potrebbe provare un ricorsiva grepin /etcqualche sottoinsieme del messaggio.
Kevin,

@Kevin Aspetta, mi stai seguendo su Twitter? Ho appena pensato che stavo usando grep -r per trovare qualcosa. Tranne che sono un doofus e ho deciso di iniziare alle / =)
Wesley il

Ho iniziato /anche a, impiega un'eternità su un disco da 1 TB, lascia che te lo dica ... Ma non sono mai stato su Twitter :)
Kevin,

@WesleyDavid puoi pubblicare uno screenshot?
Karlson,

Risposte:


21

I sistemi unix tradizionali vengono visualizzati /etc/motddopo che l'utente è stato autenticato correttamente e prima che la shell dell'utente sia invocata. Sui sistemi moderni, questo viene fatto dal pam_motdmodulo PAM, che può essere configurato in /etc/pam.confo /etc/pam.d/*per visualizzare un file diverso.

Lo stesso server ssh può essere configurato per stampare /etc/motdse l' PrintMotdopzione non è disattivata /etc/sshd_config. Può anche stampare l'ora dell'accesso precedente se PrintLastLognon è disattivata.

Un altro messaggio tradizionale potrebbe dirti se questo You have new mailo You have mail. Sui sistemi con PAM, questo viene fatto dal pam_mailmodulo. Alcune shell potrebbero stampare un messaggio sulla posta disponibile.

Dopo l'avvio della shell dell'utente, i file di avvio dell'utente possono stampare messaggi aggiuntivi. Per un accesso interattivo, se la shell di login dell'utente è una shell stile Bourne, guardare in /etc/profile, ~/.profile, più ~/.bash_profilee ~/.bash_loginper bash. Per un accesso interattivo a zsh, sguardo /etc/zprofile, /etc/zlogin, /etc/zshrc, ~/.zprofile, ~/.zlogine ~/.zshrc. Per un accesso interattivo a csh, guarda in /etc/csh.logine ~/.login.

Se la shell di accesso dell'utente è bash e si tratta di un login non interattivo, viene eseguita bash ~/.bashrc(il che è davvero strano, poiché ~/.bashrcviene eseguito per shell interattive solo se la shell non è una shell di accesso). Questo può essere fonte di problemi; Raccomando di includere il seguente frammento nella parte superiore ~/.bashrcper eseguire il salvataggio se la shell non è interattiva:

if [[ $- != *i* ]]; then return; fi

Era una serie di echi nel mio .bash_profile. > _ <Questa domanda è estranea all'originale, ma: l'eco delle cose in .bash_profile non sembra un modo scadente di inviare un messaggio? Forse è meglio se vuoi solo inviare messaggi a un singolo utente. Questo è, dopo tutto, l'account di root. Poi di nuovo, sono un noob quindi non sono in grado di giudicare le cose in modo troppo critico.
Wesley,

@WesleyDavid Fare eco a qualcosa ti .bash_profileinvia solo un messaggio. Ad alcune persone piace vedere messaggi utili o divertenti quando effettuano l'accesso. Non posso parlare per l'account root del tuo sistema poiché non conosco né il contenuto del messaggio né le persone e le impostazioni coinvolte.
Gilles 'SO- smetti di essere malvagio' il

Mettere un messaggio in / etc / motd ha funzionato su Mac OS X, che è tutto ciò di cui avevo bisogno. Grazie per quello
dgig

8

Ci sono alcuni:

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

Inoltre

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

Potrebbe anche essere necessario passare attraverso ogni programma che viene chiamato da quegli script perché qualcosa di simile fortunepotrebbe archiviare le battute in cui viene visualizzato /usr/share. Per isolarlo puoi fare:

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

Su Ubuntu c'è anche il file:

/etc/motd.tail

1
/etc/issueviene tradizionalmente mostrato prima che un utente acceda, non dopo.
Chris Down,

Grazie! Non sapevo di profilee profile.d. Purtroppo, tutti e quattro i tuoi suggerimenti non hanno mostrato nulla. Mi chiedo se qualcosa di personalizzato viene compilato nel binario bash ...?
Wesley,

@ChrisDown Giusto, ma non sono a conoscenza di alcun sistema che possa mettere qualcosa sullo schermo dopo la visualizzazione del prompt.
Karlson,

@WesleyDavid Ho modificato la risposta.
Karlson,

Grazie mille per tutte le informazioni! Questo mi ha dato molto nel modo di apprendere i vari modi in cui le shell possono inviare informazioni alle sessioni TTY. =)
Wesley il

3

I sistemi più recenti memorizzano i componenti MOTD in /etc/update-motd.dmodo che possano essere eseguite varie macro per personalizzare il motd in modo che le informazioni di aggiornamento, gli avvisi di sistema, ecc. Vengano visualizzati all'accesso.

Aggiungi la tua personalizzazione come un altro file con priorità da 00a99

99-footerdi solito si carica /etc/motd.tailse attaccarlo all'estremità è sufficiente e non si desidera utilizzare nessuno degli elementi macro.


1

Potresti dare un'occhiata /etc/shell, è lì che ho trovato un messaggio che stavo cercando di cambiare. Non funziona per commentare con un "#" devi solo eliminare qualsiasi testo e aggiungere il tuo. Anche gli spazi e le nuove linee appariranno man mano che le inserirai nel file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.