Linux 系统管理员安全指南
本文从系统管理员的角度讨论安全问题。系统管理员是管理系统的人:启动系统,停止系统运行,安装新软件,增加新用户,删除老用户,以及完成保持系统发展和运行的日常事务工作。
4.作为root运行的程序
在UNIX系统中,有些程序由系统作为root进程运行。这些程序并不总是具有SUID许可,因为其不少程序仅由root运行,系统管理员需要清楚这些程序做什么,以及这些程序还将运行其它什么程序。
(1)启动系统
当某些UNIX系统(如SCO UNIX/XENIX)启动时,是以被称为单用户的方式运行,在这种方式中普通用户不能登录,唯有的进程是init,swapper,以及一些由系统管理员从控制台运行的进程。UNIX系统的单用户方式启动,使系统管理员能在允许普通用户登录以前,先检查系统操作,确保系统一切正常,当系统处于单用户方式时,控制台作为超级用户,命令揭示是"#",有些UNIX系统不要确认超级用户口令就认可控制台是root,给出#提示符。这就可能成为一个安全问题。
(2)init进程
UNIX系统总是以某种方式或称为某种级运行,系统有若干种运行级,这些运行级由init进程控制。
UNIX系统启动时以单用户方式运行,也叫1级或S级。
对于其他用户登录进入系统,UNIX有一种多用户运行方式,也叫2级。
init进程控制系统运行级,它读入文件/etc/inittab,该文件详细地规定了哪些进程在哪一级运行。当root敲入init n(数字),系统就进入n级。init读该文件以确定终止哪些进程,启动哪些进程。
有效的运行级的数值是从0到6与s.
注意:由init建立的进程以UID为0运行(root)从/etc/inittab运行的程序也作为root运行,所以系统管理员要确保自己知道/etc/inittab中的程序做什么工作,确保这些程序以及这些程序所在的目录直到/和/etc/inittab除root外无人可写。
(3)进入多用户
当UNIX系统进入多用户方式时,将寝化一系列事件,接着开始执行gettys,允许其他用户登录进入系统。如果再看看/etc/inittab文件,会看到gettys定义在运行级2,至少三个shell程序/etc/brc,/etc/bcheckrc,/etc/rc*也定义在运行级2.这些程序都在gettys启动前运行。
这些shell程序作为root运行,也不能仅对root可写还应当检查shell程序运行的命令,因为这些命令也将作为root运行
(4)shutdown命令
用shutdown命令关系统,shutdown shell程序发送警告通知所有用户离开系统,在"给定的期限时间"到了后,就终止进程,拆卸文件系统,进入单用户方式或关机状态。一旦进入单用户方式,所有的gettys停止运行,用户再不能登录。
进入关机状态后可将系统关电。
shutdown仅能由作为root登录的用户从系统控制台上运行。所以任何的shutdown运行的命令仅能对root可写。

