无法以其他用户身份运行 gedit

use*_*290 5 editor gedit

我以用户 'foo' 登录,如果我能够在我的 Ubuntu 12.04 机器上运行 gedit 并编辑文件,显示设置为 :0

如果我“su - bar”然后尝试编辑文件,我会收到一个没有指定协议的错误并且它不会打开必要的文件。这里有什么问题?

Eli*_*gan 4

gedit是一个图形程序,因此正如您不会像root使用 Straight 那样sudo运行它一样,您也不应该使用 Straightsudo或 Straight作为另一个用户运行它su

相反,如果您(即foo)有权以另一个用户身份运行程序sudo,则这可能是最简单运行foo方式geditbar

xhost +local:bar
gksu -u bar gedit
Run Code Online (Sandbox Code Playgroud)

如果您无权以其他用户身份运行程序,sudo但您可以subar那么这是最简单的方法:

gksu -w -u bar gedit
Run Code Online (Sandbox Code Playgroud)

标志-w(相当于--su-mode)使(它是和 的gksu前端)使用而不是。sudosususudo

  • 您不需要运行任何相应的xhost命令即可gksu -w ...工作。

如果您想要一个图形终端实例 ( gnome-terminal),您可以从中运行任何内容,包括图形应用程序,那么您应该考虑只运行一个新的asbar实例(您可以按照与运行 相同的方式进行操作,如上所述)。gnome-terminalbargedit


小智 -2

您提供的语法看起来不正确。如果你想切换到用户“bar”,那么我相信你应该使用“su bar”。但如果这是不正确的,我认为您在尝试切换用户时会收到错误消息。也许这是您问题中的拼写错误,或者 su 无论如何都会接受它。

我认为问题更可能是 gedit 是一个基于 gui 的编辑器,因此尝试在该用户的 x 会话中启动,如果您通过终端更改更改的用户,则该会话将不存在。如果您使用“vi file_to_edit”会发生什么?Vi 是基于终端的编辑器,不应受到 GUI 困难的影响。


编辑:我需要一些电脑眼镜,我以为你输入的命令是“su -bar”。但“su - bar”是有效的语法。