Chinaunix首页 | 论坛 | 博客
  • 博客访问: 537210
  • 博文数量: 146
  • 博客积分: 5030
  • 博客等级: 大校
  • 技术积分: 1820
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-16 20:57
文章分类

全部博文(146)

文章存档

2011年(1)

2010年(4)

2009年(30)

2008年(111)

我的朋友

分类:

2008-07-16 17:06:21

debian默认不能用root启动x,也不能su后启动x程序,安装如永中office比较麻烦,所以查查查!!

X 下获取 root 权限

如果运行 GUI 程序时需要 root 权限,请用下面的步骤在用户的 X 服务器上显示程序输出。千万不要直接使用 root 帐号启动 X 服务器以避免承担不必要的安全风险。

以普通用户身份启动 X 服务器,开一个 xterm控制台窗口,执行:

     $ XAUTHORITY=$HOME/.Xauthority
$ export XAUTHORITY
$ su root
Password:*****
# printtool &

非 root 用户以 su方式运用该技巧时,要确保该非 root 用户所在用户组对 ~/.Xauthority文件有读权限。

想要系统自动执行该命令序列,请在用户帐号下创建 ~/.xsession 文件,编辑文件如下:

     # This makes X work when I su to the root account.
if [ -z "$XAUTHORITY" ]; then
XAUTHORITY=$HOME/.Xauthority
export XAUTHORITY
fi
unset XSTARTUP
# If a particular window/session manager is desired, uncomment following
# and edit it to fit your needs.
#XSTARTUP=/usr/bin/blackbox
# This starts x-window/session-manager program
if [ -z "$XSTARTUP" ]; then
if [ -x /usr/bin/x-session-manager ]; then
XSTARTUP=x-session-manager
elif [ -x /usr/bin/x-window-manager ]; then
XSTARTUP=x-window-manager
elif [ -x /usr/bin/x-terminal-emulator ]; then
XSTARTUP=x-terminal-emulator
fi
fi
# execute auto selected X window/session manager
exec $XSTARTUP

接着在用户的 xterm窗口中运行 su(不是su -)。现在从该 xterm启动的 GUI 程序就可以在该用户的 X window 环境中显示以 root 权限运行的程序输出。只要执行了默认的 /etc/X11/Xsession,就可以使用该方法。如果用户使用 ~/.xinitrc~/.xsession 来配置自定义环境,需要将上面提到的环境变量 XAUTHORITY 加到这些脚本中去。

还有一种方法,sudo可用于自动执行上面的命令序列:

     $ sudo xterm
... 或
$ sudo -H -s

这时 /root/.bashrc中应包含:

     if [ $SUDO_USER ]; then
sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge -
fi

即使对那些 home 目录位于 NFS 上的用户,它也能正常工作。因为 root 不用读 .Xauthority文件。

还有一些用于该目的的专用软件包:kdesugksugksudognome-sudoxsu。其它方法也可以达到同样的目的:如在 /root/.Xauthority和相应用户文件之间创建一个符号链接;使用 脚本;或对 root 初始化脚本执行“xauth merge ~USER_RUNNING_X/.Xauthority”。

阅读(4201) | 评论(0) | 转发(0) |
0

上一篇:有个mm说debian桌面特殊

下一篇:数据库

给主人留下些什么吧!~~