Программа login используется для запуска нового сеанса в системе. Как правило, эта программа вызывается автоматически и выводит приглашение login: на терминал пользователя. Программа login может восприниматься оболочкой командной строки не как простая программа и вызываться не как подпроцесс. При вызове из оболочки login должна запускаться посредством вызова exec login, что приводит к завершению работы пользователя в текущей оболочке (и, таким образом, вновь входящий в систему пользователь не попадёт в сеанс вызвавшего). Попытка запустить login из любой оболочки, отличной от регистрационной, приводит к сообщению об ошибке.
В какой-то момент пользователя попросят ввести свой пароль. Чтобы не допустить раскрытия, символы при вводе пароля не отображаются. Разрешено очень маленькое количество попыток ввода неправильного пароля, перед тем как login закончит работу и прервёт подключение.
Если включён механизм устаревания пароля учётной записи, то перед входом в систему может потребоваться смена пароля. Для этого нужно ввести старый пароль и новый пароль. Подробней об этом написано в passwd(1).
Значение идентификатора учётной записи и группы будет взято из файла /etc/passwd. Значения переменных $HOME, $SHELL, $PATH, $LOGNAME и $MAIL устанавливаются согласно соответствующим полям учётной записи пользователя. Также могут быть установлены значения ulimit, umask и nice из поля GECOS.
В некоторых системах переменной окружения $TERM будет присвоен тип терминала линии tty, согласно данным из файла /etc/ttytype.
Также может быть выполнен сценарий инициализации пользовательского интерпретатора команд. Подробней об этой функции смотрите соответствующую справочную страницу.
Субсистемный вход в систему можно распознать по наличию символа «*» в начале регистрационной оболочки. Заданный домашний каталог будет использован как корень новой файловой системы, в которой регистрируется пользователь.
Программа login НЕ удаляет записи о пользователях из файла utmp. Эта задача программ getty(8) и init(8) --- удалять записи о владельце терминального сеанса. Если login запускается из командной строки без exec, то пользователь продолжает находиться в системе даже после завершения работы в «порождённом сеансе».
-f
Замечание: в этом случае имя_пользователя обязательно.
-h
-p
-r
Параметры -r, -h и -f используются только если login запускается суперпользователем.
Данная версия login может быть собрана с разными параметрами и только некоторые из них смогут быть использованы на любой машине.
Расположение файлов может отличаться на разных системах.
Программа login НЕ удаляет записи о пользователях из файла utmp. Эта задача программ getty(8) и init(8) --- удалять записи о владельце терминального сеанса. Если login запускается из командной строки без exec, то пользователь продолжает находиться в системе даже после завершения работы в «порождённом сеансе».
Как и для любой программы, запуск login может быть подделан. Если неуполномоченные пользователи имеют физический доступ к машине, то атакующий может использовать это для получения пароля следующего человека, который будет работать за машиной. Под Linux пользователи могут использовать механизм SAK для установления достоверного пути и таким образом предотвращения атаки.
На работу этого инструмента влияют следующие переменные настройки из /etc/login.defs:
CONSOLE_GROUPS (строка)
Используйте осторожно --- может дать пользователям постоянный доступ к этим группам, даже если они не входили с консоли.
DEFAULT_HOME (логический)
Если равно yes, то пользователь будет попадать в корневой каталог (/), если невозможно выполнить cd в его домашний каталог.
ENV_PATH (строка)
ENV_SUPATH (строка)
ERASECHAR (число)
Значение может начинаться с «0» при указании значения в восьмеричной системе счисления или «0x» при указании значения в шестнадцатеричной системе счисления.
FAIL_DELAY (число)
FAKE_SHELL (строка)
HUSHLOGIN_FILE (строка)
KILLCHAR (число)
Значение может начинаться с «0» при указании значения в восьмеричной системе счисления или «0x» при указании значения в шестнадцатеричной системе счисления.
LOGIN_RETRIES (число)
Наиболее вероятно это значение будет переопределено PAM, так как по умолчанию в модуле pam_unix определено 3 попытки. Однако, это значение является резервом, если вы используете модуль аутентификации, который не учитывает PAM_MAXTRIES.
LOGIN_TIMEOUT (число)
LOG_OK_LOGINS (логический)
LOG_UNKFAIL_ENAB (логический)
Замечание: протоколирование неизвестных имён пользователя может привести к проблемам с безопасностью, если пользователь введёт свой пароль вместо своего имени.
TTYGROUP (строка), TTYPERM (строка)
По умолчанию, терминалом владеет первичная группа пользователя, а права устанавливаются в 0600.
В TTYGROUP может задаваться или имя группы, или числовой идентификатор группы.
Если ваша программа write имеет «setgid» со специальной группой, которой принадлежат терминалы, то присвойте TTYGROUP номер этой группы, а TTYPERM значение 0620. В противном случае оставьте TTYGROUP закомментированной и назначьте TTYPERM значение 622 или 600.
TTYTYPE_FILE (строка)
USERGROUPS_ENAB (логический)
/var/run/utmp
/var/log/wtmp
/etc/passwd
/etc/shadow
/etc/motd
/etc/nologin
/etc/ttytype
$HOME/.hushlogin
/etc/login.defs
mail(1), passwd(1), sh(1), su(1), login.defs(5), nologin(5), passwd(5), securetty(5), getty(8).