如何以普通用户身份运行X Windows程序?

时间:2020-01-09 14:16:43  来源:igfitidea点击:

Microsoft Windows XP具有runas命令,该命令允许用户以与当前登录所提供的用户不同的权限运行特定的工具和程序。

Linux和其他类似UNIX的操作系统出于相同目的提供su或sudo命令。
但是,对于X程序,su/sudo命令不是很有用。
例如,当您以普通用户身份登录时,需要以root用户身份运行X窗口应用程序。
如果我按以下方式运行应用程序:

$ su 
Password
# xeyes

它将返回错误:

(program:15082): Gtk-WARNING **: cannot open display: OR ** WARNING ** cannot open display

但是,KDE和Gnome都提供了解决此问题的工具。

方法1:如果您使用的是KDE,则在shell提示符下使用以下命令:

kdesu command-name

$ kdesu xeyes

方法2:如果您使用的是Gnome,则在shell提示符下使用以下命令:

$ gksuexec

或使用GUI本身,单击应用程序>系统工具>选择以其他用户身份运行

方法3:创建runas别名,如下所示:

$ alias runas='su -c $@'

将上述别名添加到您的bash启动脚本中

$ echo "alias runas='su -c $@'" >> .bash_profile

现在,您可以按以下方式使用别名来启动任何x程序

$ runas program-name
$ runas xeyes

方法4:旧方法问题出在两个环境变量DISPLAY和XAUTHORITY。

解决方法:您需要正确设置它们,才能以root用户身份以普通用户身份运行X Windows程序。
那么如何解决这个问题呢?
只需将这两个变量设置为指向当前已登录用户的环境变量即可。
让我们假设您当前以Hyman用户身份登录。

步骤1成为超级用户

Hyman@debian:~$ su 
debian:~#

步骤2设定变量

# export DISPLAY=0:0
# export XAUTHORITY=/home/Hyman/.Xauthority

步骤3以root用户身份执行X程序

# xeyes