为什么用户永远不会使用普通的sudo来启动图形应用程序?

Modified on: Sat, 09 Jun 2018 12:47:23 +0800

我已阅读社区“RootSudo”文档并对此专栏感兴趣:

  

你应该从不使用普通的sudo以root身份启动图形应用程序。

为什么呢?有什么不同?请提供一个简单的解释,因为我只是一个普通的桌面用户。

作者:muru,Nur

最佳答案

图形应用程序通常将设置和其他特定于用户的数据存储在用户的主文件夹。应用程序使用的主要机制来确定它们应该用作用户的主文件夹的是HOME环境变量。 (您可以使用echo $HOME自行检查。)

假设您正在运行gedit(图形文本编辑器) )root。如果您运行<a rel="nofollow" href="http://manpages.ubuntu.com/sudo.8" rel="noreferrer">sudo</a> geditHOME将继续指向您的主目录,即使该程序正在作为root 运行。因此,gedit会将配置文件作为root 写入您的主目录。这个有时会导致 root 拥有的配置文件因此无法访问(当您稍后以自己的身份运行程序而不是root)时。这主要发生在应用程序必须创建新配置文件时。默认情况下,新创建的文件由创建它们的用户拥有(在这种情况下,root,而不是你)。

这是您使用图形sudo前端而不是直接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 -owned .Xauthority相比,当配置文件被归为root时,问题并不总是那么明显是(因为图形程序经常运行,但不能很好地工作,并输出任何有用的错误到控制台)。而且有时候修复会更麻烦,尤其是如果您希望主目录中的一个或多个文件由您以外的其他人拥有(因为那时你无法修复它)只需通过递归chown将所有文件发回给自己。)

因此,sudo(至少没有-H)不应该用于运行图形应用程序,除非你非常熟悉应用程序的内部工作,并确信它不会尝试编写任何配置文件。

作者:,Eliah Kagan

相关问答

添加新评论