手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

login(1)

名称

login - 登录系统

用法概要

login [-p] [-d device] [-R repository] [-s service] 
     [-t terminal] [-u identity] [-U ruser] 
     [-h hostname [terminal] | -r hostname] 
     [name [environ]...]

描述

login 命令用于每个终端会话的开始,可向系统标识用户的身份。当上一个用户通过发出 exit 命令终止登录 shell 后,下一个用户首次建立连接时,系统将调用 login

login 无法作为命令来调用,除非由超级用户执行。

如果 login 作为命令来调用,它必须替换初始命令解释程序。要以这种方式调用 login,请键入:

exec login

(从初始 shell 中)。C shell 和 Korn shell 都有其自己的 login 内置命令。有关登录内置命令和使用方法的说明,请参见 ksh(1)ksh88(1)csh(1)

如果适用,login 会要求提供您的用户名(如果未作为参数提供)和口令。当您键入口令时请尽可能关闭回显,从而不会出现在该会话的写入记录中。

如果在登录过程中出现任何错误,将输出以下消息:

Login incorrect

并显示新的登录提示。如果进行了五次错误的登录尝试,所有五次尝试都可以记录在 /var/adm/loginlog(如果存在)中。TTY 行已删除。

如果已打开口令有效期功能,并且口令已到期(有关更多信息,请参见 passwd(1)),将强制用户更改口令。在这种情况下,将参考 /etc/nsswitch.conf 文件以确定口令信息库(请参见 nsswitch.conf(4))。仅对以下五种情况支持口令更新配置。

  • passwd: files

  • passwd: files nis

  • passwd: compat (==> files nis)

配置不符合要求会阻止用户登录系统,因为 passwd(1) 会失败。如果未能在一定时间内成功完成登录,则可能已无提示地断开连接。

成功登录后,将更新记帐文件。设备所有者、组和权限将根据 /etc/logindevperm 文件的内容进行设置,并将输出您上次登录的时间(请参见 logindevperm(4))。

用户 ID、组 ID、辅助组列表和工作目录将初始化,并启动命令解释程序。

基本环境会如下进行初始化:

HOME=your-login-directory
LOGNAME=your-login-name
PATH=/usr/bin:
SHELL=last-field-of-passwd-entry
MAIL=/var/mail/
TZ=timezone-specification

对于 Bourne shell 和 Korn shell 登录,shell 将执行 /etc/profile$HOME/.profile(如果存在)。

对于 ksh Korn shell,交互式 shell 将执行 /etc/ksh.kshrc,后跟 ENV 环境变量指定的文件。如果未设置 $ENV,将缺省为 $HOME/.kshrc。对于 ksh/usr/xpg4/bin/sh Korn Shell,交互式 shell 将执行 $ENV 指定的文件(没有缺省值)。

对于 C shell 登录,shell 将执行 /etc/.login$HOME/.cshrc$HOME/.login。缺省 /etc/profile/etc/.login 文件将检查配额(请参见 quota(1M)),输出 /etc/motd,并检查邮件。如果文件 $HOME/.hushlogin 存在,将不会输出任何消息。命令解释程序的名称将设置为 (短横线),后跟该解释程序路径名称的最后组成部分,如 −sh

如果口令文件中的 login-shell 字段(请参见 passwd(4))为空,则使用缺省命令解释程序 /usr/bin/sh。如果此字段是 *(星号),则指定的目录将成为根目录。此时,将在新的级别重新执行 login,该级别必须拥有其自己的根结构。

执行时或 login 请求您的登录名时,通过向 login 提供其他参数可以展开或修改环境。参数可以采取 xxxxxx=yyy 的形式。没有 =(等号)的参数将以下列形式置于环境中:

Ln=xxx

其中,n 是以 0 开始的数字,并且每次需要一个新的变量名称时将递增。包含 =(等号)的参数可不加修改地置于环境中。如果它们已出现在环境中,将替换较旧的值。

有两个例外:变量 PATH 和 SHELL 无法更改。这可以防止登录到受限 shell 环境的人员派生不受限的二级 shell。login 了解简单的单字符引用约定。在字符前键入 \ (反斜杠)即可引用该字符,并允许包含空格和制表符这样的字符。

此外,通过向 login 提供 –p 标志可以传递当前环境。此标志表示应该将当前定义的所有环境变量传递到新的环境(如果可能)。此选项不会绕过任何上述的环境变量限制。如果变量通过这两种方法传递,将优先选择登录行上指定的环境变量。

要启用 root 用户远程登录,请编辑 /etc/default/login 文件,在 CONSOLE=/dev/console 条目前插入 #(井号)。请参见“文件”部分。

安全

对于文件(passwd(4)shadow(4))名称服务或 ldap 名称服务中的帐户,当使用 enableShadowUpdate true 配置时,如果连续的失败登录尝试次数等于或超出配置的值,帐户可以配置为自动锁定。请参见 ldapclient(1M)user_attr(4)policy.conf(4)pam_unix_auth(5)

