我试图更改我的用户名和主目录 ( /home/username
),结果系统开始崩溃。我删除了文件passwd
,但我有一个名为 的备份passwd_bkp
。我尝试将其重命名passwd_bkp
为passwd
,但没有成功。没有执行任何命令...我当时在一个终端窗口中。
我重新启动了系统,现在无法登录。GRUB 提供了两个选项:Linux 和恢复模式。
我尝试以 root 身份打开会话,但它说文件系统已损坏。我不能访问我的文件。
我丢失了所有文件吗?
答案1
不,根据您的描述,您没有丢失任何文件(除了/etc/passwd
,您已删除但已备份的文件)。
启动 Ubuntu Live CD/DVD 或 Live USB 闪存驱动器。选择Try Ubuntu
(不是Install Ubuntu
)。桌面加载后,打开 Nautilus(文件浏览器)窗口。您可以在 下找到 Ubuntu 系统的分区Devices
。单击它以安装它。
现在您可以恢复备份了。不过,您必须以 root 身份执行此操作。这里有一个非常简单的方法。
打开终端窗口 ( Ctrl+ Alt+ T)。在终端中,输入
cd
并键入Space键,但不要按下Enter。在 Nautilus 中,找到已安装的 Ubuntu 系统内的目录。(这与Live CD 的目录
etc
不同。已安装的 Ubuntu 系统内的目录位于您刚刚挂载的分区中。)etc
etc
将此
etc
目录拖入终端,它会将其完整路径粘贴到终端中,完成命令cd ...
。按Enter运行命令。现在您位于包含文件的目录中
passwd
。我假设您的备份文件passwd_bkp
也位于此处。运行此命令:
sudo cp passwd_bkp passwd
这passwd
将从您的备份中恢复文件,因此现在您应该能够重新启动、移除 CD/DVD 或 USB 闪存驱动器,然后重新启动到已安装的 Ubuntu 系统。您安装的 Ubuntu 系统应该可以再次运行。
未来,您应该知道,不建议手动编辑/etc/passwd
、/etc/group
、/etc/shadow
或/etc/gshadow
。相反,您应该使用 Ubuntu 提供的实用程序对系统上的用户和组进行任何必要的更改。您可能知道您可以在系统设置或使用 中编辑它users-admin
。但也有非常强大的命令行实用程序可用于此目的,它们比自己手动编辑配置文件更安全、更简单。以下是有关 Ubuntu 中最相关的此类实用程序的文档:
adduser
/addgroup
deluser
/delgroup
usermod
groupmod
useradd
(比 低级adduser
,通常应使用adduser
代替)userdel
(比 低级deluser
,通常应使用deluser
代替)groupadd
(比 低级addgroup
,通常应使用addgroup
代替)groupdel
(比 低级delgroup
,通常应使用delgroup
代替)passwd
gpasswd
pwck
grpck
你可以更改你的用户名使用其中一些实用程序。这个答案详细解释了一种方法。但是,您应该知道(正如目前评论中提到的那样),有些应用程序假设您的用户名保持不变。因此更改您的用户名可能会导致一些问题。
答案2
作为启动 livecd 的替代方法,您可以e
按 grub 菜单上的 编辑救援模式条目,并添加init=/bin/sh
到内核参数。这会将您直接带入 root shell,您可以在其中使用 重新挂载文件系统读写后将备份文件复制回原始文件mount -o remount,rw /
。
答案3
在继续阅读此答案之前,您应该先阅读 Eliah Kagan 的答案。他解释了如何处理这种情况以及为什么通常不需要手动更改 /etc/passwd。
无论如何如果你真正了解自己在做什么你呢需要/etc/passwd
手动编辑,您可以这样做,但您仍然不应该简单地用您最喜欢的编辑器更改文件。相反,有一个工具
vipw
从手册页中:
The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.
例如,如果您想更改用户的 UID,据我所知,手动编辑文件是唯一的方法。此外,如果您想在不知情的情况下更改用户密码,然后将其恢复为以前的密码,则无法使用 或usermod
。但是,如果您从影子文件中保存了哈希密码,然后更改了用户的密码,则之后您可以使用 再次编辑影子文件来添加哈希密码vipw -s
。
答案4
如果您可以登录,只需打开终端并尝试以下操作:
sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd
别的
启动到恢复模式或从 Ubuntu Live CD 启动。然后,安装旧驱动器:
mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd
然后重新启动。这将不会为 root 设置密码。
然后,您可以登录、重新创建所有帐户等。
您也可以使用名为(我认为)的备份/etc/passwd-
编辑:( 另一种方法我以前没有尝试过但我认为它也应该有效)
- 开机时启动 GRUB(Esc开机时按下)
- 按下e(恢复模式)
- 按下e以 kernel 开头的行
- 按下Space并输入
init=/bin/bash
- 按Enter
- 按b
- 在命令提示符下输入:
cp /etc/passwd- /etc/passwd
- 重新启动到 GRUB
- 按下e(恢复模式)
- 按下e以 kernel 开头的行
- 按下Space并输入
init=/bin/bash
- 按Enter
- 按b
- 在命令提示符下输入
mount -o remount,rw /
- 类型
passwd YOURUSERNAMEHERE
(如果您不知道您的用户名ls /home
,请输入(小写的 L 和小写的 S)以获取用户列表) - 提示时输入新密码
- 重新启动至正常启动。