突然间,如果不以 root 身份,我无法在 ubuntu 中执行任何操作。当我运行 emacs 时,它说无法访问文件(但可以在 sudo 中运行,并且运行正常)。firefox 会抛出安全问题,直到我成为 root 等,我不知道如何修复这个问题。
我进入 su 并清除了 sudo,然后重新安装,以为这样可以解决问题(因为我曾经用 emacs 而不是 visudo 编辑过我的 sudoers 文件),但无济于事。有什么想法吗?这是一次非常烦人的经历
编辑:了解更多信息。在此之前,我尝试以 sudo(GUI 版本)运行 Virtualbox,但遇到了问题,提示无法访问给定的机器。因此,我想确保所有命令都以 root 身份运行,因此我将自己添加到 sudoers 文件中(用户名 (ALL) = (All) 等语法),一段时间内一切都正常。然后这些问题出现在 Firefox 和 emacs 等中。所以我猜我不知何故在过去不知不觉中将自己从有权访问这些文件的组中移除了
编辑2:对于 emacs 启动时出现的具体错误,它显示“无法打开加载文件:/home/path.../.emacs.d/elpa/asynch-20151104.2113/async-pkg ...现在这仅当我没有从终端以 sudo 身份运行时才会发生。可能是我弄乱了 pkg 权限?firefox 错误与此类似(错误代码:sec_error_bad_signature)但是我在删除 ~/.modzilla 文件夹后无法复制该问题。有什么想法吗?
答案1
听起来你的主目录中有 root 拥有的文件。
这可能是由于过去使用 sudo 运行应用程序,并且这些应用程序将文件保存到您的主目录所致。
要查找主目录中 root 拥有的文件列表,请尝试
find /home/ -uid 0
然后,您可以根据需要将它们切换回给您的用户。
chown myuser:myuser -R [files]
其中 files 是特定文件或子目录。在整个主目录中运行这样的命令通常不是一个好主意,因为有些文件所有权商榷或对于某事来说是必要的。
至于导致问题的原因,某些应用程序在正常运行期间会将文件存储在您的主目录中,例如配置或缓存文件。这在图形应用程序中非常常见,但一些非图形应用程序仍可能这样做。现在,如果您使用sudo
,并且应用程序这样做,它将在您的主目录中创建 root 拥有的文件。然后,将来尝试运行此应用程序没有root 可能会失败,因为现在有些文件只有 root 才能打开。
解决方案是将这些文件的所有者改回您的用户,或者如果您认为它们不重要,则删除它们。
为了避免将来出现此问题,当使用 sudo 时,您可以使用
sudo -H [command]
如果它是一个图形应用程序,你也可以使用
gksudo [command]
这告诉应用程序使用根用户的主目录而不是您自己的主目录。