Unix/Linux 登录命令:

Login用于登录系统时。
它也可用于随时从一个用户切换到另一个用户(但是,大多数现代 shell 都支持内置于此功能)。

如果没有给出参数,登录提示输入用户名。

如果用户不是 root,并且 /etc/nologin 存在,则此文件的内容会打印到屏幕上,并终止登录。
这通常用于在系统关闭时防止登录。

如果在 /etc/usertty 中为用户指定了特殊访问限制,则必须满足这些限制,否则登录尝试将被拒绝并生成系统日志消息。

如果用户是 root,则登录必须在 /etc/securetty 中列出的 tty 上进行。
将使用 syslog 工具记录故障。

检查完这些条件后,将请求并检查密码(如果此用户名需要密码)。

登录失败前允许尝试十次,但在前三次之后,响应开始变得非常缓慢。
登录失败通过系统日志工具报告。
此工具还用于报告任何成功的 root 登录。

如果文件 .hushlogin 存在,则执行“安静”登录(这将禁用邮件检查以及上次登录时间和当天消息的打印)。
否则,如果 /var/log/lastlog 存在,则打印上次登录时间(并记录当前登录)。

执行随机管理事项,例如设置 tty 的 UID 和 GID。
如果 TERM 环境变量存在,则保留它(如果使用 -p 选项,则保留其他环境变量)。
然后设置 HOME、PATH、SHELL、TERM、MAIL 和 LOGNAME 环境变量。
PATH 默认为 /usr/local/bin:/bin:/usr/bin:。
对于普通用户,对于 /sbin:/bin:/usr/sbin:/usr/bin 对于 root。
最后,如果这不是“安静”登录,则打印当天的消息并检查 /var/spool/mail 中具有用户名的文件,如果它的长度非零,则打印一条消息。

然后启动用户的shell。
如果 /etc/passwd 中没有为用户指定 shell,则使用 /bin/shis。
如果 /etc/passwd 中没有指定目录,则使用 /(针对上述 .hushlogin 文件检查主目录)。

使用Login

如果我们登录的是没有图形桌面的 Linux 计算机,系统会自动使用 login 命令提示我们登录。
我们可以通过运行“sudo”来尝试自己使用该命令。

sudo login

我们将获得与访问命令行系统时相同的登录提示。

也就是说,这真的不实用。
如果我们想以其他用户身份登录,则可以使用“su”命令,如下所示:

su username

Login 选项

  • -p — 被 getty(8) 用来告诉登录不要破坏环境
  • -f — 用于跳过第二次登录身份验证。这特别不适用于 root,并且在 Linux 下似乎也不能很好地工作。
  • -h — 其他服务器(即 telnetd(8))使用,传递远程主机的名称以登录,以便将其放置在 utmp 和 wtmp 中。只有超级用户可以使用此选项。

特殊访问限制

文件 /etc/securetty 列出了允许 root 登录的 tty 的名称。
必须在每一行指定一个不带 /dev/ 前缀的 tty 设备名称。
如果该文件不存在,则允许 root 登录任何 tty。

在大多数现代 Linux 系统上使用 PAM(可插拔身份验证模块)。
在不使用 PAM 的系统上,文件 /etc/usertty 为特定用户指定了另外的访问限制。
如果此文件不存在,则不会施加另外的访问限制。
该文件由一系列部分组成。
存在三种可能的部分类型:CLASSES、GROUPS 和 USERS。
CLASSES 部分定义了 tty 和主机名模式的类,GROUPS 部分定义了基于每个组的允许的 tty 和主机,而 USERS 部分定义了基于每个用户的允许的 tty 和主机。

此文件中的每一行不得超过 255 个字符。
注释以 # 字符开头并延伸到行尾。

CLASSES部分

CLASSES 部分以全大写的行首的 CLASSES 一词开始。
接下来的每一行直到新部分的开始或者文件的结尾都由一系列由制表符或者空格分隔的单词组成。
每行定义了一类 ttys 和主机模式。

一行开头的单词被定义为该行其余部分指定的 tty 和主机模式的集合名称。
此集体名称可用于任何后续的 GROUPS 或者 USERS 部分。
此类名称不得作为类定义的一部分出现,以避免递归类出现问题。

CLASSES 部分的示例:

CLASSES
myclass1 tty1 tty2
myclass2 tty3 @.foo.com

这将类 myclass1 和 myclass2 定义为相应的右侧。

GROUPS部分

GROUPS 部分在每个 Unix 组的基础上定义了允许的 ttys 和主机。
如果根据 /etc/passwd 和 /etc/group,用户是 Unix 组的成员,并且在 /etc/usertty 的 GROUPS 部分中提到了这样的组,那么如果该组是,则授予用户访问权限。

GROUPS 部分在行首以全大写的 GROUPS 单词开头,接下来的每一行都是由空格或者制表符分隔的单词序列。
一行中的第一个词是组的名称,该行中的其余词指定允许该组成员访问的 tty 和主机。
这些规范可能涉及使用先前 CLASSES 部分中定义的类。

一个示例 GROUPS 部分。

GROUPS
sys tty1 @.bar.edu
stud myclass1 tty4

此示例指定 sys 组的成员可以登录 tty1 并从 bar.edu 域中的主机登录。
组stud 中的用户可以从类myclass1 或者tty4 中指定的主机/tty 登录。

USERS部分

USERS 部分在行首以全大写的单词 USERS 开头,接下来的每一行都是由空格或者制表符分隔的单词序列。
一行中的第一个词是用户名,该用户被允许登录到 ttys 和该行其余部分提到的主机。
这些规范可能涉及在前面的 CLASSES 部分中定义的类。
如果文件顶部没有指定节头,则第一节默认为 USERS 节。

USERS 部分的示例:

USERS
zacho tty1 @130.225.16.0/255.255.255.0
blue tty3 myclass2

这让用户 zacho 只能从 tty1 和 IP 地址在 130.225.16.0 130.225.16.255 范围内的主机登录,并且允许用户 blue 从 tty3 和类 myclass2 中指定的任何内容登录。

USERS 部分中可能有一行以 * 的用户名开头。
这是一个默认规则,它将应用于任何不匹配任何其他行的用户。

如果 USERS 行和 GROUPS 行都与用户匹配,则允许用户从这些规范中提到的所有 ttys/hosts 的联合访问。

日期:2020-07-15 11:16:50 来源:oir作者:oir