X显示管理器

顯示管理器（display manager）建基於 X Window 系統，調用 X Window 系統用作以 GUI 登入以及登入後顯示 GUI 畫面，以及以 GUI 切換使用者。GNU/Linux 下的 tty7 預設開啟顯示管理器，tty1～6 則為文字列介面

在 X Window 系統中，作為程式執行的 **X 顯示管理器**允許你在本地 **X 伺服器**或遠端 **X 伺服器**上開始一個對談。

顯示管理器呈現給使用者一個登入介面並提示輸入使用者和密碼。當使用者成功輸入正確的使用者和密碼，顯示管理器會開始一個對談。

當顯示管理器在使用者電腦上執行時，它會在顯示登入介面前開啟 **X 伺服器**，並能在使用者登出後任意的重複執行。在這種情況下，顯示管理器在 X Window 系統中實現 init，getty 和在字元類型終端下登入的功能。當顯示管理器執行在遠端電腦時，它扮演類似 telnet 伺服器的角色，需要使用者名稱和密碼才開始一個遠端對談。

1988 年 10 月 X11 Release 3 引入了顯示管理器，它的目標是在市場上支援獨立的 **X 終端機**。多種顯示管理器繼續一成不變的在執行 X 系統的獨立的工作站上提供圖形化登入提示。1989 年 12 月 X11R4 引入 **X 顯示管理器控制協定**（**XDMCP**）來修復由 X11R3 帶來的問題。

## 本地和遠端顯示管理

顯示管理器可以執行在使用者面前的電腦上也可以執行在遠端電腦上。第一種情況，顯示管理器會自動開始一個或多個 X 伺服器，並顯示登入介面。第二種情況，顯示管理器要通過 **XDMCP** 協定工作。

XDMCP 協定要求 X 伺服器能自發的啟動並連接到顯示管理器。在 X Window 系統範例中，X 伺服器執行的那台電腦提供顯示和輸入裝置。X 伺服器能夠連接（使用 XDMCP 協定）到另一台執行顯示管理器的電腦，並請求開始對談。在這種情況下，X 伺服器扮演類似圖形化 telnet 客戶端的角色，而顯示管理器類似 telnet 伺服器：使用者啟動的程式是執行在顯示管理器那台電腦，而它們的輸入和輸出是工作在 X 伺服器（使用者面前）那台電腦上。

管理員可以組態 X 伺服器連接到某個指定的顯示管理器，或顯示執行 **X 顯示管理器**的主機列表。**XDMCP 選擇器**程式允許使用者選擇下面其中一個能連接到的主機：

1. 一個預先定義好的主機列表，它們有各自的網路位址；
2. 一個主機列表（工作於本地 IP 網段），它們的 XDMCP 伺服器可以通過廣播位址找到。

XDMCP 伺服器經常出現在這個列表中。當使用者從列表中選中一個主機，工作於本地電腦的 X 伺服器會連接選中的遠端電腦的 **X 顯示管理器**。

## X 顯示管理器控制協定（XDMCP）

X 顯示管理器控制協定使用 UDP 177 埠。需要顯示管理器開始一個對談時，X 伺服器需要向其傳送 `Query` 包。如果顯示管理器允許 X 伺服器的存取，它會向 X 伺服器返回 `Willing` 包作為回應。（X 伺服器也可以傳送 `BroadcastQuery` 或 `IndirectQuery` 包來開始一個對談，這種機制類似於使用 DHCP 來獲得 IP 位址。）

顯示管理器必須向 X 伺服器進行認證。為做到這一點，X 伺服器傳送 `Request` 包給顯示管理器，顯示管理器返回一個 `Accept` 包。如果 `Accept` 包包含了 X 伺服器期望的回應，則顯示管理器通過認證。舉例來說，為生成正確的回應可能需要顯示管理器存取一個金鑰。如果認證成功，X 伺服器會傳送 `Manage` 包來告訴顯示管理器。然後，顯示管理器會作為一個常規的 X 客戶端向連接的 X 伺服器顯示登入介面。

在對談期間，X 伺服器會間隔的向顯示管理器傳送 `KeepAlive` 包。如果顯示管理器在一段時間內沒有回應 `Alive` 包，X 伺服器會假定顯示管理器停止執行，並終止該連接。

XDMCP 有一個問題，類似 telnet，認證時是不加密的並且如果能夠嗅探，這會讓系統易受到攻擊。比較安全的方法是對 X 通信使用 ssh 通道。[1] （頁面存檔備份，存於網際網路檔案館）

## 歷史

XDM 是在 X11R3 中引入的。這個版本出現了幾個問題，最顯著的一個是當使用者打開 X 終端電源時。在 X11R3 中，XDM 只能通過 Xservers 檔案得知一個 X 終端，但是只有在啟動時 XDM 才會讀取這個檔案。因此，每次使用者打開 X 終端電源時，系統管理員不得不傳送 SIGHUP 訊號給 XDM 指示它重新讀取 Xservers 檔案。

X11R4（1989 年 10 月）引入了 XDMCP。使用 XDMCP 時，X 伺服器必須主動請求一個顯示管理器連接。當 X 伺服器使用 XDMCP 時就不再需要 Xservers 檔案。

## 一些實例

X Window 系統使用 XDM 做為它標準的顯示管理器。

也有其他 X 顯示管理器被開發出來，有商業有開源，在基本的顯示管理上提供了附加的功能。

* Qingy （頁面存檔備份，存於網際網路檔案館）在 X Window 中超輕型和可組態的圖形化登入管事器（使用 DirectFB）
* scologin（由 SCO Open Desktop 提供）能檢查過期密碼和執行一些管理任務
* GDM（由 GNOME 提供）
* KDM（由 KDE 提供）允許使用者在登入介面圖形化的選擇某個視窗管理員或桌面環境
* XDM 是 X Window 系統的預設顯示管理器
* LDM，Linux Terminal Server Project 的（遠端）顯示管理器
* dtlogin（工作於 CDE）
* WINGs Display Manager（使用 WINGs widget-set，用於 Window Maker）
* entranced/entrance (employs the architecture used in Enlightenment v.17, on hiatus since 2005)
* LXDM，一個輕量級的顯示管理器 http://wiki.lxde.org/en/LXDM （頁面存檔備份，存於網際網路檔案館）
* SLiM，一個獨立的登入管理器
* CDM，一個 Linux 下的超輕量級控制台顯示管理器
* xlogin，X Window 登入和獨立的 XDMCP 伺服器
* Enter，輕量級的圖形登入管理器
* Orthos，另一個輕量級的解決方案附帶真正的結構化主題
* nodm，針對收款機、電器和行動電話的自動登入的顯示管理器（已停止開發）
* LightDM，Canonical 公司開發的輕量級、模組化、跨桌面，完全更換主題的桌面管理器

在大多數 Linux 發行版中，系統預設的顯示管理器由 /etc/X11/default-display-manager 檔案選擇（註：本條已不適用使用 Gnome 或 KDE 的現代 Linux 發行版）

## 參見

* X Window 系統的協定和架構

## 參考文獻

## 外部連結

* Linux XDMCP HOWTO （頁面存檔備份，存於網際網路檔案館）
* 馴服 X 顯示管理器 （頁面存檔備份，存於網際網路檔案館）
* X Display Manager （頁面存檔備份，存於網際網路檔案館），來自 \*FreeBSD 手冊 （頁面存檔備份，存於網際網路檔案館）
* 從 Windows 中使用 XDMCP 登入 Linux 使用 Windows 登入 Linux。