我以用户“foo”身份登录,如果我能够运行 gedit 并在 Ubuntu 12.04 机器上编辑文件,并将 DISPLAY 设置为:0
如果我“su - bar”然后尝试编辑文件,我会收到未指定协议的错误,并且无法打开所需的文件。这里可能是什么问题?
答案1
gedit
是一个图形程序,因此不会像root
直行那样运行sudo
,您不应该以其他用户身份使用 straightsudo
或 straight来运行它su
。
相反,如果你(即foo
)有权以另一个用户身份运行程序sudo
,这可能是最简单的方法运行为foo
gedit
bar
:
xhost +local:bar
gksu -u bar gedit
如果您没有权限以其他用户身份运行程序sudo
但您可以su
,bar
那么这是最简单的方法:
gksu -w -u bar gedit
标志-w
(相当于--su-mode
)使得(它是和gksu
的前端)使用而不是。sudo
su
su
sudo
- 您不需要运行任何相应的
xhost
命令来完成gksu -w ...
工作。
如果您想要一个图形终端实例(gnome-terminal
),从中您可以运行任何内容,bar
包括图形应用程序,您应该考虑只运行一个新的实例gnome-terminal
(bar
您可以按照与运行相同的方式进行gedit
,如上所述)。
答案2
你可以通过以下方式做到这一点
ssh -l 其他用户-X localhost gedit
您的桌面上运行了一个新窗口,但环境是“其他用户”!
我已经在我的机器上使用 Ubuntu 10.04 LTS 进行了测试!
答案3
您提供的语法看起来不正确。如果您想切换到用户“bar”,那么我认为您应该使用“su bar”。但如果这不正确,我认为您在尝试切换用户时会收到错误。也许是您的问题中有拼写错误,或者 su 无论如何都会接受它。
我认为问题更可能是 gedit 是一个基于 GUI 的编辑器,因此尝试在该用户的 x 会话中启动,如果您通过终端更改已更改的用户,则不会存在该会话。如果您使用“vi file_to_edit”会发生什么?Vi 是一个基于终端的编辑器,不应受到 GUI 问题的影响。
编辑:我需要买一副电脑眼镜,我以为你输入的命令是“su -bar”。但“su - bar”是有效的语法。