「login(1)」-

在系统上开始会话

命令语法格式

login [-p] [-h host] [username] [ENV=VAR…]

login [-p] [-h host] -f username

login [-p] -r host

命令描述

命令login用于与系统建立新会话。它通常自动调用,通过在用户终端上显示的”login:“提示。命令login可能是Shell特有的,不能作为子进程调用。从Shell调用时,应该以exec login来执行login命令,这将导致用户退出当前shell(因此,将阻止新登录用户返回调用者的会话中)。除了登录Shell以外,尝试从任何Shell执行login都将将产生错误消息。

然后,在适当的时候提示用户输入密码。输入密码时没有任何响应,以防止泄漏。在login退出之前,只允许少量密码失败,并且通信链路被切断。

如果已为您的帐户启用密码时效,则可能会提示您输入新密码,然后再继续操作。在继续之前,您将被迫提供旧密码和新密码。有关更多信息,请参阅passwd(1)。

您的UID和GID将根据其在/etc/passwd文件中的值进行设置。$HOME,$SHELL,$PATH,$LOGNAME,$MAIL的值根据passwd中对应条目中的相应字段设置。也可以根据GECOS字段中的条目设置ulimit,umask,nice值。

在某些安装中,环境变量$TERM将初始化为tty行上的终端类型,如/etc/ttytype中所指定。

也可以执行命令解释程序的初始化脚本。有关此功能的更多信息,请参阅相应的手册部分。

通过存在“*”作为登录Shell的第一个字符来指示子系统登录。给定的主目录将用作用户实际登录的新文件系统的根目录。

命令支持的选项及含义

-f
不执行身份验证,用户已预先验证。注意:在这种情况下,用户名username是必填项。

-h
此次登录的远程主机的名称。

-p
保留环境变量。

-r
为rlogin执行自动登录协议。

选项-r,-h,-f仅在以root用户调用login时才能使用。

注意事项

此版本的login有许多编译选项,其中只有一些可能在任何特定站点使用。

文件的位置受系统配置的差异影响。

命令login不负责从utmp文件中删除用户,这应该是getty(8)和init(8)负责的,它们会清理终端会话的明显的所有权。如果您在没有exec的情况下使用Shell提示符来执行login命令,则即使在您退出“subsession”后,您使用的用户仍将继续登录。

与任何程序一样,命令login的外观可以伪造。 如果不受信任的用户具有对计算机的物理访问权限,则攻击者可以使用此方法获取将要坐在计算机前面的下一个人的密码。在Linux下,用户可以使用SAK机制来发起可信路径,并防止这种攻击。

配置文件

在/etc/login.defs中的以下配置变量会影响命令login的行为:

CONSOLE_GROUPS (string)
登录控制台时,添加到用户补充组的组列表(由CONSOLE设置确定)。默认为none。

请谨慎使用 – 即使未在控制台上登录,用户也可以永久访问这些组。

DEFAULT_HOME (boolean)
如果我们无法cd到主目录,该值指明了是否允许登录。默认为no。如果设置为yes,当无法cd到她的主目录,则用户将进入根目录(/)。

ENV_PATH (string)
如果设置,在普通用户登录时,它将用于定义PATH环境变量。该值是以冒号分隔的路径列表(例如/bin:/usr/bin),并且可以“PATH=”开头。 默认值为PATH=/bin:/usr/bin。

ENV_SUPATH (string)
如果设置,在超级用户登录时,它将用于定义PATH环境变量。该值是以冒号分隔的路径列表(例如/sbin:/bin:/usr/sbin:/usr/bin),并且可以”PATH=“开头。默认值为PATH=/sbin:/bin:/usr/sbin:/usr/bin。

ERASECHAR (number)
终端擦除(ERASE)字符(010 = 退格,0177 = DEL)。对于八进制值,该值可以为“0”前缀,对于十六进制值,该值可以为“0x”。

FAIL_DELAY (number)
登录失败后,在另一次尝试之前的延迟时间。

FAKE_SHELL (string)
如果设置,命令login将执行此Shell,而不是/etc/passwd中指定的用户Shell。

HUSHLOGIN_FILE (string)
如果已定义,则此文件可以在登录期间禁止所有消息。如果指定了完整路径名,则如果在文件中找到用户的名称或shell,则将启用静默模式。 如果不是完整路径名,则如果该文件存在于用户的主目录中,则将启用静默模式。

KILLCHAR (number)
终端的结束(KILL)字符(025 = CTRL/U)。对于八进制值,该值可以为“0”前缀,对于十六进制值,该值可以为“0x”。

LOGIN_RETRIES (number)
密码错误时的最大登录重试次数。

这很可能会被PAM覆盖,因为默认的pam_unix模块有自己内置的3次重试。 但是,如果您使用的是不强制执行PAM_MAXTRIES的身份验证模块,则这是一个安全的后备策略。

LOGIN_TIMEOUT (number)
登录的最长时间(秒)。

LOG_OK_LOGINS (boolean)
启用成功登录的日志记录。

LOG_UNKFAIL_ENAB (boolean)
记录登录失败时,启用显示未知用户名,会把未知的用户名记录下来。

注意:如果用户输入密码,而不是登录名,则记录未知用户名可能会出现安全问题。

TTYGROUP (string), TTYPERM (string)
终端权限:登录tty将由TTYGROUP组拥有,权限将设置为TTYPERM。

默认情况下,终端的所有权设置为用户的主要组,权限设置为0600。

参数TTYGROUP可以是组的名称或数字GID。

如果你有write程序,其权限被”setgid”为指定的组,该组属于终端,则将TTYPERM定义为0620。否则,请将TTYGROUP注释掉,并将TTYPERM分配给622或600。

TTYTYPE_FILE (string)
如果已定义,则将tty行映射到TERM环境参数的文件。该文件的每一行的格式类似于“vt100 tty01”。

USERGROUPS_ENAB (boolean)
如果设置为yes,命令userdel将删除用户的组(如果它不包含更多成员),然后命令useradd将默认创建一个组名与用户名相同的组。

相关文件

/var/run/utmp
当前登录会话的列表。

/var/log/wtmp
以前的登录会话列表。

/etc/motd
系统的每日消息。

/etc/nologin
防止非root用户登录。

/etc/ttytype
终端类型列表。

$HOME/.hushlogin
抑制系统消息的打印。(Suppress printing of system messages.)

/etc/shadow
安全组帐号信息。

/etc/passwd
用户账户信息。

/etc/login.defs
软件包Shadow中各个工具的配置文件,用于改变这些工具的行为。

相关手册

mail(1), passwd(1), sh(1), su(1), login.defs(5), nologin(5), passwd(5), securetty(5), getty(8).

参考文献

更新日志

  • 07/16/2018 创建文章