Apa sajakah cara pesan ditampilkan ke bash shell setelah pengguna masuk?

13

Saya memiliki CentOS 5.7 VPS menggunakan bash sebagai cangkangnya yang menampilkan ucapan bermerek segera setelah masuk melalui SSH. Saya sudah mencoba untuk memodifikasinya, tetapi sepertinya tidak dapat menemukan di mana tempatnya di tempat biasa. Sejauh ini saya sudah mencari di motdfile dan memeriksa sshd_configpengaturan file banner. File spanduk tidak disetel.

Di mana lagi saya bisa mencari di mana pesan login mungkin?

Wesley
sumber
1
Anda bisa mencoba rekursif suatu grepdalam /etcuntuk beberapa subset dari pesan.
Kevin
@Kevin Tunggu, apakah Anda mengikuti saya di twitter? Saya hanya merenung bahwa saya menggunakan grep -r untuk menemukan sesuatu. Kecuali saya seorang doofus dan memutuskan untuk memulai pada / =)
Wesley
Saya sudah mulai /juga, butuh selamanya di disk 1TB, izinkan saya memberitahu Anda ... Tapi saya belum pernah di twitter :)
Kevin
@WesleyDavid dapatkah Anda mengirim tangkapan layar?
Karlson

Jawaban:

21

Sistem unix tradisional ditampilkan /etc/motdsetelah pengguna berhasil diautentikasi dan sebelum shell pengguna dipanggil. Pada sistem modern, ini dilakukan oleh pam_motdmodul PAM, yang dapat dikonfigurasi dalam /etc/pam.confatau /etc/pam.d/*untuk menampilkan file yang berbeda.

Server ssh itu sendiri dapat dikonfigurasi untuk mencetak /etc/motdjika PrintMotdopsi ini tidak dimatikan /etc/sshd_config. Ini juga dapat mencetak waktu login sebelumnya jika PrintLastLogtidak dimatikan.

Pesan tradisional lain mungkin memberi tahu Anda apakah itu You have new mailatau You have mail. Pada sistem dengan PAM, ini dilakukan oleh pam_mailmodul. Beberapa kerang mungkin mencetak pesan tentang surat yang tersedia.

Setelah shell pengguna diluncurkan, file startup pengguna dapat mencetak pesan tambahan. Untuk login interaktif, jika shell login pengguna adalah shell Bourne-gaya, terlihat di /etc/profile, ~/.profile, ditambah ~/.bash_profiledan ~/.bash_loginuntuk bash. Untuk login interaktif untuk zsh, tampilan di /etc/zprofile, /etc/zlogin, /etc/zshrc, ~/.zprofile, ~/.zlogindan ~/.zshrc. Untuk login interaktif ke csh, lihat di /etc/csh.logindan ~/.login.

Jika shell login pengguna adalah bash dan ini adalah login non-interaktif, maka bash mengeksekusi ~/.bashrc(yang benar-benar aneh, karena ~/.bashrcdieksekusi untuk shell interaktif hanya jika shell bukan shell login). Ini bisa menjadi sumber masalah; Saya sarankan menyertakan cuplikan berikut di bagian atas ~/.bashrcuntuk menyelamatkan jika shell tidak interaktif:

if [[ $- != *i* ]]; then return; fi
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Itu adalah serangkaian gema di .bash_profile saya. > _ <Pertanyaan ini tidak cocok dengan yang asli, tetapi: Tidakkah menggemakan sesuatu di .bash_profile sepertinya cara yang buruk untuk mengirim pesan? Mungkin lebih baik jika Anda hanya ingin mengirim pesan ke satu pengguna. Lagi pula, ini adalah akun root. Kemudian lagi, saya seorang noob jadi saya tidak dalam posisi untuk menilai hal-hal terlalu kritis.
Wesley
@WesleyDavid Menggema sesuatu .bash_profilehanya mengirim pesan kepada diri sendiri. Beberapa orang suka melihat pesan yang berguna atau lucu ketika mereka masuk. Saya tidak dapat berbicara untuk akun root sistem Anda karena saya tidak tahu isi pesan atau orang-orang dan pengaturan yang terlibat.
Gilles 'SO- stop being evil'
Menempatkan pesan di / etc / motd bekerja di Mac OS X, yang saya butuhkan. Terima kasih untuk itu.
dgig
8

Ada beberapa:

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

Selain itu

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

Anda mungkin juga harus melalui setiap program yang dipanggil dari skrip-skrip itu karena sesuatu seperti fortunebisa menyimpan gurauan yang ditampilkannya /usr/share. Untuk mengisolasinya, Anda dapat melakukan:

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

Di Ubuntu ada juga file:

/etc/motd.tail
Karlson
sumber
1
/etc/issuebiasanya ditampilkan sebelum pengguna masuk, bukan setelah.
Chris Down
Terima kasih! Tidak tahu tentang profiledan profile.d. Sayangnya, keempat saran Anda tidak menghasilkan apa-apa. Saya bertanya-tanya apakah ada sesuatu yang dikompilasi dalam biner bash ...?
Wesley
@ ChrisDown Benar tetapi saya tidak mengetahui adanya sistem yang akan meletakkan apa pun di layar setelah prompt ditampilkan.
Karlson
@WesleyDavid Saya telah mengubah jawabannya.
Karlson
Terima kasih banyak atas semua informasinya! Ini telah memberi saya banyak cara untuk mempelajari berbagai cara bahwa shell dapat mengirim informasi ke sesi TTY. =)
Wesley
3

Sistem yang lebih baru menyimpan komponen MOTD /etc/update-motd.dsehingga berbagai makro dapat dijalankan untuk menyesuaikan motd agar memiliki informasi pembaruan, peringatan sistem, dll. Yang ditampilkan saat masuk.

Tambahkan kustomisasi Anda sebagai file lain dengan prioritas dari 00hingga99

99-footerbiasanya dimuat /etc/motd.tailjika menempelkannya di ujung sudah cukup dan Anda tidak ingin menggunakan item makro apa pun.

Laboratorium Fiasco
sumber
1

Anda dapat melihat /etc/shell, di situlah saya menemukan pesan yang saya coba ubah. Tidak berfungsi untuk berkomentar dengan "#" Anda hanya perlu menghapus teks apa pun dan menambahkan teks Anda sendiri. Juga spasi dan baris baru akan muncul saat Anda menempatkannya di file.

Miguel Herrera
sumber