ATAD #19 – Linux login program
The login
program is used when signing onto a system. It can also be used to switch from one user to another at any time (most modern shells have support for this feature built into them, however).
If an argument is not given, login prompts for the username.
If the user is not root
, and if /etc/nologin
exists, the contents of this file are printed to the screen, and the login is terminated. This is typically used to prevent logins when the system is being taken down.
If special access restrictions are specified for the user in /etc/usertty
, these must be met, or the log in attempt will be denied and a syslog
message will be generated.
If the user is root
, then the login must be occurring on a tty listed in /etc/securetty
. Failures will be logged with the syslog
facility. If the file does not exist, root is allowed to log in on any tty.
After these conditions have been checked, the password will be requested and checked (if a password is required for this username). Ten attempts are allowed before login dies, but after the first three, the response starts to get very slow. Login failures are reported via the syslog
facility. This facility is also used to report any successful root logins.
If the file .hushlogin
exists, then a “quiet” login is performed (this disables the checking of mail and the printing of the last login time and message of the day). Otherwise, if /var/log/lastlog exists, the last login time is printed (and the current login is recorded).
Random administrative things, such as setting the UID
and GID
of the tty are performed. The TERM
environment variable is preserved, if it exists (other environment variables are preserved if the -p option is used). Then the HOME, PATH, SHELL, TERM, MAIL,
and LOGNAME
environment variables are set. PATH
defaults to /usr/local/bin:/bin:/usr/bin for normal users, and to /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin for root. Last, if this is not a “quiet” login, the message of the day is printed and the file with the user’s name in /var/spool/mail will be checked, and a message printed if it has non-zero length.
The user’s shell is then started. If no shell is specified for the user in /etc/passwd
, then /bin/sh
is used. If there is no directory specified in /etc/passwd
, then /
is used (the home directory is checked for the .hushlogin
file described above).
Further Reading: nologin
, /etc/passwd
, /etc/shadow
, PAM
Pluggable Authentication Modules
__tipped__
Leave a Reply