Hack 2 Forgoing the Console Login
 
All of the access, none of the passwords
It will happen to you one day.
You'll need to
work on a machine for a friend or client who has
"misplaced" the root password on
which you don't have an account.
If you have console access and don't mind rebooting,
traditional wisdom beckons you to boot up in single user mode.
Naturally, after hitting Control-Alt-Delete, you simply wait for it
to POST and then pass the parameter single to the
booting kernel. For example, from the LILO prompt:
LILO: linux single
On many systems, this will happily present you with a root shell. But
on some systems (notably RedHat), you'll run into
the dreaded emergency prompt:
Give root password for maintenance
(or type Control-D for normal startup)
If you knew the root password, you wouldn't be here!
If you're lucky, the init
script will actually let you hit ^C at this stage and will drop you
to a root prompt. But most init processes are
"smarter" than that, and trap ^C.
What to do? Of course, you could always boot from a rescue disk and
reset the password, but suppose you don't have one
handy (or that the machine doesn't have a CD-ROM
drive).
All is not lost! Rather than risk running into the above mess,
let's modify the system with extreme prejudice,
right from the start. Again, from the LILO prompt:
LILO: linux init=/bin/bash
What does this do? Rather than start /sbin/init
and proceed with the usual /etc/rc.d/*
procedure, we're telling the kernel to simply give
us a shell. No passwords, no filesystem checks (and for that matter,
not much of a starting environment!) but a very quick, shiny new root
prompt.
Unfortunately, that's not quite enough to be able to
repair your system. The root filesystem will be mounted read-only
(since it never got a chance to be checked and remounted read/write).
Also, networking will be down, and none of the usual system daemons
will be running. You don't want to do anything more
complicated than resetting a password (or tweaking a file or two) at
a prompt like this. Above all: don't hit ^D or type
Exit! Your little shell (plus the kernel) constitutes the entire
running Linux system at the moment. So, how can you manipulate the
filesystem in this situation, if it is mounted read-only? Try this:
# mount -o remount,rw /
That will force the root filesystem to be remounted read-write. You
can now type passwd to change the root password
(and if the original admin lost the password, consider the
ramifications of giving them access to the new one. If you were the
original admin, consider writing it in invisible ink on a post-it
note and sticking it to your screen, or stitching it into your
underwear, or maybe even taking up another hobby).
Once the password is reset, DO NOT REBOOT. Since there is no
init running, there is no process in place for
safely taking the system down. The quickest way to shutdown safely is
to remount root again:
# mount -o remount,ro /
With the root partition readonly, you can confidently hit the Reset
button, bring it up in single-user mode, and begin your actual work.
|