我正在使用Ubuntu 18.04。
我将/etc
文件夹重命名为apache2
。那是我最大的错误
现在我无法将其重命名,因为我需要使用sudo
,但是尝试时出现错误
sudo: unknown uid 1000
我该如何解决这个问题?我没有要启动的实时系统,在恢复模式下,根终端打开,然后关闭说cannot open password database
。
我正在使用Ubuntu 18.04。
我将/etc
文件夹重命名为apache2
。那是我最大的错误
现在我无法将其重命名,因为我需要使用sudo
,但是尝试时出现错误
sudo: unknown uid 1000
我该如何解决这个问题?我没有要启动的实时系统,在恢复模式下,根终端打开,然后关闭说cannot open password database
。
Answers:
解决此类问题的一种简便方法通常是从实时系统启动,在其上挂载根分区/mnt
,然后重命名该文件。
如果您没有运行中的系统或制作该系统的方法,或者您没有对该系统的物理访问权,但是可以重新启动并获取GRUB菜单,则可以使用GRUB编辑器获取root shell并重命名文件。
重新启动或关闭电源,然后打开,如果在启动时通常看不到GRUB菜单,请按Shift或Esc进入GRUB菜单。
将光标向下移动到Ubuntu的Advanced Options(高级选项)enter,然后按,然后按e编辑启动选项(仅一次-此处的更改将不会永久存在,因此我们不必随后进行清理)。
您将看到一个看起来像这样的屏幕1:
将光标向下移动到以开头的行,linux
然后将光标移动到该行的末尾或那里的内核引导参数中的任何位置。确保您在正确的行上并在此处仔细键入,因为如果未安装/etc
到位,系统可能无法启动。
添加文本init=/bin/bash
,然后按F10以启动。
这将以Bash shell作为init启动系统。您将获得一个root shell,并且文件系统将以只读方式挂载。2要使文件系统可写,请输入命令
mount -o remount,rw /
现在您可以重命名/etc
(您可能需要ls
先重命名)
mv /apache2 /etc
现在,您可以重新引导,或通过从根shell替换为普通的init系统3正常完成引导:
exec systemd
我在Ubuntu MATE 18.04上测试了此过程。
1 非常感谢Kulfy从VirtualBox获得高质量的GRUB编辑器屏幕截图!
2尽管/etc
在这种情况下无法从配置文件设置PATH ,但是Bash会自动设置一个。
3如果exec systemd
对您不起作用,exec /sbin/init
请解决问题。如果没有,readlink -e /sbin/init
则应给出应该运行的任何初始化程序的路径,然后可以exec
使用其完整路径。如果您无法通过这种方式进行操作,只需输入reboot
。
F10
仅出现几行,并在黑屏处停止。你能建议点什么吗?
如果您有活动的USB,则应该能够启动它并挂载现有的文件系统,然后/etc
从那里重命名。这是有关如何在需要时创建活动USB的教程。
一旦启动到实时USB(如果使用Ubuntu 18.04驱动器),则选择“不安装而尝试Ubuntu”,它实际上将为您提供Ubuntu安装的完整实例,该实例在关机后将不会持续。一旦启动,您将有以下几种选择:
命令行方式
打开一个终端并运行lsblk
。查找将成为原始安装驱动器的卷,并记下它是哪个编号(/ dev / sd#)
然后,使用创建驱动器的mkdir -p /mnt/directory
安装点,然后使用安装驱动器sudo mount /dev/sd# /mnt/directory
。使用导航到该目录,cd /mnt/directory
您现在应该位于安装的根目录中,但是现在可以使用一条有效sudo
命令。运行sudo mv apache2 etc
并重新启动到假设运行的操作系统。
图形方式
通过搜索“磁盘”打开磁盘实用程序。选择看起来像您的安装驱动器的卷并将其安装。打开文件管理器并选择已安装的卷,右键单击您的/apache2
文件夹并将其重命名为/etc
,然后重新启动。
sudo nautilus
从终端运行命令。(Ubuntu使用“ nautilus”作为文件管理器,就像Windows使用“ explorer”一样。)
sudo -H nautilus
避免使用root成为其中的配置文件的所有者$HOME
,这可能会使普通用户运行的程序无法访问它们。您可能已经意识到了这一点,但我想向其他读者提及。
mount
程序非常严格,始终必须以root用户身份运行;唯一的例外是当文件系统在其中fstab
并且具有user
选项时。该程序udisksctl
允许普通用户使用例如挂载设备udisksctl mount -b /dev/sda1
(它在中创建合适的挂载点/media/$USER/
)。我没有尝试udisksctl
从实时系统中使用,但是在实时系统上,总是一个特权用户sudo
,无需密码即可运行,因此不需要像udisksctl
这样有用的实用程序
/mnt
,进行重命名,重新启动。