Sometimes it might be necessary to start in single-user mode to do some administration work, or even reset an existing password.
Normally this can be achieved via the GRUB boot loader.
CentOS / RedHat (with root account enabled)
Switch on your system.
Press Esc until the GRUB menu shows up.
This will bring up the GNU GRUB menu. If the CentOS/RedHat logo/boot messages show up you will need to restart (Ctrl-Alt-Del) and try again.
Select the OS/boot you want to edit. Normally the first line. Press e to edit it.
CentOS Linux (3.10.0-1160.53.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.45.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.42.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.41.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.36.2.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-d0401f7cdedb4955a0a262b3e0054323) 7 (Core)
Use the ↑ and ↓ keys to change the selection.
Press 'e' to edit the selected item, or 'c' for command prompt.
You will need to find the entry for the kernel. Normally starts with linux16.
[...]
linux16 /vmlinuz-3.10.0-1160.53.1.el7.x86_64 root=/dev/mapper/centos_centos7-root ro rd.lvm.lv=centos_centos7/root rd.lvm.lv=centos_centos7/swap rhgb quite LANG=en_US.UTF-8
[..]
At the end of the line you can choose to add one of the following:
single
systemd.unit=rescue.target
systemd.unit=emergency.target
So that it looks like this:
[...]
linux16 /vmlinuz-3.10.0-1160.53.1.el7.x86_64 root=/dev/mapper/centos_centos7-root ro rd.lvm.lv=centos_centos7/root rd.lvm.lv=centos_centos7/swap rhgb quite LANG=en_US.UTF-8 single
[..]
Type Ctrl-X to exit and the system will start in single- user mode.
If required, remount the root filesystem:
# mount -o remount,rw /
[If there are other filesystems you need to mount from fstab:]
# mount --all
CentOS / RedHat (without root account enabled)
It might be that your system didn’t have a root account enabled, in which case the above steps will fail. There is a workaround.
Switch on your system.
Press Esc until the GRUB menu shows up.
This will bring up the GNU GRUB menu. If the CentOS/RedHat logo/boot messages show up you will need to restart (Ctrl-Alt-Del) and try again.
Select the OS/boot you want to edit. Normally the first line. Press e to edit it.
CentOS Linux (3.10.0-1160.53.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.45.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.42.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.41.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.36.2.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-d0401f7cdedb4955a0a262b3e0054323) 7 (Core)
Use the ↑ and ↓ keys to change the selection.
Press 'e' to edit the selected item, or 'c' for command prompt.
You will need to find the entry for the kernel. Normally starts with linux16.
[...]
linux16 /vmlinuz-3.10.0-1160.53.1.el7.x86_64 root=/dev/mapper/centos_centos7-root ro rd.lvm.lv=centos_centos7/root rd.lvm.lv=centos_centos7/swap rhgb quite LANG=en_US.UTF-8
[..]
At the end of the line add this:
rd.break
So that it looks like this:
[...]
linux16 /vmlinuz-3.10.0-1160.53.1.el7.x86_64 root=/dev/mapper/centos_centos7-root ro rd.lvm.lv=centos_centos7/root rd.lvm.lv=centos_centos7/swap rhgb quite LANG=en_US.UTF-8 rd.break
[..]
Type Ctrl-X to exit and the system will start emergency mode in read-only mode.
Remount the root filesystem as read/write:
# mount -o remount,rw /sysroot
Switch to the sysroot jail.
# chroot /sysroot
Reset the password, or do any required tasks.
If you have SELinux enforcing mode enabled it will protect the OS from any changes. After you change the password type the following to overcome this:
# touch /.autorelabel
Restart.
# reboot -f
Ubuntu / Debian
Switch on your system.
Press and hold the Shift key.
In some instances pressing the Esc key several times (instead of holding it) achieves the same result. Just be aware that if you press it too many times it will bring you to the GRUB CLI. You can type normal and you will get to the menu described below.
This will bring up the GNU GRUB menu. If the Ubuntu logo/boot messages show up you will need to restart (ctrl-alt-del) and try again.
Select Advanced Options on the GRUB menu.
GNU GRUB version 2.04
Ubuntu 20.04.4 LTS
*Advanced options for Ubuntu 20.04.4 LTS
History for Ubuntu 20.04.4 LTS
UEFI Firmware Settings
And select the recovery mode option. Normally the latest kernel installed on your system.
GNU GRUB version 2.04
* Ubuntu 20.04.4 LTS, with Linux 5.13.0-37-generic
** Ubuntu 20.04.4 LTS, with Linux 5.13.0-37-generic (recovery mode)
Ubuntu 20.04.4 LTS, with Linux 5.13.0-35-generic
Ubuntu 20.04.4 LTS, with Linux 5.13.0-35-generic (recovery mode)
This will boot the system and show a series of options. Select root.
Recovery Menu (filesystem state: read only)
resume Resume normal boot
clean Try to make free space
dpkg Repair broken packages
fsck Check all file systems
grub Update grub bootloader
network Enable networking
root Drop to root shell prompt
system-summary System summary
<OK>
This message will show. Press Enter.
Press Enter for maintenance
(or press Ctrl-D to continue)
If your / volume is ZFS it will be already read and write. Other filesystems might start in read only mode. If so, remount:
# mount -o remount,rw /
[If there are other filesystems you need to mount from fstab:]
# mount --all
Changing an user’s password
# passwrd <username>
Adding a new user
In the rare event of not having an user, you can add one and give it sudo privileges.
# useradd <username>
# usermod -a -G sudo <username>
# passwd <username>
Other OS
You can find description on how to get to single-user mode for other Linux distros in this Microsoft’s article.