![“登录”的确切定义是什么](https://linux22.com/image/4078/%E2%80%9C%E7%99%BB%E5%BD%95%E2%80%9D%E7%9A%84%E7%A1%AE%E5%88%87%E5%AE%9A%E4%B9%89%E6%98%AF%E4%BB%80%E4%B9%88.png)
拉杜的回答在这里提供了非常丰富的信息 https://askubuntu.com/questions/376932/why-who-command-does-not-shows-root-as-a-logged-in-user 然而这让我想知道“Linux 中“登录”的确切定义是什么?
答案1
我不知道你是否能找到一个大家都同意的精确定义。也许只是“/bin/login
或同等”。每个人至少应该同意这su
不是登录,因为它不会取代终端上的现有登录,并且登录的定义特征之一是一次只有一个人在任何一个终端上登录。
我的定义可能会受到争议,“登录”意味着在当前没有人使用的终端(或 X 显示器)上启动一个新会话。但是当你创建一个新终端时呢?启动 xterm 感觉不像登录,即使它创建了一个新的 tty,因为它不要求身份验证(您在 X 会话开始时进行身份验证,或者如果您使用startx
.
另一方面,启动新的 ssh 连接绝对非常像登录,即使它没有配置为使用/bin/login
.除非您指定在远程而不是交互式 shell 上运行的命令 - 该操作需要身份验证,但感觉并不完全像“登录”。
您链接到的原始问题更容易回答,因为它是关于具体的东西(命令who
),而不是“登录”意味着什么的哲学问题。准确的答案是who
报告文件的内容utmp
。如果您想知道特定操作(例如su
或xterm
或ssh localhost -l root
)是否会在 中记录条目utmp
,答案通常是“视情况而定”。xterm
有选项-ut
和+ut
来控制是否将终端添加到utmp
.
在 中,您可以使用后跟 来screen
切换当前 tty 的utmp
条目。 L 代表登录。CtrlAL
对于 ssh,我没有看到任何专用选项。经过几次实验后,utmp
如果您创建一个 tty,即使您在其上运行非交互式命令(在其自己的列表中ssh -t localhost w
显示),您似乎也会获得一个条目。w
答案2
维基百科
这听起来是我见过的最好的解释。
摘自维基百科:http://en.wikipedia.org/wiki/登录
名词登录可以用作动词是一个常见的误解。实际上,术语“登录”是一个动词,指识别和验证用户的过程,而术语“登录”是一个名词,指获得访问权限所需的凭据。对于用户必须输入用户名和密码的系统,用户名和密码组合就是他们的登录名,提供这些详细信息进行验证的行为就是登录。
登录是一种特殊的动词,称为短语动词。短语动词是由两个单词组成的动词,由 (1) 一个动词和 (2) 另一个词类(副词或介词)组成。由于短语动词 log in 使用如此频繁,因此空格经常被粗心且错误地删除。1
开放组
另外,如果您查看 OpenGroup 基本规范中的定义,The Open Group 基本规范第 6 期。
摘抄
3.213 登录
用户获取系统访问权限的未指定活动。每个登录名都与一个登录名相关联。
3.214 登录名
与登录关联的用户名。
答案3
登录过程的第一步是授权。此步骤确定是否允许或拒绝登录。在大多数情况下,授权需要身份验证:想要登录的用户提供凭据(用户名和密码、用户名和基于私有 SSH 密钥的计算、用户名和 Kerberos 令牌等),系统确定这些凭据是否有效被授权登录。通常,但并非总是,成功完成身份验证过程的任何用户都被允许登录。不涉及任何身份验证的授权示例是 root 运行su
以其他用户身份登录时 — root始终被授权这样做。身份验证不足以登录的一个示例是 root 被限制在某些终端上,例如许多系统禁止 root 通过网络登录。
第二步是启动一个会议。这总是涉及至少以所需用户的身份启动一个进程,可能是帐户数据库中指示的用户登录 shell。其他常见步骤包括写入日志条目、设置环境变量、设置资源限制……