Answers:
图形应用程序通常将设置和其他特定于用户的数据存储在写入用户主文件夹内的配置文件中。应用程序用来确定用户主文件夹应使用的主要机制是HOME
环境变量。(您可以自己检查echo $HOME
)。
假设您gedit
以的身份运行(图形文本编辑器)root
。如果您运行sudo gedit
,即使程序运行为,HOME
它将继续指向您的主目录。因此,会将配置文件作为原始目录写入。这有时会导致在配置文件中所拥有的,因而无法访问你(当你在以后运行程序为自己,而不是为)。这主要在应用程序必须创建新的配置文件时发生。默认情况下,新创建的文件由创建它们的用户拥有(在这种情况下为,而不是您)。root
gedit
root
root
root
root
这就是为什么您应该使用图形sudo
前端而不是straight 运行图形应用程序的主要原因sudo
。在Ubuntu及其大多数派生工具(包括Xubuntu和Lubuntu)中,标准图形前端为gksu
/gksudo
。在Kubuntu是kdesudo
。(这取决于所使用的桌面环境。)
如果您想sudo
直接使用来运行类似的图形应用程序gedit
,则可以运行:
sudo -H gedit
该-H
标志使sudo
设置HOME
为指向root
的主文件夹(这是/root
)。
仍然不能通过.Xauthority
将其复制到临时文件夹来自动处理所有权(这是图形sudo
前端为您处理的另一件事)。但是在.Xauthority
无法访问的偶发事件中,您会得到一个错误提示,说它是,然后您可以通过删除它(sudo rm ~/.Xauthority
)来解决问题,因为它会自动重新生成。因此,保护.Xauthority
的所有权和权限比保护配置文件的所有权和权限重要。
与root
-own相比.Xauthority
,当配置文件作为拥有时root
,问题并不总是那么明显(因为图形程序通常会运行,但不能很好地工作,并向控制台输出任何有用的错误)。有时修复起来比较麻烦,尤其是在您希望主目录中的一个或多个文件归您以外的其他人拥有的情况下(因为那样您就不能简单地通过递归地chown
处理所有文件来修复它)回到自己)。
因此,除非您对应用程序的内部工作非常熟悉并且确定知道它永远不会尝试编写任何配置文件,否则sudo
(至少不使用-H
)不应用于运行图形应用程序。
sudo chmod -R $USER:$USER ~
不幸的是,这些标准并不一定适用。如果有任何文件需要保留组所有者,则可以运行sudo chmod -R $USER ~
。通常这足够了。(如果您的文件需要由主目录中的其他用户拥有,那将是一个问题。)
chmod
确实做到了吗?我一直以为是chown
这样做的。chmod
从来没有为我做过。
chown
而不是chmod
在上面的评论中。抱歉-感谢您指出这一点!
一种替代gksu nautilus
和gksu gedit
是使用nautilus-admin
附加。它允许您使用Nautilus浏览文件和目录,然后以root用户(管理员)身份打开它们。
安装简单明了:
sudo apt install nautilus-admin
现在,当您在鹦鹉螺中时,将有一个额外的选项以管理员身份编辑:
gedit
作为root不允许使用偏好当您gedit
以root用户身份运行时,您无法使用作为普通用户设置的首选项来制表位,将制表符转换为空格,字体名称,字体大小,换行等。
为了解决这个问题,我编写了脚本sgedit
来继承用户首选项并将其应用于root:如何将root gedit与用户gedit的首选项同步?
sgedit filename1 filename2 ...
sudo -H
保留文件所有权,同时获得root权限。sudo
超时,则请求密码。gedit
作为后台任务进行调用,以使终端提示立即重新出现。