//po4a: entry man manual
////
Copyright (C) 1998-2006 Miquel van Smoorenburg.
Copyright (C) 2012 Karel Zak <kzak@redhat.com>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
////
= sulogin(8)
:doctype: manpage
:man manual: System Administration
:man source: util-linux {release-version}
:page-layout: base
:command: sulogin
:asterisk: *

== NAME

sulogin - single-user login

== SYNOPSIS

*sulogin* [options] [_tty_]

== DESCRIPTION

*sulogin* is invoked by *init* when the system goes into single-user mode.

The user is prompted:

Give root password for system maintenance (or type Control-D for normal startup):

If the root account is locked and *--force* is specified, no password is required.

*sulogin* will be connected to the current terminal, or to the optional _tty_ device that can be specified on the command line (typically _/dev/console_).

When the user exits from the single-user shell, or presses control-D at the prompt, the system will continue to boot.

== OPTIONS

*-e*, *--force*::
If the default method of obtaining the root password from the system via *getpwnam*(3) fails, then examine _/etc/passwd_ and _/etc/shadow_ to get the password. If these files are damaged or nonexistent, or when root account is locked by '!' or '{asterisk}' at the begin of the password then *sulogin* will *start a root shell without asking for a password*.
//TRANSLATORS: Keep {asterisk} untranslated.
+
Only use the *-e* option if you are sure the console is physically protected against unauthorized access.

*-p*, *--login-shell*::
Specifying this option causes *sulogin* to start the shell process as a login shell.

*-t*, *--timeout* _seconds_::
Specify the maximum amount of time to wait for user input. By default, *sulogin* will wait forever.

*-h*, *--help*::
Display help text and exit.

*-V*, *--version*::
Display version information and exit.

== ENVIRONMENT

*sulogin* looks for the environment variable *SUSHELL* or *sushell* to determine what shell to start. If the environment variable is not set, it will try to execute root's shell from _/etc/passwd_. If that fails, it will fall back to _/bin/sh_.

== AUTHORS

*sulogin* was written by Miquel van Smoorenburg for sysvinit and later ported to util-linux by Dave Reisner and Karel Zak.

include::man-common/bugreports.adoc[]

include::man-common/footer.adoc[]

ifdef::translation[]
include::man-common/translation.adoc[]
endif::[]
