`/etc` 目录的权限有什么重要性?

尝试复制在“/etc/profile permission denied!”中描述的问题,帖子的OP在评论中提到她的/etc目录的权限字符串为drw-r--r--。我执行了sudo chmod 644 /etc,确实复制了该问题。然后在实际环境中,我将权限更改回755。(我以为这样做不会有任何损害,我只是更改了权限!)将/etc权限恢复到原始状态后,登录问题和其他问题(如无法使用sudo)得到解决,但在GUI中仍然面临许多问题。Unity doesn't load, no Launcher, no Dash appears!在某种程度上有所帮助,但其他问题仍然存在。

问题:

为什么会出现这种情况?我只是切换了/etc的执行位!为什么这对Unity产生了重大影响?

1这就是为什么有了虚拟机,孩子们(男孩和女孩);) - Braiam
1你确定/etc目录的当前权限是755吗?你是如何在实时环境中更改它的?你确定没有运行类似chmod -R 644 /etc这样的命令吗? - terdon
@Braiam 对我来说,Ubuntu桌面版本在VirtualBox中安装失败了..通常为了测试,我会使用带有文件持久性的live USB,但是这次.. @terdon 不,我没有递归执行chmod命令.. - rusty
1个回答

对的,我试过这个(在一个虚拟机上:-)),并且得到了你描述的相同行为。我改变了/etc的权限,并重新启动了系统,由于我已经配置了系统自动登录,它尝试直接登录但失败了。
我对Unity的内部机制不够了解,无法理解细节,但我猜测当你尝试登录时,由于系统无法访问/etc,它无法读取各种必要的文件,比如/etc/passwd/etc/group,或者任何能让它将你的用户名映射到适当的UID和GID的文件。因此,在尝试登录时,文件细节可能被搞乱了。
我猜测,强调我只是猜测,是你的gconf配置设置发生了变化,然后影响了Unity。
在我的虚拟机上,我通过简单地删除$HOME中的所有文件,删除我的用户并重新创建他来解决了这个问题。显然,这不是你实际使用的系统上的解决方案。
我唯一能想到的解决办法是移动/重命名所有的配置文件和目录:
mkdir old_dotfiles
for file in .*; do mv "$file" old_dotfiles; done

这将把您的所有配置文件和目录移动到~/old_dotfiles。然后您可以注销并重新登录,或者重新启动,事情应该恢复正常,尽管您将丢失配置设置。然后您可以尝试再次复制它们回来。如果这只是一个文件所有权问题,复制它们回来应该重置所有权并可能修复您的问题。如果更改是在某个配置文件中进行的,这将再次破坏您的系统,所以请谨慎操作。
请记住,大多数配置文件将自动创建,因此您只需要担心您对默认值进行了更改的情况。此外,您应确保您的GUI的“系统”文件夹(如~/Desktop)已正确设置。
我猜这应该足以使您返回到一个工作正常的系统,并对虚拟机产生新的喜爱。

是的,移动配置文件确实可以修复GUI错误。我运行了mv -t /somewhere/else/ .Xauthority .ICEauthority .compiz-1/ .gconf/ .config/compiz-1/ .config/dconf/来重置一些东西...但问题仍然存在。无法允许以任何标准用户或甚至是游客登录(在tty中,您将被登录为“我没有名字!”真是有趣的程序员!),所以我不认为它会导致问题。 - rusty
@rusty不太确定我理解你的问题。你是在问为什么没有访问/etc的权限时无法登录吗?当你将权限设置为644时,由于你删除了目录所需的可执行位,所以没有人可以进入/etc。因此,所有基本配置文件都不存在了。比如说 /etc/passwd/etc/shadow/etc/groups/etc/profile等等。系统无法访问这些文件中的任何一个。 - terdon
权限问题和登录问题并不是问题,重置compiz gconf dconf可以解决“副作用”..而我想知道的是这些副作用的原因。 - rusty
@rusty 你试过比较原始文件和新文件吗?可以用 diff 命令或者检查文件所有权(因为你可能已经改变了它们的位置)来进行比较。如果把原始文件移回去后问题没有出现,那就说明是权限问题;如果问题依然存在,那就更复杂了。 - terdon
我以前也遇到过与compiz/unity类似的问题。复制旧文件回去是没有用的。某些配置文件的设置会以某种方式被修改。 - rusty
1@rusty 如果你确定了这一点,那么问题很可能是像 @Braiam 在聊天中建议的那样,Unity在设置某些东西时崩溃了,并且没有很好地清理自己,这是一个明显的错误。如果你仍然有这些文件,请尝试运行几个 diff 命令,它们可能会提供更多信息。顺便说一下,我也尝试了使用新创建的用户,没有对他的配置进行任何更改,在修正了 /etc 权限后就能够成功登录了。因此,几乎可以确定是 dconf/gconf 或者 compiz 出了问题。 - terdon
我恢复了.compiz-1/.gconf/,问题没有再出现!但是当我恢复了.config/compiz-1/.config/dconf/时,问题又出现了。 - rusty
1@rusty 啊,原来是 dconf 啊!可能之前两个都有问题,但在你复制的时候权限/所有权已经修复了。我猜测要么是写入错误的 dconf 数据,要么是一个损坏的 dconf 文件。 - terdon