一文带你彻底理解Linux的各种终端类型及概念( 四 )


一文带你彻底理解Linux的各种终端类型及概念

文章插图
 
理解了图例 , 我上我的图 , 这是我昨晚画到很晚才完成的 , 希望能有宝贵的意见提出(图有点大 , 请单独查看):
一文带你彻底理解Linux的各种终端类型及概念

文章插图
 
/dev目录下的各种tty , ptmx , pts/X , console等等这些是令人混淆的根源 , 其实理解这些是有窍门的 , 记住它们只是操作某种终端设备的设备文件而已 , 这是UNIX风格的延续 , 这些设备文件对应的真实设备也就那么几种 , 比如显示器键盘套件 , 串口对面的超级终端 , 伪终端对面的SSH , Telnet等等 。然后试着画出一个上面的图 , 基本就理清楚了 。
一文带你彻底理解Linux的各种终端类型及概念

文章插图
 
本文的最后 , 我来简单说下关于getty和login相关的东西 。
前面在讲终端发展历史的时候说到过 , 到了多终端时代 , 每一个终端必须绑定一个用户 , 只有登录成功的用户方可获得一个终端 。因此当一个人站到一个终端面前并不意味着它就能在这个终端上操作计算机 , 他首先要做的就是登录 。所谓的登录呢 , 就是输入用户名和密码 , 如果输入正确 , 则会给你一个Bash(或者别的Shell)让你操作计算机 , 如果输入不正确 , 则让你继续输入…
getty给了让你登录并且继续输入的机会!init进程不断调用getty , 然后getty会发起login让你登录 , 当你输入正确的用户名和密码后 , ttyXYZ就是你的了 , 如果你是用SSH进行的login , 那么你将得到一个叫做/dev/pts/X , 如果你是在显示器键盘登录 , 你将得到/dev/tttX(X取决于当前的焦点终端) 。
所有这一切其实都是多终端以及多用户的产物 , 但归根结底其根源都在分时系统 。在计算机最初被放在车间大小的屋子里的年代 , 可能把屋子的门禁做好以及将屋子外的鉴权系统做好显得比后来的多用户login更为重要 , 只有在后来 , 终端不再属于计算机了 , 终端与计算机分离了 , 用户也和终端分离了的时候 , 设计一套登录机制就显得尤为必要了 , 因为首先即便你把计算机锁在铁屋子里 , 只要终端在外面 , 那么计算机就毫无安全感可言 , 其次 , 你也不可能把终端全部锁在完全属于你控制的铁屋子里 , 特别是在TCP/IP出现以后 , 几乎所有的计算机都是互联互通的 , 这意味着任何一台计算机都可以作为其它任何一台另外的计算机的操作终端 , 任何外部的鉴权系统和物理保护在TCP/IP网络面前都堪比马其诺防线 , 看似固若金汤 , 实则百无一用 。




推荐阅读