login 命令

用途

启动用户会话。

语法

login[-h HostName] [-p] [-f User | -k][-e Label] [-t Label] [User[Environment] ] ]

描述

login 命令 ( tsm 命令的一部分) 在系统上为 User 参数指定的用户启动会话。 还可以指定要添加至用户环境的环境变量。 这些命令是 Variable=Value 格式的字符串。 login 命令通常不在命令行上输入。

如果您尚未具有主目录,那么可以配置 login 命令在您登录时创建主目录。 login 命令调用 mkuser.sys 命令来创建主目录并定制帐户。 要启用此功能,请将 /etc/security/login.cfg 文件中 usw 节的 mkhomeatlogin 属性设置为true.

注意:
  1. 无法从命令行初始化 PATHIFSHOMESHELL 环境变量。
  2. login 命令支持多字节用户名。 建议系统管理员必须将用户名限制为可移植字符集中的字符,以避免任何不确定性。
  3. 如果存在 /etc/nologin 文件,那么系统会阻止用户登录并显示 /etc/nologin 文件的内容。 如果此文件存在,系统仍允许 root 用户登录。 重新启动系统时会除去 /etc/nologin 文件。
  4. 如果在 /etc/secvars.cfg 文件中设置了 domainlessgroups 属性,那么将从 LDAP 模块和文件模块访存所有组标识 (如果用户属于其中任何一个域)。

login 命令能够处理 分布式计算环境(DCE)下长达 1024 字符的用户名。 DCE 用户名存放在 LOGIN 环境变量中。 由于 DCE 用户名不遵从标准操作系统的要求,DCE 用户名的前 8 个字符存放在所有标准操作系统文件和环境中。

login 命令执行以下功能:

描述
检查帐户 login 命令验证用户帐户,确保进行认证、正确启用登录并且针对用于登录的端口容量正确。
认证用户 login 命令通过为每个用户使用系统定义的认证方法来验证用户的身份。 如果密码过期,那么用户必须提供新密码。 如果定义了辅助认证方法,那么会调用这些方法但不一定成功登录系统。
建立凭证 login 命令从用户数据库中为用户创建初始化凭证。 这些凭证定义用户对系统的访问权和可计帐性。
启动会话 login 命令从用户数据库、从命令行以及从 /etc/environment 配置文件初始化用户环境;将当前目录更改为用户的主目录(正常情况下);并运行用户 初始化程序。

这些函数以给定的顺序执行;如果其中之一失败,那么它以后的函数就不会执行。

当用户成功登录时, 登录 命令会在 /etc/utmp 文件中创建条目,以跟踪当前用户登录以及用于记帐目的的 /var/adm/wtmp 文件。 login 命令还设置 LOGINLOGNAME 环境变量。

关于每次不成功登录的信息记录在 /etc/security/failedlogin 文件中。 存储的信息与 /etc/utmp 文件中的信息相同,但无法识别的用户名记录为UNKNOWN_USER. 此检查可确保不允许将意外输入为用户名的密码 (例如,未加密的密码) 输入到系统中。

成功登录后,login 命令显示了本帐户上次成功以及不成功登录试图的日期、日期和时间,以及本帐户上次成功登录后总共不成功登录试图次数的信息。 如果主目录中有 .hushlogin 文件,那么不会发布这些消息。

login 命令还更改了用户登录端口的所有权。 这包含了任何在 /etc/security/login.cfg 文件中注释同义的端口。

为保留系统的完整性,一次仅允许一个会话登录端口。 此检查意味着从 shell 提示符输入的 login 命令无法成功,因为原始会话和新登录会话将在同一端口上。 但是,exec login 命令会成功,因为新 shell 会替换当前 shell。 login 命令是一个典型的内置 shell 命令,促使 shell 替换其自身。

可信AIX®系统上,您可以在登录时指定有效的敏感度标签 (SL),方法是使用-e标志指定标签和用户名。 要在登录期间指定生效完整性标签 (TL),请使用 -t 标志指定该标签。

