`
yanghuidang
  • 浏览: 951011 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多


设置xdm

Saturday, September 01, 2001 by Ron Hume
翻译: Fenng Fdh@163.net

2001.12.23

xdm 提供了一个管理X任务的有用的途径,方便而且灵活。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

你曾经想远程访问你的工作站的桌面环境吧?如何在一台服务器上面访问你的台式机?这正是我最近需要解决的问题。我负责安装并且管理一组Linux服务器。在经过好几次为了不同的原因(绑定服务,键盘代码,等等)我要到实验室访问图形终端之后,我发现真的需要寻找一个解决方案允许我通过我的工作站访问不同服务器上面的X桌面环境。

有的人可能认为用来处理远程任务的标准X工具足以解决我的问题--就像这样:
----------------------------------
telnet host1
export DISPLAY=mywkstn:0
gnome-session
(或者是其他的任务管理器)
----------------------------------

可是,我要找的解决方案是要提供比这些基本功能更多的东西。关于认证,会话管理等等有一些相应的缺陷,需要一些X工作机制的知识。例如,当使用远程客户端的时候我常常会忘记输入 xhost +host1当我对一个linux新手解释xhost的认证方案的时候,我常看到他一脸迷惑。既然在一个开发项目中没必要教开发者有关X的基础知识,我要寻找一个解决方案满足所有这些要求。需要更容易管理,更加自动化,更容易为Linux的开发新手所使用。

有两个解决方案可以使我管理X会话更加容易。第一个是我所选择的X显示管理器(X display manager)或者说xdm,另一个流行的解决方案是vnc。我选择xdm而不是vnc出于两点原因。

第一,vnc要有个服务端的守护进程,为每个共享的桌面运行。第二,我已经有X服务器的软件安装在所有的工作站上,不想再添加额外的客户端软件了。其他的选择是kdm和gdm,分别是 KDE 和 GNOME软件包的一部分。


X 基础

X是用在大多数UNIX系统中的图形支持系统。如果你在你的Linux机器上使用GNOME或者KDE的话,你就正在使用X系统。它由X联盟(www.X.org)定义并维护。大多数的Linux用户使用的都是由XFree86 项目 (www.xfree86.org)提供的X Window系统的实现。xdm 是一个显示管理器,提供了灵活的任务管理功能。然而xdm通常被认为是“GUI的登陆屏幕,可以自动启动我的X任务”,我们会看到实际上它要更为强大。

在X的世界中,术语“客户“和“服务器“可能会有些迷惑人。明确地说,X服务器控制键盘,鼠标和显示资源的应用,客户端也是个应用,是制造请求,从服务器来运行它自己的行为(如:显示一个带有特定字符的窗口)。这和我们认为的工作站作为客户端运行的应用有些许的差异。

xdm 使用X联盟的X显示管理控制协议,XDMCP,来和X服务器通信。它允许X服务器从运行xdm服务的服务器上获得会话服务。有3类的请求可以被X服务器发送:

Direct(直接的) --请求指定的主机直接显示一个登陆屏。
Broadcast(广播的)--给网络上的所有主机广播一条消息,第一个应答的提供这个登录服务。
Indirect(间接的) --联系一个指定的运行xdm的主机并询问是否知道哪个主机可以通信。

xdm 服务器可以实现一个可用的可以管理X会话的服务器列表。
X server 偶尔会结束与所选的用来得到登陆进程服务的主机的直接通信。

发明xdm 的一个最初的原因是要允许管理X终端。这些设备基本上就是显示器,键盘,和鼠标并带有嵌入的X服务器软件 ;所有的智能都在网络上的服务器上。xdm
被用来“推“登录屏幕并管理这些设备的会话。若干年前,这些东西很流行,因为访问UNIX工作站受到限制。一个用户如果想访问图形工作站的话,要不是足够幸运的拥有一台UNIX工作站就需要一套这样的设备。后来这些设备变得有些过时,并逐渐被运行X服务器软件的个人电脑Linux 和其他的 Unices (Solaris x86, xBSD,
etc.)或者是Windows(运行Hummingbird Exceed或类似的软件)代替 。

当使用xdm管理这些X任务的时候在设置上有些费劲儿。乍一看,可能会出现这样的情况:如果你设置xdm (为了使用 XDMCP 的优点), 没看到本地的 X 服务器启动
(i.e.,当xdm启动的时候控制台进入图形模式),或者,如果你在xdm种禁止了本地的显示并使用startx,它不会让你访问选择器。这里描述的设置允许任何的 XDMCP 客户访问 Linux 服务器桌面环境(当然了,影响了X的安全)。它也描述了一种方法,设置xdm 可以得到本地的和其他服务器上的桌面。

xdm 也带来管理安全和访问控制的问题,不过这超出了这篇文章的范围。xdm
应该只用在可控制的环境中。另外,接入端口 177 应该在所有的防火墙上锁定。如果你对X的安全问题感兴趣。下面的手册页是个不错的起点:

xdm(1), xauth(1), Xsecurity(7), lbxproxy(1)--Low Bandwidth X proxy, xfwp(1)--X Firewall Proxy, 和(1) sshd(8) ,尤其是关于X11
端口转发的部分。


设置 xdm
xdm 的设置有些难度; 下面是为了达到特定目的唯一的一种方式。

在我的 Red Hat 7 系统上, xdm 在 /etc/X11/xdm。它的主要设置文件是xdm-config (见列表1):
--------------------------------------------------
列表1: xdm-config
--------------------------------------------------
-----------------------------------------------------------------
DisplayManager.errorLogFile:/var/log/xdm-errors
DisplayManager.pidFile: /var/run/xdm-pid
DisplayManager.keyFile: /etc/X11/xdm/xdm-keys
DisplayManager.servers: /etc/X11/xdm/Xservers
DisplayManager.accessFile: /etc/X11/xdm/Xaccess
DisplayManager.willing: su nobody -c /etc/X11/xdm/Xwilling
DisplayManager*resources: /etc/X11/xdm/Xresources
DisplayManager*session: /etc/X11/xdm/Xsession
DisplayManager*authComplain: false
! Comment out this line if you want to manage
! X terminals with xdm
! SECURITY: This means we will be listening on
! port 177 for XDMCP CHOOSER requests.
#DisplayManager.requestPort: 0
------------------------------------------------------------------

xdm的配置文件是 X resources 的格式。 这些 resources 用于设定不同文件的的位置。我们对 servers 指定的文件感兴趣,还有accessFile和resources。 爱冒险的人会对 session 和DisplayManager._X.setup感兴趣,那里的X是显示号。

注意 DisplayManager.requestPort:0 被注释掉了。 它指定哪个 UDP
端口用来监听XDMCP请求。 如果设置为0(它的默认值), XDMCP的请求被忽略,并且xdm 只管理本地的显示(看Xservers 文件)。我们把它注释掉,这样 xdm
就会监听默认端口(USP 端口177 )。

我的 Xservers 文件大致如下:
------------------------------
#:0 local /usr/X11R6/bin/X
------------------------------
如果这一行没被注释掉的话,我就会每次在启动 xdm 的时候得到一个图形化的登录屏幕。也即它通过运行命令 /usr/X11R6/bin/X会在显示器(diaplay)0上面启动并管理一个本地的 X 服务器。我们要做的是选择我们要连接的主机。我们使用Xaccess文件实现了这个:

--------------------------------------------
# 任何的间接主机都可以得到一个选项
* CHOOSER BROADCAST
#
# 如果你想设定每个终端可见的主机的集合
# 注释掉这些行
#(并注释掉上面的 CHOOSER行)
# 还要编辑 %hostlist 行
#
#%hostlist host-a host-b
#* CHOOSER %hostlist #
-------------------------------------------

虽然Xaccess是个非常灵活的工具,但是我们将只用它来启动选择器(间接的模式)。选择器是个小的X应用,显示网络上可用主机的列表,允许我们选择所要连接的一个。我喜欢使用BROADCAST选项因为新的主机可以在列表中自动显示。有的人可能喜欢特定命名某主机,如上面显示的使用%hostlist宏。这个方法有的时候,尤其是在一个大一些的网络上,在那里广播没有到达所有的想要的主机时很有必要。如果你对更好的控制层次感兴趣的话,你可以使用服务器的列表代替BROADCAST,这将允许你直接指定可用的主机列表。

如果你想用不同的方式设置 xdm 处理来自不同 X servers 的请求。你可以指定主机名或者是主机列表来代替 * 。 如下面的例子。

下面的行告诉 xdm 自己处理所有来自host-a,host-b或者host-c的请求(直接模式):

-----------------------------------------
host-a
host-b
host-c
-----------------------------------------

要让 xdm 从host-a发送间接请求给 server-a 或者 server-b,输入:

-----------------------------------------
host-a server-a server-b
-----------------------------------------

也可以写成这样

-----------------------------------------
%hostlist server-a server-b
host-a %hostlist
-----------------------------------------

你可以设定xdm使用选择器(chooser)处理间接请求(我们首选的方法)。在我们的下个例子中,host -a 得到一个包括所有应答广播的主机的列表的选择窗口,然而其他人只能得到被hostlist指定的列表:

-----------------------------------------
%hostlist server-a server-b
host-a CHOOSER BROADCAST
* CHOOSER %hostlist.
-----------------------------------------

最后,要完成基本的功能,我们可以看看 Xresources 文件。
我的设置取默认值了,不过有的人可能想定制它的外观。在这个文件中你可以改变颜色,字体和其他的类型选项。我发现chooser*geometry 资源是最有用的,因为它允许你设定选择窗口的大小。你还可以在xdm-config 中设置些交互管理功能,像 DisplayManager.errorLogFilelogfile 会设定 log 文件的位置。这个log 文件包含 xdm , Xsetup , Xstartup , Xsession 和Xreset脚本的标准错误输出。

以上的登录进程完成后, xdm 启动在session resource中指定的脚本文件。它允许定制X会话的行为。管理员可能最想检验Xsession 脚本了。用户会想生成一个 $HOME/.xsession 或者是$HOME/.Xclients 文件 来定制会话管理器的行为(i.e.,启动一个窗口管理器,一个时钟等等)


测试我们的设置
为了测试我们的设置,我们要找到 X (可以用which X命令)。在我的系统上,位置是/usr/X11R6/bin/X。

测试直接模式:

-----------------------------------------
/usr/X11R6/bin/X -query 远程的xdm主机
-----------------------------------------

间接的模式输入:

-----------------------------------------
/usr/X11R6/bin/X -broadcast
-----------------------------------------

如果使用的是带有选择器的间接模式,输入:

-----------------------------------------
/usr/X11R6/bin/X -indirect 远程的xdm主机
-----------------------------------------

一旦这些正常,我可以生成 /etc/rc.d/init.d 脚本自动启动和停止 xdm
服务。看一下《用chkconfig 管理init 脚本》的文章(发表在linux杂志2001年四月),可以得到更多信息。 然后,我生成了如下的脚本以方便我的用户。在他们的工作站上,我生成了一个叫 /usr/bin/X11/startx.xdmcp的脚本。 如果主机叫 ``wkstn1'',那么这个文件就是这样:

-----------------------------------------
#!/bin/sh
/usr/X11R6/bin/X -indirect wkstn1
-----------------------------------------

主机名就是xdm 服务器的名字(在我这里工作站既是xdm server又是X server)

接下来,我输入:

---------------------------------------------------
mv /usr/bin/X11/startx /usr/bin/X11/startx.original
chmod 755 /usr/bin/X11/startx.xdmcp
ln -s /usr/bin/X11/startx.xdmcp /usr/bin/X11/startx
---------------------------------------------------

这允许那些想登录进他们的工作站输入startx就得到一个图形控制台的用户,得到一个可用主机的列表来登录(包括他们自己的工作站)


结论

回顾一下,我们设置了网络上的服务器和工作站使用 xdm ,间接模式的XDMCP和选择器以便允许用户选择他们想用来管理的X会话。这是个便于管理的解决方案
,允许对X会话的完美控制(译者:有些夸张了),它也容易使用。提供给用户一个可用主机的菜单,管理他们的X会话。

如果需要从windows这样的平台进行这样的访问,并且你不想购买或是在你的工作站上安装一个X服务器的话, 对你来说,vnc 是个不错的选择。

整理后记:
此翻译文档以前发布的,现在加以整理统一放到CSDN上做个备份吧,呵呵


分享到:
评论

相关推荐

    全程图解windows远程桌面控制linux参考.pdf

    但设置xdm可以得到本地的和其他服务器上的桌面了。 配置xdm的步骤如下: 1. 修改/etc/X11/xdm/Xaccess文件,找到下面的语句:# * #any host can get a login window 去掉最前面的#号。 2. 修改/etc/X11/gdm/gdm....

    XDM 2018 高速下载工具 Xtreme Download Manager

    6. **计划下载**:用户可以设置定时下载任务,以便在特定时间自动开始或停止下载,避免在高峰时段占用过多带宽。 7. **集成浏览器**:XDM 可以无缝集成到主流浏览器(如Chrome、Firefox等),在浏览器中点击下载...

    xdm-2018-x64.7z

    安装完毕后,可以在应用程序列表中找到XDM的图标,启动后进行基本设置。在首选项中,你可以配置下载路径、连接速度限制、代理服务器以及断点续传的保存路径等。XDM还支持集成到各种浏览器中,如Firefox、Chrome等,...

    xdm dsp api server

    - **配置**:提供了有关如何设置模块参数的指导。 #### 6. **打包** - **目标代码**:讲解了如何编译和封装算法为二进制形式。 - **头文件**:介绍了如何管理和分发包含算法接口定义的头文件。 - **调试与发布版本...

    GBase XDM Cluster 部署手册.docx

    【GBase XDM Cluster 知识点详解】 GBase XDM Cluster是由南大通用开发的一款极速内存数据库管理系统,专门设计用于高效处理大量数据。该系统由四个主要组件构成: 1. **GBase XDM Cluster Server**:数据服务器,...

    Xmanager远程登陆Linux系统后配置Xdm

    如果想让Xdm在系统启动时自动启动,可以在`/etc/rc.d/rc.local`(对于较旧的系统)或`/etc/systemd/system/multi-user.target.wants/xdm.service`(对于使用systemd的现代系统)文件的末尾添加`/etc/X11R6/bin/xdm &...

    xdm远程连接linux所需的RPM包

    安装这个包后,xdm会被设置为默认的图形登录管理器,允许用户通过图形界面登录到系统。 3. **libXpm-3.5.10-2.el6.x86_64.rpm**:这是一个处理X11位图(Xpm)文件的库。Xpm是一种简单的图像格式,常用于创建图标和...

    UIS891xDM_Programming_Guide V1.1.rar

    这包括设置系统时钟、内存映射、中断服务以及电源管理。理解这些内容对于高效且可靠地运行应用程序至关重要,因为错误的配置可能导致设备性能下降或完全无法工作。 固件开发是编程指南的核心部分,它将详细介绍如何...

    XDM.zip

    "XDM.zip"这个压缩包文件的名称暗示了它可能与XDM,即eXtreme Download Manager有关。XDM是一款流行的下载管理器,尤其在技术爱好者和互联网用户中受到欢迎,因为它能提升下载速度、支持断点续传以及多线程下载。接...

    XDM强大下载器,音频,视频,软件....

    它能识别网页中的下载链接,自动检测并应用最佳的下载设置,如选择最快的镜像源,避免了手动寻找和验证下载链接的麻烦。同时,XDM还有内置的病毒扫描功能,可以在下载完成后对文件进行安全检查,确保用户下载的软件...

    UIS891xDM_Programming_Guide-1.1.rar

    3. **软件开发环境**:描述如何设置和配置开发环境,包括必要的开发工具、编译器、调试器以及相关的驱动程序安装步骤。 4. **API参考**:列出UIS891xDM支持的函数库和API接口,详细解释每个函数的功能、参数、...

    delphi ocr插件 by xdm

    例如,`xdm.cfg`、`xdmPlug.cfg`和`xdmocr.cfg`可能包含了OCR插件的初始化设置、识别精度调整、语言选择等选项。`Project1.cfg`可能与项目配置有关,而`Unit1.ddp`和`Unit1.dfm`则可能是Delphi项目的工程文件和界面...

    开源多平台下载工具 Xtreme Download Manager 7.2.11.zip

    Xtreme Download Manager 中文版是一个功能强大的工具,可以将下载速度提高到 500%,可以保存 YouTube,DailyMotion...Xtreme Download Manager 中文设置: Tools – Language – 选择简体中文,确定后重启软件即可。

    SuSE Enterprise Linux 10下面启动xdmcp

    设置 xdm 服务在启动级别 5 自启动:** 为了确保每次系统启动时 xdm 服务都会自动启动,可以在 `/etc/rc5.d/` 目录下创建相应的符号链接指向 `/etc/init.d/xdm`。例如: ```bash sudo ln -s /etc/init.d/xdm /etc...

    移植EMCV到DM6467(4)-xDM算法封装

    7. 编译与配置:移植过程中要确保examples能够正确编译,这需要正确设置xdcpath.mak文件,指定各组件的安装路径和编译目标平台。这是为了确保编译器能够找到所有必要的组件,并生成适用于目标平台的可执行文件。 8....

    信捷xd系列PLC实现两轴直线插补

    为了实现自定义的方向控制,我们还需要设置相应的方向信号,确保丝锥在正确的位置上行进和旋转。 在实际应用中,"两轴联动丝锥案例.xdp"文件可能是包含完整程序和配置信息的工程文件。通过打开和分析这个文件,我们...

    用Xmanager远程LINUX的设置.pdf

    Xmanager 远程 LINUX 设置 在本文中,我们将讨论如何使用 Xmanager 远程连接 LINUX 服务器,包括配置 Xmanager、修改 LINUX 配置文件和防火墙设置等。 修改 LINUX 配置文件 要允许远程连接,需要修改 several ...

    用Windows登录Linux服务器远程桌面的方法

    XDM的配置涉及到多个步骤,包括编辑`/etc/X11/xdm/xdm-config`,设置显示管理器的行为;配置`/etc/X11/xdm/Greeting`以定制登录提示;以及可能需要配置防火墙规则,允许XDMCP(X Display Manager Control Protocol...

    ahome-xdm:EasyXDM 的 Java(GWT) API (https

    【描述】中的信息虽然简略,但我们可以推断ahome-xdm项目提供了Java和GWT开发者一个接口,使得他们能够利用EasyXDM的功能,无需直接操作JavaScript代码。GWT是一种允许开发者用Java编写Web应用的工具,然后将其编译...

Global site tag (gtag.js) - Google Analytics