意外重命名/ etc后,如何将其重命名?


36

我正在使用Ubuntu 18.04。

我将/etc文件夹重命名为apache2。那是我最大的错误

现在我无法将其重命名,因为我需要使用sudo,但是尝试时出现错误

sudo: unknown uid 1000

我该如何解决这个问题?我没有要启动的实时系统,在恢复模式下,根终端打开,然后关闭说cannot open password database


17
从安装介质启动,选择“尝试Ubuntu”,在上安装根文件系统/mnt,进行重命名,重新启动。
AlexP

如何启动安装介质?
浣熊

@ Zanna,shift没有显示任何菜单。也许其他按钮可以打开它?
浣熊

@Zanna,恢复菜单-> root打开终端,但提示无法打开密码数据库并关闭
Racoon

@Zanna,不,没有:(
Racoon

Answers:


62

解决此类问题的一种简便方法通常是从实时系统启动,在其上挂载根分区/mnt ,然后重命名该文件。

如果您没有运行中的系统或制作该系统的方法,或者您没有对该系统的物理访问权,但是可以重新启动并获取GRUB菜单,则可以使用GRUB编辑器获取root shell并重命名文件。

重新启动或关闭电源,然后打开,如果在启动时通常看不到GRUB菜单,请按ShiftEsc进入GRUB菜单。

将光标向下移动到Ubuntu的Advanced Options(高级选项)enter,然后按,然后按e编辑启动选项(仅一次-此处的更改将不会永久存在,因此我们不必随后进行清理)。

您将看到一个看起来像这样的屏幕1

GRUB菜单编辑器的屏幕截图

将光标向下移动到以开头的行,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


4
非常详尽,包括屏幕截图+1 :)
WinEunuuchs2Unix

3
@Kulfy非常感谢!太好了:DI无法使用VB,因为我没有足够的RAM。非常感谢您帮助改善我的答案
Zanna

3
我认为我将屏幕截图的
尺寸

1
@Racoon非常欢迎您,很高兴您已解决问题:)
Zanna

试图对其进行测试,但无法在Ubuntu 18.04.Desktop中运行。跟着指示一字不差。不工作 之后F10仅出现几行,并在黑屏处停止。你能建议点什么吗?
维杰

8

如果您有活动的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,然后重新启动。


“图形方式”不起作用,因为Rt上没有选项“重命名”。点击。
维杰

1
@Vijay这可能是由于文件权限所致,您将需要以根用户身份打开文件管理器以图形方式进行操作。为此,请sudo nautilus从终端运行命令。(Ubuntu使用“ nautilus”作为文件管理器,就像Windows使用“ explorer”一样。)
AJMansfield

2
@AJMansfield在实时系统上当然无关紧要,但是一般来说,我们应该sudo -H nautilus避免使用root成为其中的配置文件的所有者$HOME,这可能会使普通用户运行的程序无法访问它们。您可能已经意识到了这一点,但我想向其他读者提及。
赞纳

6
  1. 如图所示,制作可引导USB

  2. 通过按如下所示的键从USB引导

  3. 通过运行查找文件系统分区gparted。假设它是sdxy。

  4. 在终端上运行 sudo mount /dev/sdxy /mnt

  5. 在终端上运行 sudo mv /mnt/apache2 /mnt/etc

  6. 检查/ mnt中的文件系统以更改名称。

  7. 在终端上运行 sudo reboot

  8. 出现提示时,拔下USB并按Enter


@Kulfy我尝试过,但是没有sudo它将无法工作。看这里
维杰

这是因为sda2是通过sudo挂载的,因此只有sudo可以执行操作。但是,如果您通过nautilus挂载驱动器(没有任何特殊权限),则无需sudo即可执行任务。
Kulfy

检查它`ubuntu @ ubuntu:〜$ mount / dev / sda2 / mnt mount:只有root可以做那个ubuntu @ ubuntu:〜$
Vijay

1
AFAIK该mount程序非常严格,始终必须以root用户身份运行;唯一的例外是当文件系统在其中fstab并且具有user选项时。该程序udisksctl允许普通用户使用例如挂载设备udisksctl mount -b /dev/sda1(它在中创建合适的挂载点/media/$USER/)。我没有尝试udisksctl从实时系统中使用,但是在实时系统上,总是一个特权用户sudo,无需密码即可运行,因此不需要像udisksctl这样有用的实用程序
Zanna
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.