Каковы способы отображения сообщения в оболочке bash после входа пользователя в систему?

13

У меня CentOS 5.7 VPS с использованием bash в качестве оболочки, которая отображает фирменное приветствие сразу после входа в систему через SSH. Я пытался изменить его, но не могу найти его в обычных местах. Пока что я посмотрел motdфайл и проверил sshd_configнастройки файла баннера. Файл баннера не установлен.

Где еще я могу найти, где может быть сообщение для входа?

Wesley
источник
1
Вы можете попробовать рекурсивные grepв /etcтечение некоторого подмножества сообщения.
Кевин
@Kevin Подожди, ты следишь за мной в твиттере? Я просто подумал, что я использовал grep -r, чтобы найти что-то. За исключением того, что я глупец и решил начать с / =)
Уэсли
Я тоже начинал /, занимал целую вечность на диске объемом 1 ТБ, позвольте мне сказать вам ... Но я никогда не был в твиттере :)
Кевин
@WesleyDavid вы можете опубликовать скриншот?
Карлсон

Ответы:

21

Традиционные системы Unix отображаются /etc/motdпосле успешной аутентификации пользователя и до вызова оболочки пользователя. В современных системах это выполняется pam_motdмодулем PAM, который может быть настроен в /etc/pam.confили /etc/pam.d/*отображать другой файл.

Сам сервер ssh может быть настроен на печать, /etc/motdесли эта PrintMotdопция не отключена /etc/sshd_config. Он также может распечатать время предыдущего входа в систему, если PrintLastLogон не выключен.

Другое традиционное сообщение может сказать вам, что это You have new mailили You have mail. В системах с PAM это делается pam_mailмодулем. Некоторые оболочки могут напечатать сообщение о наличии почты.

После запуска оболочки пользователя в файлах запуска пользователя могут печататься дополнительные сообщения. Для интерактивного входа в систему , если Логин пользователя оболочки оболочки Bourne-стиль, посмотрите /etc/profile, ~/.profileплюс ~/.bash_profileи ~/.bash_loginдля Баш. Для интерактивного входа в Zsh, смотреть в /etc/zprofile, /etc/zlogin, /etc/zshrc, ~/.zprofile, ~/.zloginи ~/.zshrc. Для интерактивного входа в csh, посмотрите /etc/csh.loginи ~/.login.

Если пользовательская оболочка входа в систему bash и это неинтерактивная регистрация, то выполняется bash ~/.bashrc(что действительно странно, поскольку ~/.bashrcвыполняется для интерактивных оболочек, только если оболочка не является оболочкой входа в систему). Это может стать источником неприятностей; Я рекомендую включить следующий фрагмент вверху ~/.bashrc, если оболочка не является интерактивной:

if [[ $- != *i* ]]; then return; fi
Жиль "ТАК - прекрати быть злым"
источник
Это была серия эха в моем .bash_profile. > _ <Этот вопрос посторонний для оригинала, но: разве эхо в .bash_profile не похоже на плохой способ отправки сообщения? Может быть, лучше, если вы хотите отправлять сообщения только одному пользователю. Это, в конце концов, учетная запись root. С другой стороны, я нуб, поэтому я не в состоянии судить о вещах слишком критически.
Уэсли
@WesleyDavid Повторение чего-либо .bash_profileтолько отправляет сообщение самому себе. Некоторым людям нравится видеть полезные или забавные сообщения, когда они входят в систему. Я не могу говорить от имени учетной записи root вашей системы, поскольку не знаю ни содержания сообщения, ни людей и соответствующих настроек.
Жиль "ТАК ... перестать быть злым"
Помещение сообщения в / etc / motd работало на Mac OS X, и это все, что мне было нужно. Спасибо за это.
dgig
8

Есть несколько:

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

Дополнительно

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

Вам также может понадобиться просмотреть все программы, которые вызываются из этих сценариев, потому что что-то вроде fortuneможет хранить скипы, в которых они отображаются /usr/share. Чтобы выделить его, вы можете сделать:

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

На Ubuntu также есть файл:

/etc/motd.tail
Карлсон
источник
1
/etc/issueТрадиционно отображается до входа пользователя, а не после.
Крис Даун
Благодарность! Не знал о profileи profile.d. Увы, все четыре твоих предложения ничего не нашли. Мне интересно, если что-то нестандартное скомпилировано в двоичный файл bash ...?
Уэсли
@ChrisDown Верно, но я не знаю ни одной системы, которая бы выводила что-либо на экран после отображения приглашения.
Карлсон
@WesleyDavid Я исправил ответ.
Карлсон
Большое спасибо за всю информацию! Это дало мне много знаний о том, как оболочки могут отправлять информацию на сессии TTY. =)
Уэсли
3

Более новые системы хранят компоненты MOTD, /etc/update-motd.dтак что можно запускать различные макросы для настройки motd, чтобы при входе в систему отображалась информация об обновлении, системные предупреждения и т. Д.

Добавьте свою настройку как другой файл с приоритетом от 00до99

99-footerобычно загружается, /etc/motd.tailесли достаточно положить его в конец, и вы не хотите использовать какие-либо элементы макроса.

Fiasco Labs
источник
1

Вы можете посмотреть /etc/shell, вот где я нашел сообщение, которое я пытался изменить. Это не работает, чтобы закомментировать с "#", вы просто должны удалить любой текст и добавить свой собственный. Также пробелы и новые строки будут появляться по мере их размещения в файле.

Мигель Эррера
источник