I deleted the "/etc/passwd" file and cannot log in
Solution 1:
No, given your description, you did not lose any of your files (except /etc/passwd
, which you deleted, but which you had backed up).
Boot an Ubuntu live CD/DVD or live USB flash drive. Select Try Ubuntu
(not Install Ubuntu
). When the desktop loads, open a Nautilus (file browser) window. You can find the partition for your Ubuntu system under Devices
. Click on it to mount it.
Now you can restore the backup. You have to do it as root, however. Here's one pretty easy way to do it.
Open a Terminal window (Ctrl+Alt+T). In the Terminal, type
cd
and type the Space key, but don't press Enter yet.In Nautilus, find the
etc
directory inside the installed Ubuntu system. (This is not the same as theetc
directory for the live CD. Theetc
directory inside the installed Ubuntu system is in the partition you just mounted.)Drag this
etc
directory into the Terminal, which will paste its full path into the Terminal, completing thecd ...
command.Press Enter to run the command. Now you're in the directory that contained your
passwd
file. I am assuming that your backup file,passwd_bkp
, is also located here.-
Run this command:
sudo cp passwd_bkp passwd
That restores the passwd
file from your backup, so now you should be able to reboot, remove the CD/DVD or USB flash drive, and boot back into your installed Ubuntu system. Your installed Ubuntu system should work again.
For the future, you should be aware that it is not recommended to manually edit /etc/passwd
, /etc/group
, /etc/shadow
, or /etc/gshadow
. Instead, you should use the utilities provided as part of Ubuntu to make any changes you need to users and groups on your system. You're probably aware that you can edit this in System Settings or with users-admin
. But there are also very powerful command-line utilities for this, which are still much safer and easier than manually editing the configuration files yourself. Here's documentation on the most relevant such utilities in Ubuntu:
-
adduser
/addgroup
-
deluser
/delgroup
usermod
groupmod
-
useradd
(lower-level thanadduser
, you should usually useadduser
instead) -
userdel
(lower-level thandeluser
, you should usually usedeluser
instead) -
groupadd
(lower-level thanaddgroup
, you should usually useaddgroup
instead) -
groupdel
(lower-level thandelgroup
, you should usually usedelgroup
instead) passwd
gpasswd
pwck
grpck
You can change your username with some of those utilities. This answer explains one way in detail. However, you should be aware (as is currently touched on by a comment there) that some applications assume your username remains the same. So changing your username might cause some problems.
Solution 2:
As an alternative to booting a livecd, you could press e
at the grub menu to edit the rescue mode entry, and add init=/bin/sh
to the kernel arguments. This will drop you right to a root shell where you can copy the backup file back to the original after remounting the filesystem read-write with mount -o remount,rw /
.
Solution 3:
You should read first Eliah Kagan's answer, before continuing reading this answer. He explains how to deal with the situation and why it is usually not necessary to change /etc/passwd manually.
Anyhow if you really know what you are doing and you need to edit /etc/passwd
manually, you can do it, but still you should not simply change the files with your favourite editor. Instead there is the tool
vipw
From the man pages:
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.
For e.g. if you want to change a users UID, as far as I know, to edit the files manually, is the only way. Also if you want to change a users password and then back to its previous without knowing it, there is no way with usermod
or so. But if you save the hashed password form the shadow file, then change the user's password you can afterwards add the hashed password again editing the shadow file with vipw -s
.