login 命令使用 pam(3PAM) 进行验证、帐户管理、会话管理和口令管理。列在 /etc/pam.conf/etc/pam.d/login 中的 PAM 配置策略可指定要用于 login 的模块。以下是 pam.conf 文件的一部分,其中具有 login 命令使用 UNIX 验证、帐户管理和会话管理模块的相应条目:


login  auth       required  pam_authtok_get.so.1
login  auth       required  pam_dhkeys.so.1
login  auth       required  pam_unix_auth.so.1
login  auth       required  pam_dial_auth.so.1

login  account    requisite pam_roles.so.1
login  account    required  pam_unix_account.so.1

login  session    required  pam_unix_session.so.1

/etc/pam.d/ 中的等效 PAM 配置将是 /etc/pam.d/login 中的以下条目:

auth     required  pam_authtok_get.so.1
auth     required  pam_dhkeys.so.1
auth     required  pam_unix_auth.so.1
auth     required  pam_dial_auth.so.1
account  requisite pam_roles.so.1
account  required  pam_unix_account.so.1

session  required  pam_unix_session.so.1

/etc/pam.conf 中的口令管理栈通常如下所示:

other  password   required   pam_dhkeys.so.1
other  password   requisite  pam_authtok_get.so.1
other  password   requisite  pam_authtok_check.so.1
other  password   required   pam_authtok_store.so.1

如果 /etc/pam.conf/etc/pam.d/service 中没有 PAM 服务的条目,则将使用 /etc/pam.conf 中“”其他服务的条目。如果 /etc/pam.conf 中没有 “other” 服务的条目,那么将使用 /etc/pam.d/other 中的条目。如果列出多个验证模块,将提示用户输入多个口令。

当通过 rlogindtelnetd 调用 login 时,PAM 使用的服务名分别是 rlogintelnet

选项

支持以下选项:

–d device

login 接受设备选项 devicedevice 被视为要执行 login 的 TTY 端口的路径名。使用设备选项有望提高 login 性能,因为 login 不需要调用 ttyname(3C)–d 选项仅可用于 UID 和有效 UID 是 root 的用户。任何其他使用 –d 的尝试可导致 login 静默退出。

–h hostname [terminal]

in.telnetd(1M) 用于传递有关远程主机和终端类型的信息。

作为 –h 选项的第二个参数的终端类型不应以连字符 (-) 开头。

–p

用于将环境变量传递给登录 shell。

–r hostname

in.rlogind(1M) 用于传递有关远程主机的信息。

–R repository

用于指定 PAM 系统信息库,该系统信息库应该用于通知 PAM 有关 “identity” 的信息(请参见下文的选项 –u)。如果没有传递 “identity” 信息,则没有使用系统信息库。

–s service

指示应该使用的 PAM 服务名称。通常情况下,此参数不是必需的,仅用于指定备用 PAM 服务名称。例如:Kerberized telnet 进程的 “ktelnet”。

–u identity

指定与正在验证的用户关联的 “identity” 字符串。这通常与用户的 Unix 登录名相同。对于 Kerberized 登录会话,这是与该用户关联的 Kerberos 主体名称。

–U ruser

指示尝试登录 rlogin 连接的远程端的人员名称。当 in.rlogind(1M) 在 Kerberized 模式下执行时,该守护进程将先处理终端和远程用户名信息,再调用 login,因此 “ruser” 数据是使用此命令行参数指示的。通常情况下(非 Kerberos 验证的 rlogin),login 守护进程会从客户端读取远程用户信息。

退出状态

将返回以下退出值:

0

操作成功。

非零

错误。

文件

$HOME/.cshrc

每个 csh 的初始命令。

$HOME/.hushlogin

禁止登录消息。

$HOME/.kshrc

交互式 ksh 的用户命令(如果未设置 $ENV);在 /etc/ksh.kshrc 后执行。

$HOME/.login

csh 的用户登录命令。

$HOME/.profile

shksh 的用户登录命令。

$HOME/.rhosts

可信主机名/用户名组合的专用列表。

/etc/.login

系统范围的 csh 登录命令。

/etc/issue

问题或项目标识。

/etc/ksh.kshrc

交互式 ksh 的系统范围命令。

/etc/logindevperm

基于登录的设备权限。

/etc/motd

每日消息 (Message-of-the-day)。

/etc/nologin

向尝试在计算机关机时登录的用户显示的消息。

/etc/passwd

口令文件。

/etc/profile

系统范围的 shksh 登录命令。

/etc/shadow

用户的加密口令列表。

/usr/bin/sh

用户的缺省命令解释程序。

/var/adm/lastlog

上次登录的时间。

/var/adm/loginlog

失败的登录尝试的记录。

/var/adm/utmpx

记帐。

/var/adm/wtmpx

记帐。

/var/mail/your-name

