![來自遠端來源的動態 motd 訊息?](https://rvso.com/image/1606686/%E4%BE%86%E8%87%AA%E9%81%A0%E7%AB%AF%E4%BE%86%E6%BA%90%E7%9A%84%E5%8B%95%E6%85%8B%20motd%20%E8%A8%8A%E6%81%AF%EF%BC%9F.png)
莫德允許顯示 Linux 使用者的歡迎登入訊息。
是否可以配置 motd 來取得遠端 URL?
範例場景:
通知使用者有關 Python 2 生命週期結束的信息,但在截止日期過後停止這樣做。
如果未安裝 Python2,則禁止顯示此訊息
更複雜的場景範例:
- 傳遞一個參數,動態評估它並通知使用者不再支援該作業系統。
答案1
對於系統範圍的訊息,可以在啟動時產生 motd – Ubuntu 和 Debian 目前就是這樣做的。他們有一個update-motd
系統,可以根據標準標題、提示、公告、系統更新訊息等組裝文字檔案。
在大多數情況下,motd 由名為 的 PAM 模組顯示pam_motd
。 (Debian/Ubuntu 系統實際上是透過呼叫模組兩次來運作的——首先是靜態的 /etc/motd,然後是自動產生的 /run/motd。)
因此,如果您需要更多動態文字(例如,基於登入的使用者名稱),您可以建立您自己的該模組版本並使其執行您想要的任何操作。
然而,不要讓它直接從網路檢索文件,因為這只會減慢登入速度並每次都會惹惱您的用戶。相反,設定一個下載檔案的 cronjob,然後只需使用檔案名稱作為參數呼叫現有的 pam_motd 模組:
session optional pam_motd.so motd=/tmp/downloaded_message.txt
答案2
/etc/motd
只是一個靜態文字檔。
您所說的聽起來更像是可以使用登入腳本實現的東西。
較新的 Linux 發行版往往有一個目錄/etc/profile.d
,您可以在其中放入要在使用者登入時執行的腳本片段。/bin/sh
有.sh
後綴的 POSIX 相容,另一個使用csh
帶有後綴的語法.csh
。
對於較舊的發行版,您可以將所需的功能新增至/etc/profile
和/etc/csh.login
(分別適用於所有 POSIXsh
相容 shell 和csh
/ tcsh
shell)。
您當然可以製作一個腳本來聯繫特定的遠端 URL 並添加一些相關的系統訊息,例如自訂 HTTP 標頭,遠端可以解析這些資訊並使用自訂的訊息文字進行回應。
但是,如果從遠端 URL 返回的回應不僅僅是純文本,還包含潛在的可執行內容,則此機制變得安全敏感:如果包含遠端 URL(或網絡,或登入腳本本身)的伺服器不安全,它可能成為入侵者存取您的系統的一種方式。為了防止這種情況發生,您在實施時必須更加小心。
您還應該考慮如果遠端 URL 無法存取或網路連結斷開時會發生什麼:您會希望訊息系統逾時並在大多數錯誤情況下繼續登入。