`/etc` 的权限有什么意义?

pre*_*ise 5 filesystem permissions unity

试图复制“/etc/profile权限被拒绝! ”中描述的问题,其中 OP 在她的评论中提到她的/etc目录的权限字符串是drw-r--r--. 我发出了sudo chmod 644 /etc,是的,确实复制了这个问题。然后在实时环境中,我将权限更正为755. (我认为这不会有什么害处,我只是更改了权限!)随着/etc权限恢复为原始权限,登录问题和其他诸如无法sudo修复的问题都得到了解决,但我在 GUI 中遇到了很多问题。Unity 没有加载,没有 Launcher,没有 Dash 出现!在一定程度上有所帮助,但其他问题仍然存在。

问题:

这背后的原因是什么?我只是切换了/etc权限的执行位!为什么这对 Unity 有重大影响?

ter*_*don 3

是的,我尝试了这个(在虚拟机上:-))并得到了与您描述的相同的行为。我更改了权限/etc,然后重新启动,由于我已将系统配置为自动登录,因此它尝试直接登录但失败。

我对 Unity 的内部结构了解不够,无法理解细节,但我的猜测是,当您尝试登录时,由于系统无权访问它,因此/etc无法读取各种基本文件,例如/etc/passwd/etc/group或任何内容让它将您的用户名映射到适当的 UID 和 GID。因此,在尝试登录时,文件详细信息不知何故被搞砸了。

我的猜测,并且我强调我的猜测,是对您的配置设置进行了更改gconf,然后与 Unity 搞混了。

我通过简单地删除我的虚拟机中的所有文件$HOME、删除我的用户并重新创建他来解决了这个问题。显然这不是您实际使用的系统上的解决方案。

我能想到的唯一解决方法是移动/重命名所有配置文件和目录:

mkdir old_dotfiles
for file in .*; do mv "$file" old_dotfiles; done
Run Code Online (Sandbox Code Playgroud)

这会将所有配置文件和目录移动到~/old_dotfiles. 然后,您可以注销并再次登录或重新启动,尽管您会丢失配置设置,但情况应该会恢复正常。然后您可以尝试再次将它们复制回来。如果这只是文件所有权问题,将它们复制回来应该会重置所有权并可能解决您的问题。如果更改是其中一个conf 文件中进行的,这将再次破坏您的系统,因此请谨慎操作。

请记住,大多数配置文件都会自动创建,因此您只需担心更改默认值的情况即可。另外,您应该确保 GUI 的“系统”文件夹(例如)~/Desktop已正确设置。

我的猜测是,这应该足以让您回到正常工作的系统,并对虚拟机产生新的热爱。