我试图运行chmod
一些文件,但意外指定了错误的目录。现在,sudo
它不起作用了,我重新启动了。我可以登录,但无法以 root 身份执行任何操作。我该如何修复这个问题?
这与使用 chown 命令将自己设置为 /etc 的所有者,现在出现各种错误
因为这描述了如果您无法启动系统该怎么办。它还解决了如果您chmod
在另一个目录上运行或只是意外指定(就像我一样)时可能遇到的问题。它还解释了当/如果它损坏时/
如何修复。sudo
答案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。此时,关闭系统电源。使固定
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。关闭系统电源。下载操作系统并将其放在 DVD/闪存驱动器上
接下来,下载该字段中列出的 Ubuntu 版本。使用其他版本可能会导致此过程失败。将操作系统放在 DVD 或闪存驱动器上。
从 USB 驱动器/DVD 启动受影响的计算机
将光盘或闪存驱动器插入
chmod
受影响的计算机。启动计算机并告诉它从 USB 驱动器或 DVD 启动。您可能需要咨询计算机制造商如何执行此操作。让计算机启动。这可能需要一段时间,具体取决于您的计算机的速度。当您看到弹出一个包含 2 个选项的菜单时,
Try Ubuntu
和Install Ubuntu
,单击该Try Ubuntu
选项。您应该会看到一个桌面。打开 2 个文件资源管理器窗口。一个应该位于计算机启动驱动器的根目录,另一个应该位于/home/<your_username>
计算机启动驱动器上的 。获取 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。将它们复制到您的主文件夹。
应用新权限
如果您无法启动系统并登录
打开另一个终端。输入
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
。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 灾难之后让您的系统再次合理安全,让您安全地获取文件并准备重新安装。
我希望这有帮助。:)