意外地执行了“chmod -777 /”

意外地执行了“chmod -777 /”

我不小心chmod -777 /现在无法访问任何东西,当我重新启动时,会显示一个对话框,提示“您的图形设置为低”,单击确定后,会出现一个选项“退出到登录屏幕”,当我选择这个选项时,会出现一个空白屏幕,顶部有“-”。

有什么方法可以撤销该过程或者至少恢复数据吗?

PS:我正在使用 Windows Vista 和 Ubuntu 13.04(双启动)。

答案1

请注意,这chmod -777就像chmod 000。因此,OP 可能只是更改了/ 文件夹的权限,而不是递归更改,他或她只需使用

chmod 755 /

从恢复启动。例如,从安装介质启动,选择尝试 Ubuntu,打开终端并进入超级用户(进行以下检查三次,并且只有在理解你在做什么之后

sudo -i
mount /dev/yourrootpartitonhere /mnt
cd /mnt
chmod 755 .
cd ..
umount /mnt

并正常重启,一切就正常了。

如果您确实使用了 -R,请备份您的数据(请参阅此处的其他答案),然后重新安装。

答案2

谢谢您的回答。

我刚刚安装了 Ubuntu 14.04,但我能够使用 Live CD 备份我的数据。

我从 Live CD 启动并执行了 chmod 777 / 'pathOfTheDirectory'

不要管那些你不太了解的事情——这是经验教训。

答案3

如果您运行该命令chmod -777 /foo,它可能具有一些奇怪的功能。最有可能的是,它将否定您在八进制 777 的否定中传递的位(二进制为 111111111,这很重要),这实际上是无法表示的,因为chmod它使用 9 位设置文件权限(每个权限 1 位,用于读取、写入、执行 * 所有者、组、用户),这是一个无符号数(不能为负数)。

假设您可以表示有符号数(负值和正值)。如果您找到 777 的 2 的补码(0b111111111),那么您就可以确定命令的确切行为(以及您要传递给命令的数字):

 111111111
-000000000
----------
 111111111
+000000001
----------
1000000000 #this number will cause an overflow because it is 512
           #since our range is only -256 -> 255

这一切意味着什么?你告诉内核“嘿,将此文件夹的权限设置为 1000000000”。内核回应“Ok”,并按照你的要求执行。现在你的文件系统权限就是这样。--------- root root /这一切都假设我(和你的内核/CPU)正确地进行了计算。

恢复

根文件系统的/默认权限通常为 755。解决此问题的最简单方法是登录并使用Ctrl+切换到 tty F1(这将带您进入 tty1,tty2-6 也处于打开状态,tty7 是当前 X 会话的位置)。您可以以 root 身份登录(或以普通用户身份登录,但请sudo在下面的每个命令前使用)并运行以下命令:

chmod 755 /

应该解决您遇到的问题。

相关内容