教程:修复 CHMOD 灾难

教程:修复 CHMOD 灾难

我试图运行chmod一些文件,但意外指定了错误的目录。现在,sudo它不起作用了,我重新启动了。我可以登录,但无法以 root 身份执行任何操作。我该如何修复这个问题?

这与使用 chown 命令将自己设置为 /etc 的所有者,现在出现各种错误 因为这描述了如果您无法启动系统该怎么办。它还解决了如果您chmod在另一个目录上运行或只是意外指定(就像我一样)时可能遇到的问题。它还解释了当/如果它损坏时/如何修复。sudo

答案1

以下是解决问题的方法没有重新安装。

  1. 查找您的操作系统版本

    如果你可以启动系统并登录

    打开终端 (Ctrl+Alt+T) 并输入lsb_release -a。查看“描述”字段。记下此字段中的内容。

    如果您无法启动系统或登录

    如果电脑尚未关闭,请将其关闭。重新打开电源,然后按住“Shift”键,直到看到全屏菜单。

    使用箭头键突出显示选项。按 Enter。您将看到一个选项列表。选择末尾Advanced Options for Ubuntu带有 的第一个选项。按 Enter。等待菜单出现。(recovery mode)

    使用箭头键突出显示该root选项。按两次 Enter。输入lsb_release -a

    注意:您可能会看到屏幕上弹出 2 或 3 行文本,其中提到了依赖关系。只需按 Enter 即可。

    请记下描述字段中的操作系统版本。稍后您将需要它。

    按 Ctrl+D。带有该选项的菜单root将重新出现。resume使用箭头键选择该选项,然后按 Enter。此时,关闭系统电源。

  2. 使固定sudo

    启动恢复模式并进入 root 提示符。输入以下命令:

    mount -o remount /

    这将以读写模式重新安装您的启动驱动器。如果没有这个,接下来的命令将失败。

    chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

    chown root:root /usr/lib/sudo && chmod 4755 /usr/lib/sudo

    chown root:root /usr/lib/sudo/sudoers.so && chmod 4755 /usr/lib/sudo/sudoers.so

    chown root:root /etc/sudoers && chmod 4755 /etc/sudoers

    chown root:root /etc/sudoers.d && chmod 4755 /etc/sudoers.d

    chown root:root /etc/sudoers.d/README && chmod 4755 /etc/sudoers.d/README

    chown root:root /var/lib/sudo && chmod 4755 /var/lib/sudo

    按 Ctrl+D。resume使用箭头键选择选项,然后按 Enter。关闭系统电源。

  3. 下载操作系统并将其放在 DVD/闪存驱动器上

    接下来,下载该字段中列出的 Ubuntu 版本。使用其他版本可能会导致此过程失败。将操作系统放在 DVD 或闪存驱动器上。

  4. 从 USB 驱动器/DVD 启动受影响的计算机

    将光盘或闪存驱动器插入chmod受影响的计算机。启动计算机并告诉它从 USB 驱动器或 DVD 启动。您可能需要咨询计算机制造商如何执行此操作。让计算机启动。这可能需要一段时间,具体取决于您的计算机的速度。

    当您看到弹出一个包含 2 个选项的菜单时,Try UbuntuInstall Ubuntu,单击该Try Ubuntu选项。您应该会看到一个桌面。打开 2 个文件资源管理器窗口。一个应该位于计算机启动驱动器的根目录,另一个应该位于/home/<your_username>计算机启动驱动器上的 。

  5. 获取 DVD/USB 驱动器操作系统的权限

    打开终端(Ctrl+Alt+T)。输入sudo su。接下来,输入以下命令。

    find /bin -depth -printf 'chmod %m %p\n' > bin

    find /boot -depth -printf 'chmod %m %p\n' > boot*

    find /dev -depth -printf 'chmod %m %p\n' > dev

    find /etc -depth -printf 'chmod %m %p\n' > etc

    find /lib -depth -printf 'chmod %m %p\n' > lib

    find /proc -depth -printf 'chmod %m %p\n' > proc

    您可能会在此处看到一些错误。您可以放心地忽略它们。

    find /run -depth -printf 'chmod %m %p\n' > run

    您可能会在此处看到错误。您可以放心地忽略它。

    find /sbin -depth -printf 'chmod %m %p\n' > sbin

    find /usr -depth -printf 'chmod %m %p\n' > usr

    find /var -depth -printf 'chmod %m %p\n' > var

    *仅当您无法启动系统时。

    现在,关闭终端。打开另一个文件资源管理器窗口并导航到 /home/ubuntu。Xubuntu 将使用 /home/xubuntu。Kubuntu 将使用 /home/kubuntu。请遵循此命名约定。

    您将看到 9 或 10 个文件。它们的名称分别为 bin、boot*、dev、etc、lib、proc、run、sbin、usr 和 var。将它们复制到您的主文件夹。

  6. 应用新权限

    如果您无法启动系统并登录

    打开另一个终端。输入sudo su。接下来,输入fdisk -l。查找您的启动驱动器或挂载了 /home 的驱动器。它通常是最大的驱动器,具有最大的分区。在我的情况下,它是 /dev/sda1。记下它。

    接下来,输入cd /。之后,输入cd /mount。然后输入ls。您应该会看到一个且只有一个目录。输入cd /<directory>。接下来,输入mkdir mount1。之后,输入mount -t ext4 <disk here> /mount/<directory>/mount1,将其替换<disk here>为您记下的驱动器名称。

    现在,输入 cd /mount/<directory>/mount1。您现在位于受损启动驱动器的根目录中。输入cd /home/<username>,替换<username>为您的用户名。输入gedit boot。如果它说未安装 gedit,请输入mousepad boot。如果它说未安装 mousepad,请将 mousepad 替换为您的发行版默认文本编辑器的名称(全部小写)。将弹出一个窗口。使用文本编辑器的查找和替换功能将其替换/boot/mount/<directory>/mount1/boot。告诉它替换完全匹配的内容。完成后,转到文件的最顶部,在第一行开头按 Enter,转到新的空白行,然后输入#!/bin/sh。单击文件,然后单击另存为,将其另存为 boot.sh。关闭文件并返回终端。

    输入chmod +x boot.sh。不会弹出任何消息。最后,输入./boot.sh。您可能会看到一些错误,您可以放心地忽略它们。

    按照下一节中的说明进行操作。

    如果你可以启动系统并登录

    重启电脑。当系统提示移除安装介质时,请移除。让电脑重启。在启动过程中,您可能会看到大量错误。请忽略这些错误。打开 /home 目录和终端。输入sudo su。输入您的密码。输入以下命令:

    chmod 777 bin

    chmod 777 dev

    chmod 777 etc

    chmod 777 lib

    chmod 777 proc

    chmod 777 run

    chmod 777 sbin

    chmod 777 usr

    chmod 777 var

    运行这些命令时要小心。确保终端提示符root@computername:/home/<username>#在没有输入任何内容时显示。

    现在,输入以下命令:

    ./bin

    ./dev

    ./etc

    ./lib

    ./proc

    ./run

    ./sbin

    ./usr

    ^

    这是最长的一个。在我的例子中,文本文件是 10.4兆字节在尺寸方面。

    ./var

    运行这些命令时,你将获得奥多尔斯错误。不要为此担心。事实上,它们可能转得太快,你根本看不清。等待提示返回后再发出下一个命令。

    此后,您的系统似乎已完全崩溃。快捷方式将停止工作,应用程序将停止打开。退出终端,保存您的工作,然后关闭所有应用程序。强制关闭计算机。重新打开电源。让它重新启动并登录。同样,sudo会再次崩溃。

    按照下一部分进行修复sudo

  7. sudo再次修复

    重新启动进入恢复模式并进入 root 提示符。输入以下命令:

    mount -o remount /

    这将以读写模式重新安装您的启动驱动器。如果没有这个,接下来的命令将失败。

    chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

    chown root:root /usr/lib/sudo && chmod 4755 /usr/lib/sudo

    chown root:root /usr/lib/sudo/sudoers.so && chmod 4755 /usr/lib/sudo/sudoers.so

    chown root:root /etc/sudoers && chmod 4755 /etc/sudoers

    chown root:root /etc/sudoers.d && chmod 4755 /etc/sudoers.d

    chown root:root /etc/sudoers.d/README && chmod 4755 /etc/sudoers.d/README

    chown root:root /var/lib/sudo && chmod 4755 /var/lib/sudo

    按 Ctrl+D。使用箭头键突出显示该resume选项。按 Enter。让系统启动。登录并打开终端。输入sudo并按 Enter。您应该会看到参数列表,但没有错误或/etc/sudoers is world writable消息。

恭喜, 您已修复 Ubuntu 安装!

这只能作为最后一招。可能存在未纠正的安全错误,影响系统安全。计划备份数据并从头开始重新安装系统。我强烈建议格式化硬盘。如果您有/home单独的驱动器,请备份其中的所有个人文件并格式化该磁盘。

这样做的目的是在 CHMOD 灾难之后让您的系统再次合理安全,让您安全地获取文件并准备重新安装。

我希望这有帮助。:)

相关内容