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


0

我不小心通过命令将根文件夹(/)和所有子文件夹的所有者设置为一个用户

$ 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?

我该怎么做才能解决这个问题?


@terdon实际上, chown -R foo/* 不应该取代所有者 /,只是子目录。它们略有不同。
Darth Android


@DarthAndroid你是绝对正确的,评论已删除。
terdon

Answers:


2

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

通过更改所有者, sudo 不能再运行了 root,然后,无法运行您的命令 root

从中恢复的最简单方法是

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

正如您所发现的,有许多系统文件绝对取决于拥有正确的所有者和正确的权限。 SSHd 例如,如果主机私钥没有,则拒绝启动 究竟 正确的权限( 0600 并且由root拥有我认为)。 sudo 如果没有,就无法提升自己 setuid 并拥有 root,我相信还有很多其他与安全相关的程序如果发现事情并不完美就无法运行。

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


确实,重新安装可能是要走的路。
gniourf_gniourf

1

如果您之前以递归方式进行过chown,那么您的权限很可能会被不可逆转地损坏。

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


1

说真的,从头开始重建。即使你超越了你正在看的错误,并设法重新chown root,你的系统仍然会像现在一样破碎。实际上没有办法从失控的chowning(或就此问题进行调整)中恢复。即使你以某种方式能够获得每个对象的原始所有者的部分列表,它几乎肯定是不完整的,并且会反映一个库存系统状态,在最初创建文件之后可能已被app / daemon install更改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.