Saya ingin mengedit Last login:
informasi yang dicetak bersama dengan pesan hari ini, namun saya tidak dapat menemukan skrip yang menghasilkan dan menggemakan.
Di mana itu didefinisikan, dalam skrip shell yang mudah diedit, atau ditutup dalam biner?
Catatan, ini berbeda dari ServerFault: Bagaimana saya bisa mengedit pesan sambutan saat ssh mulai? . Informasi "login terakhir" tidak dicetak dari dalam /etc/update-motd.d/
, tetapi sebaliknya ditentukan dengan mengatur PrintLastLog
bendera, dan karenanya tidak dapat diedit seperti bagian lain dari pesan hari itu.
utmp
danwtmp
file (tergantung pada distribusi, check in/var/run/utmp
atau/var/log/utmp
atau lihat di/var
direktori). File-file ini tidak disimpan sebagai teks, tetapi sebagai biner, jadi Anda perlu alat khusus untuk mengeditnya. File utmp melacak status login setiap pengguna saat ini. File wtmp mencatat semua login dan riwayat logout. Anda akan memerlukan alat khusus untuk mengeditnya, tetapi saya tidak dapat menemukan apa-apa.Jawaban:
Sepertinya format baris yang dicetak dikompilasi menjadi
sshd
:[me@risby ~]$ ssh lory
Last login: Fri May 23 10:59:01 2014 from 2a01:2c0:e:300:7271:bcff:feac:445a
[me@lory ~]$ strings /usr/sbin/sshd | grep -i "last login"
Last login: %s
Last login: %s from %s
Saya tidak dapat melihat opsi konfigurasi untuk mengubahnya, jadi Anda perlu mengedit sumber dan mengkompilasi ulang.
Sunting : Dalam kasus terbatas, Anda dapat menemukan sumber di http://www.openssh.org . Tetapi Anda tidak memberi tahu kami bahwa Anda menggunakan OpenSSH, atau apa pun tentang platform Anda, jadi sulit untuk lebih spesifik. Jika ini adalah sistem Linux, Anda akan jauh lebih baik untuk mendapatkan sumber yang sesuai dengan distro Anda dengan cara biasa, dan mengkompilasi ulang melalui mekanisme spesifik distro Anda.
Tapi sungguh, Anda tidak boleh melakukan ini sama sekali kecuali Anda memiliki alasan bisnis yang sangat menarik untuk melakukannya: Anda membuat mimpi buruk pemeliharaan untuk diri Anda sendiri, pergi ke versi kompilasi manual dari paket keamanan-sensitif.
sumber
sshd
dapat ditemukan?wtmp
, mengaturPrintLastLog
benderano
, dan membuat kembali pemberitahuan "login terakhir" dengan skrip saya sendiri di tempatupdate-motd.d
. Jauh lebih ramah perawatan. :)motd
output tidak sepenuhnya terbaru. Jadi saya pikirupdate-motd
mungkin tidak dapat dijalankan pada setiap login.Informasi login terakhir disimpan di
/var/log/wtmp
atau/var/log/utmp
mereka adalah file biner. Tanpa melihat kode sumber untuk sshd saya tidak dapat sepenuhnya yakin tetapi saya berharap bahwa itu mengambil informasi dari file-file tersebut menggunakan panggilan sistem yang sesuaiSepertinya tidak mungkin Anda akan menemukan cara untuk dengan mudah mengubah informasi ini setelah semua bagian dari keamanan pengguna.
Jika Anda benar-benar menginginkan detail gory maka Anda perlu melihat kode sumber untuk fungsi
login_get_lastlog
yang dapat ditemukan diloginrec.c
sumber
Solusi lain adalah dengan menghapus layar di awal file motd seperti:
Catatan: ganti
^[
dengan simbol escape (yang dapat Anda buat di editor nano dengan menekan tombol berikut: esc+ v+ esc)sumber
Mungkin beberapa solusi kalau-kalau Anda hanya ingin mengubah IP login terakhir?
Misalnya, Anda dapat mengubah alamat IP yang ditampilkan menjadi "localhost" dengan masuk ke ssh lagi dari mesin yang dikendalikan dari jarak jauh!
Login jauh melalui ssh >> ssh username @ localhost
Sekarang IP terakhir yang tercatat adalah localhost
sumber