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


13

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

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


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если достаточно положить его в конец, и вы не хотите использовать какие-либо элементы макроса.


1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.