如果标签包含空格,请在引号内指定该标签。 缺省的登录 SL 和 TL 在 /etc/security/user 文件中定义为用户属性。 如果该文件中未指定任何标签属性,将使用在缺省节中定义的标签属性。

您提供的标签必须能由您清除,并包含在系统信任范围内。 您可以在登录时使用 -e 标志指定 SL,使用 -t 标志指定 TL。 在带标签的网络中,除非是通过控制台成功登录,否则会为您分配该网络的标签,不管您是使用 -e 标志指定的标签还是 -t 标志指定的标签都是如此。

您的 SL 清除必须在为 /etc/security/login.cfg 文件中的 TTY 设备定义的范围之内。 用户的有效 TL 必须与 TTY 的 TL 相同。 成功登录之后,将对清除操作分配登录端口。

实用建议:
除非终端仅显示大写字母,否则请勿对用户名仅使用大写字母。

为了使用多字节用户名登录,必须首先 打开一个日语视窗(aixterm),然后从日语视窗启动新的登录。

标志

描述
-e 标签 指定用于登录可信AIX系统的有效敏感度标签。
限制: -e标志仅适用于运行可信AIX的系统。
-f 用户 标志已经认证过的用户。 如果登录进程的实标识为根(0),那么,该用户没有认证。
-h HostName 将登录标识为远程登录,并使用 HostName 变量指定请求登录的系统的名称。 这种格式的登录仅由 telnetdrlogind 守护程序使用。
-k 将登录标识为使用 Kerberos 认证,并使登录将控制权传递给 /usr/bin/k5dcelogin 来处理认证。 只有 krshd 守护程序才使用这种登录形式。
-p 通过将当前终端类型设置为 $TERM 环境变量的值而不是 CuAt/PdAt 对象类数据库中包含的类型来保留当前终端类型。
-t 标签 指定用于登录可信AIX系统的有效完整性标签。
限制: -t标志仅适用于运行可信AIX的系统。

安全性

login 命令是一个支持 PAM 的应用程序,服务名称是 login。 在 /etc/security/login.cfgusw 节中,通过修改 auth_type 属性值来将要使用 PAM 进行认证的系统范围配置设置为作为 root 用户的 PAM_AUTH

启用 PAM 时使用的认证机制取决于 /etc/pam.conf 中的登录服务的配置。 login 命令需要 authaccountpasswordsession 模块类型的 /etc/pam.conf 条目。 以下是 /etc/pam.conf 中建议的登录服务配置:
#
# AIX login configuration
#
login auth required /usr/lib/security/pam_aix

login account required /usr/lib/security/pam_aix

login session required /usr/lib/security/pam_aix

login password required /usr/lib/security/pam_aix

示例

  1. 以用户身份登录系统 jamesd,在登录提示符处输入以下内容:
    login: jamesd
    如果定义了密码,将提示您输入密码。 在出现提示时输入您的密码。
  2. 可信AIX系统上,以用户 "james身份登录系统,有效 SL 为 "TOP SECRET,输入以下命令:
    login: james –e “TOP SECRET”
  3. 要使用SECRET 的有效 SL 和 TOP SECRET 的有效 TL 登录,请输入以下命令:
    login: james –e “TOP SECRET” –t “TOP SECRET”
  4. 可以在命令行上使用以下内容:
    $ login –e “TOP SECRET” james

文件

描述
/usr/sbin/login 包含 login 命令。
/etc/utmp 包含了记帐信息。
/var/adm/wtmp 包含了记帐信息。
/etc/motd 包含了日期的信息。
/etc/passwd 包含了密码。
$HOME/.hushlogin 禁止登录信息。
/etc/environment 包含了用户环境配置信息。
/etc/security/login.cfg 包含了端口同义词。
/etc/security/lastlog 包含与最新成功登录尝试和不成功登录尝试相关的信息。
/etc/security/failedlogin 包含与每次不成功登录相关的信息。
/etc/security/enc/LabelEncodings 包含可信AIX系统的标签定义。