如何通过终端作为另一个用户执行命令时获得图形显示?
在我的终端,我做到了
$su nextuser
并登录到该帐户。 现在,当我尝试在该用户的主目录中打开文本文件时
$gedit test.c
我明白了
No protocol specified Cannot open display: Run 'gedit --help' to see a full list of available command line options.
如何使用图形文本编辑器在新用户的帐户上显示文件?
从另一个用户的Shell运行图形命令
sux 命令(请参阅man sux
)为您处理此问题,并采用与su
相同的语法。
sux - nextuser gedit test.c
这将自动确保.Xauthority
是正确的,因此您不必运行任何命令来手动授权任何内容。
图形应用程序倾向于在主目录中编写配置文件,如果在保留$HOME
同时以另一个用户身份运行它们,它们将尝试在主目录中以该用户身份编写配置文件。 这将导致无法编写配置,或者为原始用户(或两者的某种组合)搞砸了配置。 这就是为什么在运行图形应用程序时使用带有sux
(或su
)的-
标志的原因。 (对于sudo
,你可以使用像gksu
/ gksudo
和kdesudo
这样的图形前端 。)
直接作为另一个用户运行图形命令
您可以在su模式下使用gksu
(使用-w
标志)以另一个用户身份运行该命令(使用-u
标志):
gksu -w -u nextuser gedit test.c
但是,您可能仍然必须首先运行xhost local:nextuser
(正如您在非常好的答案中详述的)才能使用此function。 如果你使用sudo-mode ,它就不太可能需要它,但是如果你是管理员,你只能这样做(你将使用你的密码而不是nextuser
的密码进行身份validation,因为sudo
而不是su
是后端):
gksu -u nextuer gedit test.c
以另一个用户身份运行终端(不仅仅是Shell)
您可能只想运行图形终端程序(shell在“内部”运行)作为另一个用户。 一旦它运行,从它启动的图形程序也将无缝地工作。
您可以使用与上述相同的方法运行gedit
作为其他用户。
gksu -w -u nextuser gnome-terminal
gksu -u nextuser gnome-terminal
以root身份运行
echo $DISPLAY xhost local:nextuser
然后
su - nextuser export DISPLAY= (or SET DISPLAY.. if export does not work)
你很高兴。 🙂
使用-p
选项和su保存环境变量,包括DISPLAY
; 交替使用export
显式设置它或在每个命令的基础上为它添加前缀。