更改根文件夹和子文件夹的所有者(Ubuntu 13.04)

更改根文件夹和子文件夹的所有者(Ubuntu 13.04)

我意外地通过命令将根文件夹 (/) 及其所有子文件夹的所有者设置为一个用户

$ sudo chown -R 'userName' /*

现在我想通过命令将所有者重新设置为 root 用户

$ chown -R root:root /*

但我没有权限执行此操作。如果我使用命令

$ sudo chown -R root:root /*

它返回

sudo: effective uid is not 0, is sudo installed setuid root?

我应该怎样修复它?

答案1

呃......这是一个有趣的情况。sudo要求二进制文件由其拥有root并具有setuid标志才能正常运行(这允许它作为文件所有者执行,无论谁实际启动它)。

通过更改所有者,sudo无法再以 的身份运行root,因此也无法以 的身份运行命令root

最简单的恢复方法是

  1. 重新启动计算机进入单用户模式
  2. 将所有重要文件复制到 USB 或外部驱动器上。
  3. 重新安装 Ubuntu,然后恢复您的文件。

正如您所发现的,有许多系统文件绝对依赖于拥有正确的所有者和正确的权限。SSHd例如,如果主机私钥不存在,将拒绝启动确切地正确的权限(0600我认为是 root 所拥有的)。如果没有被拥有就sudo无法提升自身,而且我确信还有很多其他与安全相关的程序,如果它们发现事情不完美,它们将无法运行。setuidroot

通过很多非常繁琐的工作,可以使用外部计算机恢复某些权限,但这不是一个有趣的任务,重新安装可能会简单得多。

答案2

如果您之前以递归方式执行过 chown,那么您的权限很可能已遭受不可逆转的损坏。

备份您的数据并重新安装。

答案3

认真地从头开始重建。即使您解决了所看到的错误,并设法重新拥有 root 权限,您的系统仍将像现在一样损坏。实际上没有办法从失控的 chowning(或 chmoding)中恢复。即使您能够以某种方式获得每个对象的原始所有者的部分列表,它也几乎肯定是不完整的,并且会反映出库存系统状态,该状态可能在文件最初创建后由 app/daemon 安装更改。

相关内容