当 su 为另一个用户时将 $DISPLAY 环境变量设置为

当 su 为另一个用户时将 $DISPLAY 环境变量设置为

我不太熟悉 Linux,更不用说 X 和显示/窗口管理器之类的东西了。

我正在尝试运行 Oracle Enterprise Manager 的 GUI 安装程序,但是它对 DISPLAY 环境变量的值提出投诉,并且无法加载 GUI。

我以 root 身份登录,然后启动终端,可以看到变量的值为hostname:0。我需要以 Oracle 身份运行安装程序,因此我su - oracle使用以下命令将变量设置为相同的值export DISPLAY=hostname:0

我假设有某种权限机制阻止了它的工作,所以我想知道我可以使用 Oracle 的 DISPLAY 环境变量来允许安装程序运行吗?是否必须以 Oracle 身份登录并直接启动终端,还是可以在 su 之后完成?

答案1

您需要配置X11 身份验证MIT-MAGIC-COOKIE。

您可以使用验证配置它:

xauth list $DISPLAY # To list X11 cookies
sudo -iu oracle
# Import the cookies one by one
xauth add laptop.example.org/unix:  MIT-MAGIC-COOKIE-1  someHexString

或者:

xauth extract - $DISPLAY | ssh oracle@localhost xauth merge -

或者设置$XAUTHORITY环境变量:

export XAUTHORITY=$(xauth info|grep "^Authority file"|awk '{print $3}')
sudo -iu oracle

相关内容