更改了 /etc 文件夹的所有者,不能再使用 sudo

Dvo*_*sky 2 permissions system-recovery

我在 Web 服务器上工作时不小心更改了 /etc 文件夹的所有者,现在 /etc 文件夹及其所有子目录的所有者是 www-data。我不能再使用 sudo 进行任何操作,并且在恢复模式下控制台在大约 30 秒后重新启动,然后它冻结了。有什么方法可以让我在不重新安装 ubuntu 的情况下解决这个问题。

小智 9

也许多搜索一点:https : //superuser.com/questions/501818/changed-ownership-without-the-sudo-command#501824

重启,按住右shift键调出grub2启动菜单。然后按照这些说明进入单用户模式。

如何从 grub 启动到单用户模式?

在单用户模式下,您可以修复文件权限,因为您自动成为 root 用户。

一般来说,如果只是文件所有权发生了变化。你可以运行:

chown -R root:root /etc
Run Code Online (Sandbox Code Playgroud)

这会将所有权和组更改回默认根。

我在这里有一个 ubuntu 服务器 12.04 LTS,在 /etc 下有少量文件/目录具有不同的组所有权。除此之外,所有文件都归root所有。具有不同组所有权的文件是:

/etc:
-rw-r----- 1 root daemon   144 Oct 26  2011 at.deny
drwxr-s--- 2 root dip     4096 Aug 22 12:01 chatscripts
-rw-r----- 1 root shadow   697 Oct 31 12:58 gshadow
-rw-r----- 1 root shadow  1569 Oct 31 13:00 shadow

/etc/chatscripts:
-rw-r----- 1 root dip  656 Aug 22 12:01 provider
Run Code Online (Sandbox Code Playgroud)

因此,您可以在最初运行 chown 之后对这些文件运行 chgrp 命令。然后,您应该将一切恢复到应有的状态。普通用户不应超过 10 分钟。

e.g. 
  chgrp shadow /etc/shadow
Run Code Online (Sandbox Code Playgroud)

哦,还有最后一步。完成更改后重新启动。

/> reboot
Run Code Online (Sandbox Code Playgroud)

  • 请注意,更改所有权可能会删除 setuid/setgid 位(例如 chatscripts 目录中的 setgid 位),并且这些也需要恢复。 (2认同)