X显示管理器

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

KDMKDE显示管理器)显示的登录界面

X Window系统中,作为程序运行的X显示管理器允许你在本地X服务器或远程X服务器上开始一个会话。

显示管理器呈现给用户一个登录界面并提示输入用户和密码。当用户成功输入正确的用户和密码,显示管理器会开始一个会话。

当显示管理器在用户电脑上运行时,它会在显示登录界面前开启X服务器,并能在用户登出后任意的重复运行。在这种情况下,显示管理器在X Window系统中实现initgetty和在字符类型终端登录的功能。当显示管理器运行在远程计算机时,它扮演类似telnet服务器的角色,需要用户名和密码才开始一个远程会话。

1988年10月X11 Release 3引入了显示管理器,它的目标是在市场上支持独立的X终端机。多种显示管理器继续一成不变的在运行X系统的独立的工作站上提供图形化登录提示。1989年12月X11R4引入X显示管理器控制协议XDMCP)来修复由X11R3带来的问题。

本地和远程显示管理

显示管理器可以运行在用户面前的计算机上也可以运行在远程计算机上。第一种情况,显示管理器会自动开始一个或多个X服务器,并显示登录界面。第二种情况,显示管理器要通过XDMCP协议工作。

 
在X Window系统中,X服务器运行在用户面前的计算机上。X服务器可以连接到另一台计算机上运行的显示管理器,开始一个会话并运行存在于另一台计算机中的程序。

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服务器也可以发送BroadcastQueryIndirectQuery包来开始一个会话,这种机制类似于使用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显示管理器被开发出来,有商业有开源,在基本的显示管理上提供了附加的功能。

在大多数Linux发行版中,系统默认的显示管理器由/etc/X11/default-display-manager文件选择(注:本条已不适用使用Gnome或KDE的现代Linux发行版)

参见

参考文献

  1. ^ Added a bigger not maintained note · spanezz/nodm@0552524. GitHub. [2020-10-31] (英语). 

外部链接