用户 your-name 的邮箱。

/etc/default/login

可以在 /etc/default/login 中为以下标志设置缺省值。缺省值指定为 /etc/default/login 文件中的注释,例如 TIMEZONE=EST5EDT

TIMEZONE

设置 shell 的 TZ 环境变量(请参见 environ(5))。

HZ

设置 shell 的 HZ 环境变量。

ULIMIT

设置登录的文件大小限制。单位是磁盘块。缺省值为零(无限制)。

CONSOLE

如果设置了值,root 用户只可以登录该设备。这不会阻止通过 rsh(1) 执行远程命令。注释掉该行可允许由 root 用户登录。

PASSREQ

确定登录是否需要非空口令。

ALTSHELL

确定登录是否需要设置 SHELL 环境变量。

PATH

设置初始 shell PATH 变量。

SUPATH

设置根路径的初始 shell PATH 变量。

TIMEOUT

设置放弃登录会话前等待的秒数(在 0900 之间)。

UMASK

设置初始 shell 文件创建模式的掩码。请参见 umask(1)

SYSLOG

确定 syslog(3C) LOG_AUTH 工具是否应该用于在 LOG_NOTICE 级别上记录所有 root 用户登录,以及在 LOG_CRIT 中记录多次失败的登录尝试。

DISABLETIME

如果存在并大于零,则是发生 RETRIES 次失败尝试或 PAM 框架返回 PAM_ABORT 后,login 所等待的秒数。缺省值为 20 秒。最小值为 0 秒。不会强制任何最大值。

SLEEPTIME

如果存在,设置登录失败消息输出到屏幕上之前所等待的秒数。这用于 PAM_ABORT 之外的所有登录失败。允许再进行一次登录尝试,前提是 RETRIES 尚未达到,或 PAM 框架返回了 PAM_MAXTRIES。缺省值为 4 秒。最小值为 0 秒。最大值为 5 秒。

su(1M)sulogin(1M) 都受到 SLEEPTIME 值的影响。

RETRIES

设置登录的重试次数(请参见 pam(3PAM))。缺省值为 5。最大的重试次数为 15。对于使用自动锁定配置的帐户(请参见上文 SECURITY),帐户会锁定并退出 login。如果未配置自动锁定,则将退出 login 而不锁定该帐户。

SYSLOG_FAILED_LOGINS

用于在通过 syslog(3C) LOG_NOTICE 工具记录失败的登录消息之前,确定系统允许的失败登录尝试次数。例如,如果变量设置为 0login 将记录所有失败的登录尝试。

/etc/default/login 列出的标志中,sshd(1M)(所看到的)将使用:

  • TIMEZONE

  • HZ

  • ALTSHELL

  • PATH

  • SUPATH

  • CONSOLE

  • PASSREQ

  • UMASK

  • ULIMIT

  • RETRIES

  • SYSLOG_AFTER_FAILED_LOGINS

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os
接口稳定性
Committed(已确定)

另请参见

csh(1)exit(1)ksh(1)ksh88(1)mail(1)mailx(1)newgrp(1)passwd(1)rlogin(1)rsh(1)sh(1)shell_builtins(1)telnet(1)umask(1)in.rlogind(1M)in.telnetd(1M)user_attr(4)policy.conf(4)logins(1M)quota(1M)sshd(1M)su(1M)sulogin(1M)syslogd(1M)useradd(1M)userdel(1M)pam(3PAM)rcmd(3SOCKET)syslog(3C)ttyname(3C)auth_attr(4)exec_attr(4)hosts.equiv(4)issue(4)logindevperm(4)loginlog(4)nologin(4)nsswitch.conf(4)pam.conf(4)passwd(4)policy.conf(4)profile(4)shadow(4)user_attr(4)utmpx(4)wtmpx(4)attributes(5)environ(5)pam_unix_account(5)pam_unix_auth(5)pam_unix_session(5)pam_authtok_check(5)pam_authtok_get(5)pam_authtok_store(5)pam_dhkeys(5)pam_passwd_auth(5)termio(7I)

诊断

Login incorrect

无法匹配用户名或口令。

Not on system console

已拒绝 Root 用户登录。检查 /etc/default/login 中的 CONSOLE 设置。

No directory! Logging in with home=/

找不到 passwd(4) 数据库中指定的用户起始目录,或其中包含错误的权限。请与您的系统管理员联系。

No shell

无法执行 passwd(4) 数据库中指定的 shell。请与您的系统管理员联系。

NO LOGINS: System going down in N minutes

该计算机处于关机过程中,已禁用登录。

警告

UID 大于 76695844 的用户不受口令有效期影响,并且系统不会记录其上次登录的时间。

如果使用 CONSOLE 设置来禁用 root 用户登录,则也应该禁用 root 用户远程执行命令。有关更多详细信息,请参见 rsh(1)rcmd(3SOCKET)hosts.equiv(4)