我有 ubuntu + x11 + gnome。
我想以另一个用户身份运行图形应用程序。
但是,当我使用从命令行启动它时,sudo -u otheruser app
出现错误“未指定协议”。
我该如何解决这个问题?
xhost '+si:localuser:USERNAME'
首先执行这个命令:
$ sudo xhost +
然后以其他用户身份运行您想要的命令:
$ sudo -i -u username
$ command you want to run
完成后:
$ sudo xhost -
采用
xdg-su -u user -c command
此处提供的大多数解决方案都不与 Wayland 和 PulseAudio 集成。
我为这个用例编写了ego
(Alter Ego),它会自动处理xhost
Wayland 和 PulseAudio 套接字共享:https ://github.com/intgr/ego
所以你只需运行ego app
或ego -u somebody app
如果遇到问题,请在 GitHub 上打开一个问题。我可能是它的唯一用户,所以它还没有得到太多的测试。
(而且我注意到我的这个答案晚了十年,但希望它会对某人有所帮助:D)
您可能需要告诉您的 X 服务器接受来自另一个用户的连接,而不是拥有服务器实例的用户(您)。查看 xhost 命令。
gksudo -u 命令
gksu -u <user> -c <command>
替换<user>
为运行命令的用户名,<command
> 替换为您要运行的命令。请记住,程序将在<user>
s 上下文中运行,但在当前目录中。
在弹出的窗口中,<user>
当然输入目标的密码。