.\" 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
.\"
.TH SULOGIN "8" "July 2014" "util-linux" "System Administration"
.SH NAME
sulogin \- single-user login
.SH SYNOPSIS
.BR sulogin " [options]"
.RI [ tty ]
.SH DESCRIPTION
.B sulogin
is invoked by
.B init
when the system goes into single-user mode.
.PP
The user is prompted:
.IP "" .5i
Give root password for system maintenance
.br
(or type Control\-D for normal startup):
.PP
If the root account is locked and --force is specified, no password is required.
.PP
.B sulogin
will be connected to the current terminal, or to the optional \fItty\fR device that
can be specified on the command line (typically
.IR /dev/console ).
.PP
When the user exits from the single-user shell, or presses control\-D at the
prompt, the system will continue to boot.
.SH OPTIONS
.IP "\fB\-e\fR, \fB\-\-force\fP"
If the default method of obtaining the root password from the system via
.BR getpwnam (3)
fails, then examine
.I /etc/passwd
and
.I /etc/shadow
to get the password.  If these files are damaged or nonexistent, or when
root account is locked by '!' or '*' at the begin of the password then
.B sulogin
will \fBstart a root shell without asking for a password\fP.
.PP
.IP
Only use the
.B \-e
option if you are sure the console is physically protected against
unauthorized access.
.IP "\fB\-p\fR, \fB\-\-login\-shell\fP"
Specifying this option causes
.B sulogin
to start the shell process as a login shell.
.IP "\fB\-t\fR, \fB\-\-timeout \fIseconds\fP"
Specify the maximum amount of time to wait for user input.  By default,
.B sulogin
will wait forever.
.IP "\fB\-h\fR, \fB\-\-help\fP"
Display help text and exit.
.IP "\fB\-V\fR, \fB\-\-version\fP"
Display version information and exit.
.SH ENVIRONMENT VARIABLES
.B sulogin
looks for the environment variable
.B SUSHELL
or
.B sushell
to determine what shell to start.  If the environment variable is not set, it
will try to execute root's shell from
.IR /etc/passwd .
If that fails, it
will fall back to
.IR /bin/sh .
.SH AUTHOR
.B sulogin
was written by Miquel van Smoorenburg for sysvinit and later ported
to util-linux by Dave Reisner and Karel Zak.
.SH AVAILABILITY
The sulogin command is part of the util-linux package and is available from
.UR https://\:www.kernel.org\:/pub\:/linux\:/utils\:/util-linux/
Linux Kernel Archive
.UE .
