Quais são as diferentes maneiras pelas quais uma mensagem pode ser exibida em um shell bash depois que um usuário faz login?


13

Eu tenho um CentOS 5.7 VPS usando o bash como shell que exibe uma saudação de marca imediatamente após o login via SSH. Eu tenho tentado modificá-lo, mas parece que não consigo encontrar onde ele está nos lugares habituais. Até agora, procurei no motdarquivo e verifiquei as sshd_configconfigurações do arquivo de banner. Um arquivo de banner não está definido.

Onde mais posso procurar onde pode estar a mensagem de login?


1
Você poderia tentar um recursiva grepem /etcalgum subconjunto da mensagem.
22412 Kevin

@ Kevin Espere, você está me seguindo no twitter? Eu apenas pensei que estava usando o grep -r para encontrar algo. Só que eu sou um idiota e decidiu começar a / =)
Wesley

Eu comecei a /também, leva uma eternidade em um disco de 1TB, deixe-me dizer-lhe ... Mas eu nunca estive no twitter :)
Kevin

@WesleyDavid você pode postar uma captura de tela?
Karlson

Respostas:


21

Os sistemas unix tradicionais são exibidos /etc/motddepois que o usuário é autenticado com sucesso e antes que o shell do usuário seja chamado. Nos sistemas modernos, isso é feito pelo pam_motdmódulo PAM, que pode ser configurado /etc/pam.confou /etc/pam.d/*exibir um arquivo diferente.

O próprio servidor ssh pode ser configurado para imprimir /etc/motdse a PrintMotdopção não estiver desativada /etc/sshd_config. Também pode imprimir a hora do login anterior, se PrintLastLognão estiver desativado.

Outra mensagem tradicional pode dizer se isso é You have new mailou não You have mail. Em sistemas com PAM, isso é feito pelo pam_mailmódulo. Algumas conchas podem imprimir uma mensagem sobre o correio disponível.

Depois que o shell do usuário é iniciado, os arquivos de inicialização do usuário podem imprimir mensagens adicionais. Para um login interativo, se shell de login do usuário é um shell Bourne-style, olhar em /etc/profile, ~/.profile, mais ~/.bash_profilee ~/.bash_loginpara a festança. Para um login interativo para zsh, olhar em /etc/zprofile, /etc/zlogin, /etc/zshrc, ~/.zprofile, ~/.zlogine ~/.zshrc. Para um login interativo no csh, consulte /etc/csh.logine ~/.login.

Se o shell de login do usuário for bash e este for um login não interativo, o bash será executado ~/.bashrc(o que é realmente estranho, pois ~/.bashrcé executado para shells interativos apenas se o shell não for um shell de login). Isso pode ser uma fonte de problemas; Eu recomendo incluir o seguinte trecho na parte superior do ~/.bashrcpara resgatar se o shell não for interativo:

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

Foi uma série de ecos no meu .bash_profile. > _ <Esta questão é estranha à original, mas: Fazer eco em .bash_profile não parece ser uma maneira ruim de enviar uma mensagem? Talvez seja melhor se você deseja apenas enviar mensagens para um único usuário. Afinal, essa é a conta raiz. Por outro lado, sou um noob, por isso não estou em posição de julgar as coisas com muita criticidade.
23412 Wesley

@WesleyDavid Fazer eco de algo .bash_profileapenas envia uma mensagem para si mesmo. Algumas pessoas gostam de ver mensagens úteis ou engraçadas quando fazem login. Não posso falar pela conta raiz do seu sistema, pois não conheço nem o conteúdo da mensagem nem as pessoas e as configurações envolvidas.
Gilles 'SO- stop be evil'

Colocar uma mensagem em / etc / motd funcionou no Mac OS X, e é tudo o que eu precisava. Obrigado por isso.
dgig

8

Existem alguns:

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

Além disso

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

Você também pode ter que passar por todos os programas que estão sendo chamados a partir desses scripts, porque algo como fortunepode estar armazenando as piadas em que está sendo exibido /usr/share. Para isolá-lo, você pode fazer:

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

No Ubuntu também há arquivo:

/etc/motd.tail

1
/etc/issueé tradicionalmente mostrado antes que um usuário efetue login, não depois.
22412 Chris Down

Obrigado! Não sabia sobre profilee profile.d. Infelizmente, todas as quatro sugestões não apareceram em nada. Gostaria de saber se algo personalizado é compilado no binário bash ...?
Wesley

@ ChrisDown Certo, mas não conheço nenhum sistema que colocaria algo na tela após o prompt ser exibido.
Karlson

@WesleyDavid Alterei a resposta.
Karlson

Muito obrigado por todas as informações! Isso me proporcionou muito aprendizado sobre as várias maneiras pelas quais os projéteis podem enviar informações para as sessões TTY. =)
Wesley

3

Os sistemas mais recentes armazenam os componentes MOTD /etc/update-motd.dpara que várias macros possam ser executadas para personalizar o motd para que informações de atualização, alertas do sistema, etc. sejam mostrados no login.

Adicione sua personalização como outro arquivo com prioridade de 00para99

99-footernormalmente carrega /etc/motd.tailse a aderência no final for suficiente e você não quiser usar nenhum dos itens da macro.


1

Você poderia procurar /etc/shell, foi aí que encontrei uma mensagem que estava tentando mudar. Não funciona para comentar com um "#" você apenas precisa excluir qualquer texto e adicionar o seu. Também espaços e novas linhas aparecerão quando você os colocar no arquivo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.