linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 专题栏目 > LPI >
栏目导栏
  LPI
  cisco
资料搜索
热门文章
·LPI 101认证学习1-硬件和体系结
· LPI 101认证学习7-Linux安装与
·LPI 101认证学习26-X Window 系
·LPI 101认证学习8-Linux安装与
·LPI 101认证学习15-GNU和UNIX命
·LPI 101认证学习28-X Window 系
·LPI 101认证学习10-Linux安装与
·LPI 101认证学习11-GNU和UNIX命
·LPI 101&102 2007年考试大纲
·LPI 101认证学习18-设备、Linu
·LPI 101认证学习27-X Window 系
·LPI 101认证学习14-GNU和UNIX命
·LPI 101认证学习12-GNU和UNIX命
·LPI考试流程
· LPI 101认证学习9-Linux安装与
最新文章
·LPI 101&102 2007年考试大纲
·LPI 302中文考试大纲
·LPI 301中文考试大纲
·LPIC-3认证考试内容最终确定
·LPI 101认证学习28-X Window 系
·LPI 101认证学习27-X Window 系
·LPI 101认证学习26-X Window 系
·LPI 101认证学习25-设备、Linu
·LPI 101认证学习24-设备、Linu
·LPI 101 学习指南:一.安装网络
·LPI 101 学习指南:一.安装 本地
· 安装光盘介绍(The Installati
·LPI 101认证学习23-设备、Linu
·LinuxWorld上海开展 LPI与众多
·LPI 和 Canonical 联合发布Ubu
Google
 
LPI 101认证学习28-X Window 系统之定制窗口管理器
[ 作者:  加入时间:2006-12-13 11:21:17  来自:Linux联盟 ]

79wLinux联盟
8. 窗口信息和配置79wLinux联盟

334530725fd95b4ae1b4c50cb1502666.gif79wLinux联盟
除了图形工具之外,还有一个
 gconftool-2 命令行程序,用于询问并更新 GNOME 配置信息。详细内容请参看上面介绍的 System Administration Guide

KDE 定制

KDE 是利用对非 ASCII 字符使用 UTF-8 进行编码的文本文件进行配置的。与 GNOME 一样,KDE 也有很多不同的配置文件。如果在配置树的不同部分中存在多个名字相同的文件,那么可以对这些文件中的值进行合并。系统值位于 $KDEDIR/share/config 树中,其中 $KDEDIR 可能是 /etc/kde3/kdm/ 或其他地方。例如,在一个 SUSE SLES8 系统上,这位于 /etc/opt/kde3/share/config。用户特有的定制位于用户主目录的 .kde/share 树中。 

配置文件包含一组或多组使用方括号括起来的名字,后面是关键字/值对。关键字可以包含空格,使用等号与值分隔开来。konqueror 浏览器的配置文件如清单 23 所示。

79wLinux联盟
清单 23. konqueror 浏览器使用的 KDE 配置文件

 

    

[HTML Settings]

 

[Java/JavaScript Settings]

ECMADomainSettings=localhost::Accept

JavaPath=/usr/lib/java2/jre/bin/java

EnableJava=true

EnableJavaScript=true

 

[EmbedSettings]

embed-text=true

embed-audio=false

embed-video=false

 

[Reusing]

MaxPreloadCount=1

PreloadOnStartup=true

 

这些配置文件可以手工编辑。大部分系统可能会包括一个图形化编辑工具,例如 KConfigEditor 或为发行版定制的工具,例如 SUSE Control Center

不同的 xterm

通常 xterm 程序都是与图形桌面一起安装的,其功能非常强大;但是也使用了很多系统资源。如果正在运行的系统在单个处理器上运行了很多 X 终端客户机,可能希望考虑使用一个轻量级的终端。rxvt  atermaterm 是在 rxvt 基础上构建的)就是两个这样的终端。它们都是 VT102 的模拟器,通常缺省情况下并不安装这两个工具,因此需要手工安装它们。

所需要的库

到现在为止,您已经认识到有很多不同的库和工具包可以用于 X 应用程序。那么如何确保已经安装了正确的库呢? ldd 命令可以显示任何应用程序的库依赖性关系。在最简单的用法中,ldd 接受可执行文件名作为参数,并打印运行程序所需要的库。注意,ldd 不会自动搜索 PATH 设置的路径,因此通常需要给出路径(相对路径或绝对路径)和程序名,除非程序就在当前目录中。清单 24 显示了在上面看到的这 3 个终端模拟器的库依赖性关系。每个程序依赖的库的个数可以提供有关它们的相对系统需求的线索。

79wLinux联盟
清单 24. xtermaterm rxvt 所依赖的库

 

    

    root@pinguino:~# ldd `which xterm`

        linux-gate.so.1 =>  (0xffffe000)

        libXft.so.2 => /usr/X11R6/lib/libXft.so.2 (0xb7fab000)

        libfontconfig.so.1 => /usr/X11R6/lib/libfontconfig.so.179wLinux联盟
