Linux管理员手册(6)--登陆和注销

说明当一个用户登陆和注销时发生了什么。较详细地说明后台进程的各类交互、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网络管理指南》。   login干了些什么   login 程序负责认证用户(确认用户名和口令相配),并创建串行线,启动shell,创建用户的初始环境。   部分初始化设置是输出文件/etc/motd (天天的短信息)的内容,并检查电子邮件。能够在用户家目录中产生一个叫.hushlogin 的文件来是上面所述的失效。   若是存在文件/etc/nologin ,就不容许登陆。这个文件通常由shutdown 及其相关的东西产生。 login 检查这个文件,若是这个文件存在,就拒绝接受登陆。若是这个文件确实存在,login 就会在退出以前,将它的内容输出到终端。   login 将全部失败的登陆企图登记在系统log文件中 (经过syslog )。它也登记全部的root的登陆。这些都对跟踪***者有用。   当前登陆着的用户列在/var/run/utmp 中。这个文件直到系统下次启动或关机前有效。系统刚启动时它被清空。它列出了每一个用户和用户使用的终端(或网络链接),及一些有用的信息。 who 、w 及其余相似的命令查看utmp 文件获得都有谁登陆着。   全部成功的登陆记录在/var/log/wtmp 中。这个文件将无限制地增大,因此必须有规律的清除,例若有个每周的cron 任务来清除它。 last 命令浏览wtmp 文件。   utmp 和wtmp 都是二进制格式 (见utmp 的man页);不幸的是,没有特殊的程序没法查看它们。   X和xdm   META: X implements logins via xdm; also: xterm -ls   存取控制   用户数据库传统上包含在/etc/passwd 文件中。有些系统使用影子口令shadow passwords,并把口令移到 /etc/shadow 中。许多计算机的场所能够用NIS或其余存储用户数据库的方法共享账户;它们可能也自动从中心位置复制数据库到全部其余计算机。   用户数据库不只包含口令,还包括有用户的其余信息,好比其真实姓名、家目录、登陆 shell等。这其余信息须要公用,使全部人都能读。所以口令是加密保存的。这有缺点,任何人取得加密的口令,能够用不一样的加密方法猜试口令,而不用试着真正登陆到计算机。影子口令试图用把口令移动到其余文件的办法避免这种状况,只有 root能读(口令仍是加密保存的)。 However, installing shadow passwords later onto a system that did not support them can be difficult.   无论有没有口令,确认系统中的全部口令是好的是很重要的,即不易猜。 crack 程序可用于破解口令;任何能够精确地找到的口令都不是好的口令。同时crack 能够为***者运行,也可由系统管理员运行以免坏的口令。好的口令也能够被passwd 程序强制实现;这样对CPU周期来讲颇有效,由于破解口令须要许多计算。   用户组数据库保存在/etc/group 文件中;有影子口令的系统,是/etc/shadow.group 。   root一般不能经过更多的终端或网络登陆,只能经过列在/etc/securetty 文件中的终端登陆。这使得必须可以物理存取这其中的一个终端。固然也可能经过任何终端用任何拥护登陆,而后使用su 命令变成root。   Shell启动   当一个交互的登陆shell启动时,它自动执行一个或更多预约义的文件。不一样的shell执行不一样的文件;更多的信息见每一个shell的文档。   多数shell首先运行一些全局文件,例如,Bourne shell(/bin/sh ) 和它引出执行的/etc/profile ;另外,它们执行用户家目录中的.profile 。 /etc/profile 容许系统管理员创建一个公用的用户环境,特别是创建PATH,以包括本地命令目录。另外,.profile 容许用户经过覆盖按照本身的口味客户化环境,若是必要,使用确省环境。
相关文章
相关标签/搜索