同一屏幕上作为不同用户的两个 GUI 应用程序

同一屏幕上作为不同用户的两个 GUI 应用程序

我以用户 A 身份登录。我想以用户 B 身份运行 GUI 应用程序。用户,而不是 root。用户 B 也是本地的,而不是远程的,我只需要不同的环境变量。我不想运行第二个 X,我希望它们在同一显示器上。我对在终端中运行的程序没有任何问题,su - ...工作正常。对于图形化,有一条错误消息:

Application initialization failed: couldn't connect to display ":0.0"

或者

Gtk-WARNING **: cannot open display: :0.0

有没有好的办法解决呢?关于正确使用xhost什么的文章?

答案1

运行以下命令以授予userBname对显示的访问权限:xhost +SI:localuser:userBnameYou may use xhost +to grant access to every person;然而这是不安全的。更好的方法是按每个用户授予访问权限。本地用户的 xhosts 条目的正确语法是SI:localuser:username

然后su userBnameexport DISPLAY=:0.0、 最后运行您的 GUI 程序。尽管您之前使用 授予了对显示的访问权限xhost,但您还必须设置环境变量DISPLAY,以便程序知道将其图形输出放置在何处。允许DISPLAY不同的用户使用不同的变量,允许连接到一台机器的多个用户使用不同的物理终端。

答案2

只需使用 gksu -u 所需的用户名,输入密码,您就可以开始了。

DISPLAY=:1.0 gksu [-u <user>] [options] <command>

或者,您可以使用 su,然后将 XDISPLAY 设置到正确的屏幕,最后启动您想要的应用程序。

答案3

这就是我完成此任务的方法:-

  1. 以具有现有 X 会话的用户身份打开 x 终端。
  2. 发出命令xauth list。您应该看到 X Magic cookie 值,用于验证对 X 服务器的各种描述符的请求。复制带有“unix”参考的那个。例如 myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  3. 作为初始用户打开第二个终端,但将用户 (su) 切换到您想要的 ID,例如su - user2
  4. 现在您已经切换了用户,发出命令xauth add并粘贴您之前在第 2 阶段复制的行,然后按回车键,例如 xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  5. 从命令行在第二个终端启动 X 程序,例如:firefox

就是这样!

答案4

首先将第二个用户添加到 localuser:

$ xhost SI:localuser:user2

localuser:玩家被添加到访问控制列表

比运行你的应用程序:

$ sudo -u user2 -H firefox

相关内容