(0xb7f88000)

        libfreetype.so.6 => /usr/X11R6/lib/libfreetype.so.6 79wLinux联盟
(0xb7f22000)

        libexpat.so.0 => /usr/X11R6/lib/libexpat.so.0 (0xb7f06000)

        libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0xb7eff000)

        libXaw.so.7 => /usr/X11R6/lib/libXaw.so.7 (0xb7ead000)

        libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0xb7e99000)

        libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0xb7e4f000)

        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0xb7e46000)

        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0xb7e30000)

        libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0xb7e22000)

        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0xb7e15000)

        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0xb7d56000)

        libncurses.so.5 => /lib/libncurses.so.5 (0xb7d15000)

        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7be6000)

        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7be3000)

        /lib/ld-linux.so.2 (0xb7fc3000)

root@pinguino:~# ldd `which aterm`

        linux-gate.so.1 =>  (0xffffe000)

        libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0xb7f81000)

        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0xb7ec1000)

        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0xb7eb9000)

        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0xb7ea3000)

        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d75000)

        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7d72000)

        /lib/ld-linux.so.2 (0x80000000)

root@pinguino:~# ldd `which rxvt`

        linux-gate.so.1 =>  (0xffffe000)

        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0xb7eb0000)

        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d81000)

        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7d7e000)

        /lib/ld-linux.so.2 (0x80000000)

导出显示屏幕

X 显示屏幕的名称格式为 hostname:displaynumber.screennumber。对于在 PC 工作站上运行的 Linux 来说,对于一个屏幕通常都只有一个显示屏幕。在这种情况中,displayname 就可以忽略,通常都会忽略,这样显示屏幕就被称作 :0.0DISPLAY 环境变量通常被设置为显示名,这样就可以使用 echo $DISPLAY 命令来显示其设置了。根据系统的不同,如果使用 su - 切换成了另外一个用户,这可能设置了这个变量,也可能没有设置这个变量。在这种情况中,可能需要设置并导出 DISPLAY 变量,如清单 25 所示。在这个清单中可以看到,在切换成 root 之后试图启动 xclock 程序,但是这次尝试失败了,因为 DISPLAY 环境变量还没有设置。即使设置了 DISPLAY 变量,可能仍然无法使用这个显示屏幕,因为需要授权才能使用它。

79wLinux联盟
清单 25. 尝试启动 xclock

 

ian@lyrebird:~> whoami

ian

ian@lyrebird:~> echo $DISPLAY

:0.0

ian@lyrebird:~> su -

Password:

lyrebird:~ # echo $DISPLAY

 

lyrebird:~ # xclock

Error: Can't open display:

lyrebird:~ # export DISPLAY=:0.0

lyrebird:~ # echo $DISPLAY

:0.0

lyrebird:~ # xclock

Xlib: connection to ":0.0" refused by server

Xlib: No protocol specified

 

Error: Can't open display: :0.0

lyrebird:~ # export XAUTHORITY=~ian/.Xauthority

lyrebird:~ # xclock

lyrebird:~ # ls -l ~ian/.Xauthority

-rw-------  1 ian users 206 Feb 18 16:20 /home/ian/.Xauthority

 

下面让我们来看一下接下来要发生什么。在这种情况中,用户 ian 登录到系统中,他的 DISPLAY 环境变量被设置为 :0.0,就像我们期望的一样。当用户 ian 切换成用户 root 之后,系统并没有设置 DISPLAY 环境变量,试图启动 xclock 就会失败了,因为应用程序不知道使用哪个显示屏幕。

因此后面这个用户 root 就需要设置 DISPLAY 环境变量,并导出这个变量,这样从这个终端窗口启动的其他 shell 程序就可以使用这个变量了。注意,设置和导出这个环境变量并不需要前面的 $ 符号,而显示或以其他方式来使用这个变量的值则需要前面这个 $ 符号。还要注意,如果 su 命令忽略了 - 号(减号),那么 DISPLAY 环境变量就会设置成与用户 ian 相同的值。然而,即使设置了这个环境变量,xclock 启动时仍然会失败。

第二次失败的原因在于 X 的客户机/服务器性质。尽管 root 是在这个系统上的唯一一个显示屏幕的窗口中运行的,但是显示屏幕实际上是由最初登录到系统中的用户拥有的,在本例中是 ian。接下来,让我们了解一下 X 授权的知识。

授权方法

对于在 Linux 系统上的本地显示来说,授权通常都依赖于一个称为 MIT-MAGIC-COOKIE-1 的东西,它通常在每次重新启动 X 服务器时就会重新生成。用户可以从自己主目录中的 .Xauthority 文件中提取 这个 cookie(使用 xauth extract 命令),并把这个 cookie 交给另外一个用户,从而使用 xauth merge 命令将其合并 到该用户的 .Xauthority 文件中。另外,用户可以使用 xhost +local: 命令授权其他用户访问本地系统。

