问题描述
我一直使用gksudo nautilus
和sudo nautilus
通过Alt
+ F2
。
有什么不同?他们看起来非常相似!
最佳解决思路
取自here:
You should never use normal
sudo
to start graphical applications as root. You should usegksudo
(kdesudo
on Kubuntu) to run such programs.gksudo
setsHOME=/root
, and copies.Xauthority
to atmp
directory. This prevents files in your home directory becoming owned by root.
请注意,这主要是关于配置文件。如果您将Nautilus作为root
运行,即使使用gksu
/gksudo
,并且您随处可用(包括在您的主目录中)创建文件或文件夹,该文件或文件夹将由root
拥有。但是,如果您使用sudo
将Nautilus(或大多数其他图形应用程序)作为root
运行,则可以将其配置文件保存在您的主目录(而不是root
的主目录)中。这些配置文件可能由root
拥有,并且当您不以root身份运行时不可访问,这可能会严重影响您的设置,甚至可能导致某些应用程序无法运行。
该解决方案一旦犯了这个错误,就是找到配置文件并删除它们,或者将它们chown
归还给您的非root
用户。许多这样的文件以.
开头或包含在以.
开头的目录中。有些位于主目录中的.config
文件夹内。要查看以Nautilus中的.
开头的文件和文件夹,请按Ctrl
+ H
(显示隐藏文件)。要使用ls
查看它们,请使用-a
(或-A
)标志。
要查找主目录中是否有不属于您的文件,您可以在终端中使用以下命令:
find $HOME -not -user $USER -exec ls -lad {} \;
它将列出不属于用户的主目录下的所有文件。
次佳解决思路
您是否知道有一个名为nautilus-gksu的Nautilus附加功能,在nautilus的右键菜单中添加了一个“以管理员身份打开”?
注意:在Ubuntu 12.04及以后版本中不可用。
第三种解决思路
如果您使用sudo启动图形应用程序,则可能会弄乱文件的所有权,从而导致应用程序崩溃。永远不要这样做。检查Community Help:
You should never use normal sudo to start graphical applications as Root. You should use gksudo (kdesudo on Kubuntu) to run such programs. gksudo sets HOME=~root, and copies .Xauthority to a tmp directory. This prevents files in your home directory becoming owned by Root. (AFAICT, this is all that’s special about the environment of the started process with gksudo vs. sudo).
第四种思路
sudo默认保留你的$ HOME变量。例如,如果您运行sudo firefox
,您将以root权限运行,但是您的配置。如果您在这种情况下更改设置,则最终将得到您的配置的一部分,而不是您的用户标识。