您现在的位置: 万盛学电脑网 >> 操作系统 >> Linux教程 >> 正文

Linux--Linux 管理员手册(6)--登录和注销在线阅读

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 说明当一个用户登录和注销时发生了什么。较详细地说明后台进程的各种交互 log文件 配置文件等
通过终端登录
  首先,init 确认有一个getty 程序提供给终端连接(或控制台)。 getty 侦听终端等候用户告知它要登录 (这通常意味着用户必然键入些什么)。当它注意到一个用户,getty 输出一个欢迎信息(存在/etc/issue 中),并提示用户名,最后运行login 程序。 login 作为一个参数得到用户名,并提示用户输入口令。如果正确,login 启动给此用户设置的shell;否则退出并终止进程 (可能在再给用户一个机会输入用户名和口令之后)。 init 注意到进程终止,就给这个终端启动一个新的getty 。
  注意唯一的新进程是由init 产生的(用fork 系统调用); getty 和login 只是替代进程运行的程序 (使用exec 系统调用)。
  为注意用户,串行线需要一个单独的程序,因为终端活动时可以(传统上也是)变得复杂。 getty 也适应连接的速度和其他设置,这对拨号连接特别重要,因为连接和连接的参数可能不同。
  getty 和init 有多个版本在使用,各有优缺点。学习你的系统的版本也了解其他版本是个好主意(你可以用 Linux Software Map来找。)如果你没有拨入,可能不必考虑 getty ,但 init 仍然很重要。
通过网络登录
  一个网络中的2台计算机通常通过一个物理电缆连接。当他们通过网络通信是,参与通信的每个计算机里的程序通过虚拟连接virtual connection通信,即一些虚构的电缆。虚拟连接的每端的程序,独占自己的(虚拟)电缆。然而,因为这电缆不是真的,只是虚构的,所有计算机的操作系统可以在同一物理电缆上有多条虚拟连接。这样,只用一条电缆,多个程序可以不必考虑其他通信而相互通信。使用同一电缆使多台计算机是可能的;2台计算机间存在的虚拟连接,其他计算机会忽略他们不参加的连接。
  那是一个复杂和抽象的真实描述。但可能足够理解网络登录与普通登录的不同的重要原因。不同计算机上的2个程序要通信时,虚拟连接建立。由于理论上可能从网络上的任何一台计算机登录到任何一台计算机,因此可能有极大数量的潜在的虚拟通讯。因此,为每个潜在的login启动一个getty 是不现实的。
  有一个进程inetd(与getty 协同)处理所有的网络登录。当它发现一个进来的网络登录(即发现某台其他计算机来的新的虚拟连接), 它启动一个新进程来处理那个登录。原来的进程继续侦听新的登录。
  更复杂的是,网络登录有多个通讯协议。2个最重要的协议是 telnet 和rlogin 。除了登录,还有许多其他虚拟连接可能建立(为FTP Gopher HTTP和其他网络服务)。为要侦听的每种类型的连接提供一个进程不是很有效,因此,只用一个侦听器来识别连接的种类,能启动正确的程序来提供服务。这个侦听器叫inetd ;更多的信息请见《Linux网络管理指南》。