sas*_*alm 40 shell xorg su x11
假设我有 2 个用户帐户user1
和user2
. 当我以 登录user1
,然后切换到user2
使用时su
,我可以执行命令行程序,但 GUI 程序失败。
例子:
user1@laptop:~$ su - user2
user2@laptop:~$ leafpad ~/somefile.txt
No protocol specified
leafpad: Cannot open display:
Run Code Online (Sandbox Code Playgroud)
那么如何运行 GUI 应用程序呢?
slm*_*slm 48
当成为另一个用户时,您通常希望使用su - user2
. 破折号将强制.bash_profile
用户 2 获得来源。
此外,您还需要授予用户访问您的显示的权限。这由 X 管理。您可以使用该命令xhost +
允许其他用户在 user1 的桌面上显示 GUI。
注意:运行时,xhost +
您仍希望在属于 user1 的 shell 中运行它。
当您成为 user2 时,您可能需要设置环境变量$DISPLAY
。
$ export DISPLAY=:0.0
Run Code Online (Sandbox Code Playgroud)
小智 12
您可以使用 X11 转发:
ssh -XY otheruser@localhost your-gui-program-name-here
Run Code Online (Sandbox Code Playgroud)
小智 10
您需要从user1共享身份验证令牌(假设~
是user1 的家):
cat ~/.Xauthority | sudo -u user2 -i tee .Xauthority > /dev/null
Run Code Online (Sandbox Code Playgroud)
小智 9
您可以从其他用户启动应用程序。我将从用户 2 启动 gimp 应用程序,同时使用用户 1 登录(GUI):
$ xhost +
$ sudo su user2
Run Code Online (Sandbox Code Playgroud)
(输入通行证)
$ gimp
Run Code Online (Sandbox Code Playgroud)
享受 :)