本节介绍为了使 XDM 执行本文档目前为止描述的功能,需要配置哪些内容。
在每种情况下,描述的配置都是完成每个目标所需的最低限度。 在大多数情况下,这也意味着配置也是最不安全的。 请参阅第 7 节中列出的其他文档,以获取有关保护 XDM 和 X 终端的信息(特别是 LDP 的“运行远程 X 应用程序 Howto”)。
这些文件必须为实际运行 XDM 本身的机器设置。 它们通常位于(Debian 2.1。Mandrake 7.0.2,RedHat 6.2)
/etc/X11/xdm |
/usr/X11R6/lib/X11/xdm |
定义其他配置文件的名称和位置以及基本访问权限。 对于本文档中考虑的所有发行版,文件名都如此处列出的(但有时位置会有所不同)。
这也定义了为 X 会话的各种状态转换(即启动等时)运行的脚本。 您应该不需要更改这些,因为大多数发行版似乎都已为您预先配置了这些。
请注意,XDM 管理的 X 会话与通过 xinit 或 startx 启动的 X 会话(即非 XDM 管理的 X 会话)具有不同的启动和配置文件集。
某些发行版(例如 Redhat 7.1)在此配置文件中包含以下行,这将阻止 XDM 侦听查询
DisplayManager.requestPort: 0 |
!DisplayManager.requestPort: 0 |
确定哪些机器可以连接到 XDM - 即我们从网络上的哪些其他机器接受 XDMCP 查询。 如果机器未在此文件中列出,则它将无法从 XDM 请求登录提示。
包含 XDM 将连接到的机器列表,以自动提供登录提示 - 即那些已经在运行 X 服务器,但希望此机器提供登录提示的机器。
这仅对于“XDM 管理的 X 服务器”是必需的。 如果您将依靠远程 X 服务器来查询 XDM,则无需在此文件中添加任何条目。
当作为独立的“X 工作站”运行时,此文件中通常只有一个条目,仅列出本地主机。
XDM 小部件使用的 X 属性的详细信息(例如登录“框”的大小、颜色、位图背景等)。
必须在 Xservers 文件中为 XDM 将在其上显示登录提示的每个 X 服务器放置一个条目。 这可以包括本地机器和/或远程机器列表。
# First the local host :0 local /usr/bin/X11/X vt7 # # Then the remote hosts emma:0 foreign alex:0 foreign |
这将启动本地计算机上的 XDM,并在主机“emma”和“alex”上运行的 X 服务器上显示登录屏幕(假设已在“emma”和“alex”上设置了权限,以便允许此机器连接到正在运行的 X 服务器)。
请注意,如果需要,可以指定主机和显示器(:0、:1 等)。 例如,如果您在单台机器上运行多个 X 服务器等,这将非常有用。
文件 Xaccess 确定哪些主机可以查询此机器上的 XDM,以便请求登录提示。
# First line for direct queries * # Following line for indirect queries * CHOOSER BROADCAST |
这意味着任何主机都可以使用直接查询通过 XDM 请求登录提示(第一个“*”)。
“CHOOSER”行指定哪些主机可以使用间接查询连接到 XDM - 在这种情况下,任何主机都可以查询此机器以获取要连接的潜在主机列表(第二个“*”行)。
“BROADCAST”表示此机器上的“chooser”应用程序将通过网络广播查询获取其可用的服务器列表(这些服务器也将运行 XDM)。 我稍后会讨论“chooser”。
可以将特定的主机名或网络 IP 地址规范(例如,整个 IP 网络或特定主机)放置在这些条目中(并且还有其他可能的间接查询,无需使用 chooser),但这在此处未描述(有关更多信息的链接,请参阅第 7 节)。
启动 X 服务器本身的方式将取决于您希望它如何在本地和远程与 XDM 交互。
XDM 通常会自动为您启动 X,并且 XDM 通常配置为作为启动过程的一部分运行(通过 init 脚本)。 大多数发行版都有一个特定的“运行级别”用于启动带有图形登录提示的系统。
只需启动没有客户端的 X,并设置访问权限,以便远程 XDM 能够在启动时连接。 以下命令将启动没有访问控制的 X
/usr/X11R6/bin/X -ac |
回想一下,查询有 3 种模式:直接、间接和广播(直接用于单个主机,间接用于主机列表,广播用于第一个回复的主机)
/usr/X11R6/bin/X -query the.remote.host /usr/X11R6/bin/X -indirect the.remote.host /usr/X11R6/bin/X -broadcast |
在每种情况下,X 都可能必须以 root 身份启动。
可以使机器自动启动 X 并对网络上运行的 XDM 执行查询。 一种方法是“劫持” inittab 设置以作为图形登录运行(在基于 Debian 和 Redhat 的系统上,这是运行级别 5,在 SuSE 上是 3 - 此示例始终假设运行级别 5)。 这通常是 /etc/inittab 末尾以 x:5 开头的行。 将其设置为(或添加它,如果它不存在)
x:5:respawn:/usr/X11R6/bin/X -broadcast |
id:5:initdefault: |
可以通过将默认运行级别更改为上述运行级别,在启动时自动运行 XDM。 这在 /etc/inittab 中配置如下
id:5:initdefault: |
或者,也可以为 XDM 本身添加一个启动脚本到启动目录(Redhat/Debian 的 /etc/rc.d/)中的 rc 脚本,以类似于 Linux 机器上的其他服务的方式启动和停止 XDM。
以下脚本适用于基于 Redhat(可能还有 Mandrake)的系统,应另存为 /etc/rc.d/init.d/xdm。 您必须使用“chkconfig --add xdm”启用它。
#!/bin/sh # xdm start/stop script for RedHat based systems # # chkconfig: 234 60 60 # description: xdm permits remote users to logon to this X display # processname: /usr/X11R6/bin/xdm # config: /etc/X11/xdm/xdm-config # source function library . /etc/rc.d/init.d/functions [ -x /usr/X11R6/bin/xdm ] || exit 0 prog=/usr/X11R6/bin/xdm RETVAL=0 start () { echo -n $"Starting $prog: " # start daemon daemon $prog RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/xdm return $RETVAL } stop () { echo -n $"Stopping $prog: " killproc $prog RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/xdm return $RETVAL } restart () { stop start RETVAL=$? return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status $prog RETVAL=$? ;; restart) restart ;; condrestart) # only restart if it is already running [ -f /var/lock/subsys/xdm ] && restart || : ;; reload) echo -n $"Reloading $prog: " killproc $prog -HUP RETVAL=$? echo ;; *) echo $"Usage: $0 (start|stop|restart|condrestart|reload|status)" RETVAL=1 esac exit $RETVAL |
当 XDM 接收到间接查询,并且假设已在 Xaccess 中为“chooser”应用程序指定了适当的选项时,它可以向用户提供它知道的其他 XDM 管理的服务器列表。
在这种操作模式下,用户将看到的不是正常的 XDM 登录提示,而是一个“chooser”应用程序,它将提供网络上当前接受 XDM 连接的检测到的主机列表。
Chooser*geometry: 700x500+300+200 |
显式列表:可以在 Xaccess 文件中为 chooser 提供主机列表,如下所示
%hostlist emma alex liam abigail * CHOOSER %hostlist |
请注意,也可以将本地主机包含在 chooser 已知的机器列表中。 但是,应将 XDM 配置为不在本地控制台显示器上启动。 登录应始终通过对本地 chooser 应用程序的间接查询来执行,然后本地主机应与网络上的任何其他主机一起显示。
KDE 和 Gnome 都有自己的应用程序来替换标准 XDM。 它们做类似的事情,并且有充分的文档记录。 就提供远程 X 访问而言,应用程序的配置文件中有一个设置可以启用 XDMCP 支持。
以下内容必须在 KDM 配置文件中设置(Mandrake 8.1 系统的 /usr/share/config/kdm/kdmrc)
[Xdmcp] Enable=True |
以下内容必须在 GDM 配置文件中设置 (/etc/X11/gdm/gdm.conf)
[Xdmcp] Enable=True |
0=Standard |