XAUTHORITY

另外一个选择是,将 XAUTHORITY 环境变量设置成包含适当 MIT-MAGIC-COOKIE-1 文件的位置。在切换成 root 用户时,很容易实现这种功能,因为 root 可以读取其他用户所拥有的文件。实际上,这就是在清单 25 中所做的事情,因此在设置并将 XAUTHORITY 导出到 ~ian/.Xauthority 之后,root 现在就可以在桌面上打开图形窗口了。我们说过,这与 Red Hat 系统上的情况不同。在 Ret Hat 系统上使用 su 切换成 root 用户与在 SUSE 系统上有所不同,其中显示屏幕的设置是自动完成的。

因此如果切换成另外一个非 root 用户会发生什么情况呢?从清单 25 中您会注意到, 用户 ian .Xauthority 文件只允许这个用户进行读写操作。即使是相同组中的其他成员也无法读取这个文件,一般来讲都会希望是这样,除非想让其他人打开一个程序,它会占据您的屏幕并妨碍您做其他事!因此,如果从 .Xauthority 文件中提取出 MIT-MAGIC-COOKIE-1,那么就必须使用一些安全的方法将其提供给您信任的非 root 用户。另外一种方法是使用 xhost 命令将权限授予特定主机上的所有用户。

xhost 命令

由于安全地将一个 MIT-MAGIC-COOKIE-1 cookie 传递给其他用户非常困难,您可能会发现对于只有单个用户的 Linux 系统来说,xhost 要更容易使用,不过相对于 xhost 命令,我们更倾向于使用 xauth 方法。然而,记住 X Window 系统 是一个网路产物,因此要确保不会意外地给用户授予了更多权限,否则就开放了自己的系统,允许任意的网络用户在您的桌面上打开窗口。

要授予本地用户在显示屏幕(:0.0)上面打开应用程序的权限,用户 ian 可以使用 xhost 命令。在桌面上打开一个终端窗口并输入下面的命令:

xhost +local: 

注意最后的冒号(:)。它允许同一个系统上的其他用户连接到 X 服务器上并可以打开窗口。由于这是一个单用户系统,这就意味着可以 su 成任意的非 root 用户,然后可以启动 xclock 或其他 X 应用程序。

也可以使用 xhost 对远程主机进行授权。除非是在一个具有严格限制的网络中,否则这通常不是什么好主意。如果正在使用防火墙,可能还需要在防火墙上启用适当的端口。 

从另一个系统上使用 X 应用程序的另一个选择是使用 secure shellssh)来连接系统。如果缺省的 ssh 客户机配置没有启用 X 转发,那就可能需要在 ssh 命令后面加上 -X 参数。ssh 服务器还需要启用 X 转发。通常,远程使用 X 比使用 xhost 让系统允许任意连接更加安全。

有关使用 xauth  xhost 命令的更详细内容,可以使用命令 info xauthman xauthinfo xhost  man xhost 查看适当的在线手册来了解。如果对 X 连接的安全性感兴趣,可以从 Xsecure 的手册页开始入手。 

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
分页:1 2 [3]
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·LPI 101认证学习27-X Window 系统第二节设置显示管理器  (2006-12-12 11:55:54)
 ·LPI 101认证学习26-X Window 系统第一节安装和配置X windows  (2006-12-11 13:41:09)
 ·LPI 101认证学习25-设备、Linux 文件系统与文件系统层次标准(FHS)之查找和放置系统文件  (2006-12-09 10:55:57)
 ·LPI 101认证学习24-设备、Linux 文件系统与文件系统层次标准(FHS)之链接  (2006-12-08 10:59:05)
 ·LPI 101认证学习23-设备、Linux 文件系统与文件系统层次标准(FHS)之管理文件所属权  (2006-12-07 11:40:51)
 ·LPI 101认证学习22-设备、Linux 文件系统与文件系统层次标准(FHS)之文件权限和访问控制  (2006-12-06 12:18:09)
 ·LPI 101认证学习21-设备、Linux 文件系统与文件系统层次标准(FHS)之硬盘配额  (2006-12-05 11:00:17)
 ·LPI 101认证学习20-设备、Linux 文件系统与文件系统层次标准(FHS)之挂载和卸载文件系统  (2006-12-04 12:01:33)
 ·LPI 101认证学习19-设备、Linux 文件系统与文件系统层次标准(FHS)之文件系统完整性  (2006-12-01 11:38:56)
 ·LPI 101认证学习18-设备、Linux 文件系统与文件系统层次标准(FHS)之创建分区和文件系统  (2006-11-30 13:31:58)