我在一个脚本中犯了一个非常恼人的错误...一行应该在文件夹上递归更改权限:
chmod -R 777 $folder/
事情是没有设置变量,所以它运行了:
chmod -R 777 /
是的愚蠢。问题是现在我不能再使用sudo
了,我收到了这条消息:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
答案 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到您的特定用户名
欢呼!