chmod -r 777 /后如何修复权限?

时间:2016-05-11 08:28:41

标签: ubuntu permissions sudo chmod

我在一个脚本中犯了一个非常恼人的错误...一行应该在文件夹上递归更改权限:

chmod -R 777 $folder/

事情是没有设置变量,所以它运行了:

chmod -R 777 /

是的愚蠢。问题是现在我不能再使用sudo了,我收到了这条消息:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
  1. 有没有办法恢复权限?
  2. 如果没有,有没有办法备份我的Ubuntu 14.04(在VirtualBox上运行)?
  3. 如果没有,我该如何保存重要数据?

2 个答案:

答案 0 :(得分:1)

我终于找到了解决方案!

问题解释

当我递归更改根文件夹/上的权限时,我还更改了/usr/bin/sudo的权限。要查看我输入的权限:

ls -la /usr/bin/sudo

它给了我:

-rwxrwxrwx 1 root root 127668 2016-05-11 12:01 /usr/bin/sudo

而不是:

-rwsr-xr-x 1 root root 127668 2016-05-11 12:01 /usr/bin/sudo

此处 s -rw s r-xr-x非常重要,因为它为用户提供了临时权限,可以使用文件所有者的权限运行sudo(即在这种情况下为root)而不是运行它的用户。

请查看此文章以获取更多信息:http://www.linuxnix.com/suid-set-suid-linuxunix/

解决方案是更改/usr/bin/sudo的权限:

chmod 4755 /usr/bin/sudo

但我需要root才能更改权限......好吧,幸运的是我在VM上运行Ubuntu。

<强>解决方案

解决方案是创建一个新的虚拟机。完成后,在我的新虚拟机上安装我破坏的ubuntu .vdi 和VirtualBox。 设置 - &gt;存储 - &gt;添加硬盘。确保第一个硬盘驱动器是新虚拟机,以便在新虚拟机上启动。

一旦完成,您可以更改已安装的硬盘驱动器上的sudo权限(您的ubuntu损坏):

sudo chmod 4755 /mnt/XXXXX/usr/bin/sudo 

您现在可以使用工作sudo运行固定虚拟机...

答案 1 :(得分:0)

我遇到了同样的问题,这就是我修复它here的方式,基本上链接的内容是Ubuntu 16.04的默认文件权限,因此我刚刚创建了一个bash脚本,复制了所有内容,并编辑了文件,例如replace user:您要指定的用户,也要是/ home / user到您的特定用户名

欢呼!