我使用 GNOME3 运行 Debian Jessie。
我处于两个用户登录的情况:
user1 处于开启状态:0
,user2 处于开启状态:1
。
我想将它们交换为:
用户 1:1
和用户 2 都在 上:0
。
答案1
有一种方法可以添加用户到给定的显示器和消除来自给定显示的用户,但不仅仅是交换。您可以通过让每个用户运行xauth
将其他用户添加到他们的显示中,然后使用xauth
将自己从原始屏幕中删除来完成此操作。这似乎是一项艰巨的工作,因为它涉及将授权数据从一个帐户复制到另一个帐户以及多个步骤。
进一步阅读:
- xauth - X 权限文件实用程序
- 关于 xhost 安全策略格伦·克莱门茨 (Glenn Clements) 在邮件列表上的回复:
$XAUTHORITY
X 客户端通过传递 指定的文件中的身份验证凭据(或者$HOME/.Xauthority
如果$XAUTHORITY
未设置)来向服务器验证自己的身份。该文件通常只能由其所有者读取,因此同一系统上的其他用户无法访问 X 会话。如果您想授予其他帐户访问您的 X 会话的权限,请使用以下命令提取身份验证凭据“xauth 提取...”,将它们转移到另一个帐户,然后让该帐户
~/.Xauthority
使用以下命令将它们添加到自己的文件中“xauth 合并...”。
答案2
这不可能。 X 服务器知道它正在处理哪个显示号码,但它没有接口来更改它。
(好吧,从技术上讲,可以通过在 X 服务器进程上运行调试器并发出正确的命令来实现。如果幸运的话,错误的命令将使 X 服务器崩溃。这不太可能成功。)
无论您试图解决什么问题,都一定会有更好的解决方案。大多数程序使用环境变量指示的显示编号DISPLAY
。运行env DISPLAY=:1 someprogram
而不是someprogram
可以处理 99% 的情况——这就是 X 库默认执行的操作。对于应用程序中已硬编码的剩余 1% :0
,如果程序是动态链接的,LD_PRELOAD
(解释和例子)应该可以解决问题。