X显示管理器
显示管理器(display manager)建基于X窗口系统,调用X窗口系统用作以GUI登录以及登录后显示GUI画面,以及以GUI切换用户。GNU/Linux下的tty7默认开启显示管理器,tty1~6则为文字列接口
在X窗口系统中,作为程序运行的X显示管理器允许你在本地X伺服器或远程X伺服器上开始一个会话。
显示管理器呈现给用户一个登录界面并提示输入用户和密码。当用户成功输入正确的用户和密码,显示管理器会开始一个会话。
当显示管理器在用户电脑上运行时,它会在显示登录界面前开启X伺服器,并能在用户退出后任意的重复运行。在这种情况下,显示管理器在X窗口系统中实现init,getty和在字符类型终端下登录的功能。当显示管理器运行在远程电脑时,它扮演类似telnet伺服器的角色,需要用户名和密码才开始一个远程会话。
1988年10月X11 Release 3引入了显示管理器,它的目标是在市场上支持独立的X终端机。多种显示管理器继续一成不变的在运行X系统的独立的工作站上提供图形化登录提示。1989年12月X11R4引入X显示管理器控制协议(XDMCP)来修复由X11R3带来的问题。
本地和远程显示管理
显示管理器可以运行在用户面前的电脑上也可以运行在远程电脑上。第一种情况,显示管理器会自动开始一个或多个X伺服器,并显示登录界面。第二种情况,显示管理器要通过XDMCP协议工作。
XDMCP协议要求X伺服器能自发的启动并连接到显示管理器。在X窗口系统范例中,X伺服器运行的那台电脑提供显示和输入装置。X伺服器能够连接(使用XDMCP协议)到另一台运行显示管理器的电脑,并请求开始会话。在这种情况下,X伺服器扮演类似图形化telnet客户端的角色,而显示管理器类似telnet伺服器:用户启动的程序是运行在显示管理器那台电脑,而它们的输入和输出是工作在X伺服器(用户面前)那台电脑上。
管理员可以配置X伺服器连接到某个指定的显示管理器,或显示运行X显示管理器的主机列表。XDMCP选择器程序允许用户选择下面其中一个能连接到的主机:
- 一个预先定义好的主机列表,它们有各自的网络地址;
- 一个主机列表(工作于本地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显示管理器被开发出来,有商业有开源,在基本的显示管理上提供了附加的功能。
- Qingy (页面存档备份,存于互联网档案馆)在X Window中超轻型和可配置的图形化登录管事器(使用DirectFB)
- scologin(由SCO Open Desktop提供)能检查过期密码和执行一些管理任务
- GDM(由GNOME提供)
- KDM(由KDE提供)允许用户在登录界面图形化的选择某个窗口管理器或桌面环境
- XDM是X窗口系统的默认显示管理器
- 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,针对收款机、电器和行动电话的自动登录的显示管理器(已停止开发[1])
- LightDM,Canonical公司开发的轻量级、模块化、跨桌面,完全更换主题的桌面管理器
在大多数Linux发行版中,系统默认的显示管理器由/etc/X11/default-display-manager文件选择(注:本条已不适用使用Gnome或KDE的现代Linux发行版)
参见
参考文献
- ^ Added a bigger not maintained note · spanezz/nodm@0552524. GitHub. [2020-10-31] (英语).
外部链接
- Linux XDMCP HOWTO (页面存档备份,存于互联网档案馆)
- 驯服X显示管理器 (页面存档备份,存于互联网档案馆)
- X Display Manager (页面存档备份,存于互联网档案馆),来自*FreeBSD手册 (页面存档备份,存于互联网档案馆)
- 从Windows中使用XDMCP登录Linux使用Windows登录Linux。