轉載請注明來源(哎,轉的到處都是,zhihu上也轉載,都是個人辛辛苦苦翻手冊學習、檢索然后動手記錄的,好歹標記一下出處啊....)
Linux使用這三個文件/etc/issue、/etc/issue.net和/etc/motd 來控制本地及遠程登錄前后的信息顯示,新版本的還有動態motd:/run/motd.dynamic以及PAM模塊來控制。網上很多相互轉載,說的都不清楚,自己實際測試了一下,結果記錄如下:
首先終端有好幾種類型,暫不要深究,仔細深究各種串口等底層的東西就來了(想要細究,請看我的另一篇文章:關於Unix/Linux的終端、控制台和shell),為了方便理解,暫且假定我們Linux的終端就2種,一種就是你坐在主機前,接了鍵盤和顯示器,啟動時就是那種黑框框沒有圖形界面的地方直接登錄,這種登錄終端我們叫他 TTY(終端控制台),就是那種按ctrl+f1/f2/f3/.../f6的那種登錄,另一種就是我們遠程登錄,使用telnet或者ssh,或者是你開機之后,用圖形界面登錄,然后打開的gnome等終端,這一種我們叫他PTS方式,如下圖所示:
TTY終端:

PTS終端:

/etc/issue 和 /etc/issue.net :這2個文件是你在登錄之前顯示的,區別一個負責本地登錄前顯示,一個負責網絡登錄前顯示。也即 /etc/issue 是顯示在TTY控制台登錄前(非圖形界面),而 /etc/issue.net 是顯示在 Telnet (SSH默認不開啟,請看文章最后面說明)遠程登錄前,另外 /etc/issue.net 不支持轉義字符,如下圖:


/etc/motd :這個文件是在你登錄之后顯示的,不管你是 TTY 還是 PTS 登錄,也不管是 Telnet 或 SSH 都顯示這個文件里面的信息。
在較新的Linux發行版中,這個功能被擴展了,有了動態motd和靜態motd的區別,在Ubuntu 16.04.01 LTS中,僅僅啟用了動態motd,而未啟用靜態motd
如下圖:


上面兩個圖是分別用TTY和PTS進行登錄的截圖,但實際上並沒有/etc/motd這個配置文件,那么這些登錄信息來自哪里呢?答案是:來自 /run/motd.dynamic 文件。

你可能想要修改這個配置文件來自定義你自己的登錄后信息,可是卻發現配置完畢后,再次登錄時,配置文件中的信息又還原了。是的,這里的信息無法修改,因為它是由 /etc/update-motd.d/ 下的幾個腳本文件來動態生成的。所以你可以通過/etc/update-motd.d/ 下的腳本來控制信息的生成。那么如何禁用該動態motd功能呢?方法是將/etc/update-motd.d/ 下的腳本移除或者去掉可執行權限。還有一種方法是在PAM登錄模塊配置文件中禁用動態motd,該配置文件是/etc/pam.d/login
# Prints the message of the day upon succesful login. # (Replaces the `MOTD_FILE' option in login.defs) # This includes a dynamically generated part from /run/motd.dynamic # and a static (admin-editable) part from /etc/motd. session optional pam_motd.so motd=/run/motd.dynamic session optional pam_motd.so noupdate
將其中的pam_motd.so這兩行注釋掉即關閉動態dynamic motd
在關閉動態motd之后,發現登錄之后還有會一行:Last login: Thu May 25 15:39:48 CST 2017 from 192.168.2.122 on pts/1
這是由/etc/pam.d/login配置文件中pam_lastlog.so這一行控制的,相應地注釋即可。
# Prints the last login info upon succesful login # (Replaces the `LASTLOG_ENAB' option from login.defs) session optional pam_lastlog.so
如果需要靜態motd消息,那么在/etc/目錄下,新建或者修改配置文件motd,在其中定制你需要的登錄后信息即可。
默認情況下/etc/issue.net 文件的內容不會在ssh登錄前顯示,要顯示這個信息可以修改/etc/ssh/sshd_config 文件中的 Banner /etc/issue.net ,配置更改后,需要重啟SSH服務。
/etc/issue.net 文件記錄了操作系統的名稱和版本號,這些登錄提示很明顯的泄漏了系統信息,為了安全起見,建議將系統相關信息去除。
