Linux 版 (精华区)

发信人: netiscpu (网中自由鸟), 信区: Linux
标  题: Linux实用教程(部分)(10)
发信站: 哈工大紫丁香 (Thu May 20 18:18:12 1999), 转信

第十七章

登 录 和 注 销

本章描述在登录和注销过程中,后台进程、日志文件和配置文件之间的交互情况。

17.1 终端登录

图 17-1 描述了通过终端登录时,init、getty、login 以及 shell 之间的交互情况。

参照图 17-1,用户通过终端登录的过程可描述如下:

1. init 确保为每个终端连接(或虚拟终端)运行一个 getty 程序。

2. getty 监听对应的终端并等待用户准备登录。

3. getty 输出一条欢迎信息(保存在 /etc/issue 中),并提示用户输入用户名,最

后运行 login 程序。

4. login 以用户作为参数,提示用户输入密码。

5. 如果用户名和密码相匹配,则 login 程序为该用户启动 shell。否则,login 程

序退出,进程终止。

6. init 程序注意到 login 进程已终止,则会再次为该终端启动 getty。

在上述过程中,唯一的新进程是 init 利用 fork 系统调用建立的进程,而 getty 和

 login 仅仅利用 exec 系统调用替换了正在运行的进程。

串行线路需要一个单独的程序来感知用户的登录请求,这是因为感知过程稍微复杂一些

。getty 还需要适应连接速度以及其他设置,这对拨入连接来说尤其重要,因为这些参

数可能会在不同的调用过程中改变。

getty 和 init 程序一样,也有许多版本,各种版本各有其优缺点。如果要利用拨入连

接,则应当了解不同 getty 之间的差别。

17.2 网络登录

当连接到网络中的计算机相互之间进行通讯时,每台计算机上参与通讯的程序之间通过

称为“虚拟连接”的链路进行通讯。这种虚拟连接可看成是一条假想的电缆,在一条实

际的电缆中,可以同时存在许多不同的虚拟连接。不同的程序可在互不影响的情况下通

过专属于自己的虚拟连接进行通讯。在同一物理电缆上,甚至可以有多台计算机共享电

缆而互不影响。

图 17-1 通过终端登录时,init、getty、login 以及 shell 之间的交互情况

显然,虚拟连接只有当两个计算机希望建立通讯连接时才存在。这种网络连接的特点,

使得不可能象通常的登录一样,为每一条可能的虚拟连接事先准备一个 getty 和 log

in 程序。因此网络登录和通常的登录有重要的区别。

实际上,由一个单独的 inetd 进程(对应于 getty)处理所有的网络登录。当该进程

注意到有引入的网络登录时,它会启动一个新的进程处理单个连接,而原先的进程则继

续监听新的登录请求。

但是,每个网络登录的协议可能不同,例如用户可通过 telnet 登录,也可通过 rlog

in 登录。除了网络登录之外,不同的网络服务(如FTP、HTTP等)具有自己不同的协议

和虚拟连接,因此,为每个不同的虚拟连接类型建立单独的监听进程是无法满足需求的

,相反,只有一个可区别不同连接类型的进程,即 inetd,负责监听连接并启动正确的

程序来提供服务。有关 inetd 的详细信息可参阅其他资料。

17.3 login 程序

login 程序的主要任务是验证用户,并通过设置串行线路的许可和启动 shell 为用户

设置初始环境。

login 程序的部分任务是输出文件 /etc/motd 的内容,并检查电子邮件。如果在用户

的主目录中建立文件 .hushlogin,则可以避免执行上述任务。

如果存在文件 /etc/nologin,则禁止登录。该文件通常由 shutdown 或相关程序建立

。如果 login 发现该文件存在,则拒绝接受登录,在退出之前,login 会输出该文件

中的内容。

login 可通过 syslog 记录所有的失败登录请求。通过 root 用户的设置,login 还可

以记录所有的登录情况。这两种登录日志可有效跟踪系统入侵者。

当前登录的用户列举在文件 /var/run/utmp 中。该文件的内容在系统重新引导或关机

之前有效,当系统引导时,该文件被清除。该文件列举所有的用户、登录终端(或网络

连接),以及其他有用的信息。系统命令 who、w 或其他类似命令均通过检查该文件的

内容输出登录用户。

所有成功的登录在 /var/log/wtmp 中记录。该文件可在无任何限制的情况下增长,因

此,应当通过 cron 等命令周期性地清除该文件的内容。last 命令实际通过检查该文

件的内容而输出最近的登录情况。

utmp 和 wtmp 文件均以二进制方式保存,因此,必须通过特定程序查看其中的内容。

17.4 xdm

在多数 Linux 发行版本中,均将某个 init 运行级别赋予特殊的功能:引导至 X Win

dow。例如,Red Hat Linux 5.x 利用运行级别 5:

x11:5:respawn:/usr/bin/X11/xdm -nodaemon

从上面看出,进入或切换到运行级别 5 时,系统利用 xdm 启动 X Window。xdm 实际

是 X Display Manager 的缩写,系统引导之后,将一直运行在 X Window 之中,除非

切换到其他运行级别。

17.5 访问控制

按照惯例,用户帐号数据库包含在 /etc/passwd 文件中。某些系统使用“影象密码”

,密码保存在 /etc/shadow 文件中。利用 NFS 或其他存储用户帐号数据库的方法,可

以让多台计算机共享同一个用户帐号数据库。

用户数据库不仅包含用户名及其密码,同时也包含一些附加的信息,例如用户的真实名

称、主目录以及登录 shell 等。因为这些附加信息是公共信息,因此,任何人都可以

读取这些信息。由于这一原因,密码通常以加密形式保存。但是,任何一个可以读取该

文件的用户,都可以不经实际登录而利用各种加密方法猜测密码。影象密码试图解决这

一问题,它将密码保存在单独的文件中,而只有 root 才能读取该密码文件。

不管是否利用影象密码,必须确保系统中所有的密码都是“好的”密码,也就是说,密

码应该是不易猜中的。crack 程序可用来猜测密码,任何可被 crack 程序找出的密码

都不是好密码。系统管理员可以利用 crack 程序避免用户采用坏的密码。利用 passw

d 程序,也可以强制性地让用户采用好的密码。

用户组数据库包含在 /etc/group 文件中,对于利用影象密码的系统,可能会有一个 

/etc/shadow.group 文件。

root 通常不能从大多数终端和网络登录,而只能从 /etc/securetty 文件中列出的终

端登录。但是,其他用户在任意一个终端登录之后,利用 su 命令可成为 root。

17.6 shell 启动

当某个交互式的登录 shell 启动之后,它要自动执行一个或多个预先定义的文件。不

同 shell 所运行的文件不同。但通常来说,大多数 shell 要运行一些全局的文件,例

如,Bourne shell 及其变种会运行 /etc/profile,除此之外,它还要运行用户主目录

中的 .profile 文件。

利用全局的脚本文件,系统管理员可以为所有用户定义公共的用户环境,尤其是可通过

设置 PATH 包含一些局部的命令目录。另外,利用类似 .profile 的文件,可让用户定

制自己的运行环境。

 

 

 

 

 

 

 

 

 

 

 

 

 

 


--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.503毫秒