sudo nautilus 命令在 ubuntu 13.04 中无法正常工作

Swe*_*uni 4 13.04

虽然我尝试了很多命令来克服这个警告,但我无法克服它们所以帮助我摆脱这个警告

root@radhika-M68MT-D3:~# sudo nautilus

(nautilus:2642): IBUS-WARNING **: The owner of /home/radhika/.config/ibus/bus is 
not root!Nautilus-Share-Message: Called "net usershare info" but it failed: 'net 
usershare' returned error 255: net usershare: cannot open usershare directory /var/lib
/samba/usershares. Error No such file or directory Please ask your system 
administrator to enable user sharing.
Run Code Online (Sandbox Code Playgroud)

Eli*_*gan 5

快速回答

使用gksudo nautilussudo -H nautilussudo -i nautilus代替。

解释

你不应该使用plainsudo来运行图形应用程序,因为它会让root和你的非root用户尝试使用相同的配置文件,这通常会导致root拥有非root用户需要(但不能)访问的文件.

最新版本的 Nautilus 实际上会识别这个问题并拒绝运行,以防止它们的每用户配置在您的非 root 用户帐户上被破坏。

解决这个问题的方法是,当运行图形程序root(尤其是 Nautilus)时,使用避免这个问题的方法。避免此问题的方法是使您正在运行的程序在 root 的主目录 ( /root) 而不是您自己的主目录 ( ) 中查找和创建配置文件的方法。/home/ussername

解决方案及其工作原理

HOME 环境变量通常协商,以确定要使用的主目录。您希望将其设置为/root. 您不直接执行此操作;相反,以自动为您执行此操作的方式运行图形应用程序。

传统上,所有 Ubuntu 系统都安装了gksudo或(对于 Kubuntu)kdesudo,并且您将sudo在运行图形应用程序时使用它们而不是。这可能有效;我建议你在尝试其他任何东西之前先尝试用sudowith替换gksudo。不幸的是,gksudo不是总是安装在Ubuntu的最新版本。当然,您可以安装它(在软件中心或使用sudo apt-get update && sudo apt-get install gksu)。

另外,请注意,传统上,在 Ubuntu 上,gksugksudo做了同样的事情。但是最近的一个错误有时会gksu导致行为不适用于 Ubuntu 系统。这就是为什么我推荐gksudo,即使我通常推荐gksu在正确配置的情况下,它在许多不同的类 Unix 系统上做“正确的事情” )。

但是有替代方案gksudo。您可以告诉sudo以 root 身份运行程序并使用 root 的主目录而不是您的主目录:

sudo -H nautilus
Run Code Online (Sandbox Code Playgroud)

如果你没有gksudo,我推荐sudo -H。但是,您也可以使用:

sudo -i nautilus
Run Code Online (Sandbox Code Playgroud)

sudo -i模拟一个完整的 root 登录(即使实际的 root 登录被禁用),它将许多环境变量设置HOME为它们的 root-user 值,包括。

(命令运行后,在其他程序或其他不是从您以 root 身份运行的程序启动的命令中,环境保持不变。您永远不必“将其改回”。)