Linux是一个多用户系统,因此对用户的管理是系统管理的基本组成部分。安装Linux的用户很可能就是该系统的管理员,也就是权限最高的root。通过对用户的管理,分清了用户之间的责、权、利,保证了系统安全。下面介绍一下同用户管理关系密切的几个配置文件。

1. /etc/passwd文件
用“ls -l”命令可以看到该文件属主是root用户,只有root用户能对该文件进行写操作,其它用户只能进行读的操作。
/etc/passwd文件当中以行为单位,每行是一个记录保存一个用户的信息,参数之间用冒号隔开,用cat可以查看其内容。
# cat /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/false
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:Daemon:/sbin:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/false
games:x:12:100:Games account:/var/games:/bin/bash
haldaemon:x:101:102:User for haldaemon:/var/run/hald:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/false
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/false
messagebus:x:100:101:User for D-Bus:/var/run/dbus:/bin/false
news:x:9:13:News system:/etc/news:/bin/false
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/false
ntp:x:74:105:NTP daemon:/var/lib/ntp:/bin/false
....................
上面代码
1   第一列是用户名;
2   第二列是用户的密码;
3   第三列是用户的数字ID,即用户的UID;
4   第四列是用户的主组的ID,即用户的GID;
5   第五列是用户的全名,或者是注释;
6   第六列是用户主目录的位置,这个目录通常位于/home目录下, 目录名与用户ID 相同;第七列是用户的默认控制台Shell。
注意,在上面的文件当中,所有用户的Password列是一个“x”,但这并不是说用户的密码是x 。这是因为早期的Unix系统密码是以一个强度比较弱的加密手段将密码加密后,以文本的形式存储在这个文件中。现在已经很少有人再这样做了。Linux系统采取的解决的方法是,在/etc/passwd文件中存放密码的位置只是存放一个“x”,而经过加密的密码存放于/etc/shadow文件中。这项技术通过将用户信息与密码数据分离而提高了安全性。并且采用了强度更高的加密算法来保存密码。一个映像密码条目的样例如下所示:
# cat /etc/shadow
at:*:14904:0:90:7:::
bin:*:14749::90::::
daemon:*:14749::90::::
ftp:*:14749::90::::
games:*:14749::90::::
haldaemon:*:14749:0:90:7:::
lp:*:14749::90::::
mail:*:14749::90::::
man:*:14749::90::::
messagebus:*:14749:0:90:7:::
news:*:14749::90::::
nobody:*:14749::90::::
ntp:*:14904:0:90:7:::
.......
2./etc/shadow 文件
/etc/shadow的格式与/etc/passwd类似,由若干个字段组成,字段之间用“:” 隔开,这些字段格式如下:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间;不活动时间:失效时间:标志每个字段含义如下:
1登录名是与/etc/passwd文件中的登录名相一致的用户账号。
2 口令字段存放的是加密后的用户口令字。如果为空,则对应用户没有口令,登录时不需要口令;
3 最后一次修改时间表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。
4 最小时间间隔指的是两次修改口令之间所需的最小天数。
5 最大时间间隔指的是口令保持有效的最大天数。
6警告时间字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7 不活动时间表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8 失效时间字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
3.系统审核
Linux的日志文件用来记录整个操作系统使用状况,他们是******的重点目标,所以作为一个Linux网络系统管理员要充分用好以下几个日志文件。
◆/var/log/lastlog文件
记录最后进入系统的用户信息,包括登录的时间、登录是否成功等信息。这样用户登录后只要用lastlog命令查看一下/var/log/lastlog文件中记录的所用账号的最后登录时间,再与自己的用机记录对比一下就可以发现该账号是否被***盗用。
可以用以下命令查看其空间占用情况
#du -h /var/log/lastlog
有时候需要清空,使用以下命令
#cat /dev/null >; /var/log/lastlog
◆/var/log/secure文件
记录系统自开通以来所有用户的登录时间和地点,可以给系统管理员提供更多的参考。
◆/var/log/wtmp文件
记录当前和历史上登录到系统的用户的登录时间、地点和注销时间等信息。用last命令可以查看,若想清除系统登录信息,只需删除这个文件,系统会生成新的登录信息。
用以下命令查看
#last -f /var/log/wtmp
以上几个文件都是由系统的klogd和syslogd守护进程进程记录的。通常klogd用来记录系统内核所产生的日志信息,也就是工作在系统内核态的进程所产生的日子记录; 而syslogd用来记录工作在用户态的进程的日志信息,这些程序包括用户进程、网络服务器进程和多数的系统守护进程。因此,对于管理人员而言,通过及时检查syslogd记录的信息能够发现绝大多数的系统异常情况。
下面介绍一下syslogd进程的记录格式和配置方法。syslogd负责发送、记录系统内核及工具所产生的信息。整个机制由系统调用syslog()、系统守护进程syslogd,以及配置文件/etc/syslog.conf共同组成。当系统内核及工具产生信息时,通过调用syslog(),把信息送往syslogd,它再根据/etc/syslog.conf中的配置要求,、将这些信息分别做如下处理:
1   记录到系统日志中;
2   输出到系统控制台上;
3   转发给指定的用户;
4   通过网络转发给其它主机上的syslogd。
通过配置syslog.conf,可以灵活地对信息的发送和保存进行控制。
sys1ogd进程在系统启动时由/etc/rc.d/rc2.d/S12syslog
启动。如果需要手工启动或停止syslogd,可以使用下面命令:
# /etc/rc.d/init.d/syslog start | stop
# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                            /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                          /var/log/secure
# Log all the mail messages in one place.
mail.*                                             /var/log/maillog
# Log cron stuff
cron.*                                             /var/log/cron
# Everybody gets emergency messages
*.emerg                                                 *
# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
/etc/syslog.conf文件中的一项配置记录由“选项”(Selector)和“动作”(Action)两个部分组成,两者间用Tab制表符进行分隔。而“选项” 又由一个或多个形如“类型.级别”格式的保留字段组合而成,各保留字段问用分号分隔。
保留字段中的“类型” 代表信息产生的源头,可以是如下字段:
kern   由Kernel产生的信息。
user   由用户进程产生的信息,对那些由程序或不在此列出的工具产生的信息,其缺省类型都是“user”。
mail  邮件系统产生的信息。
daemon 系统守护进程的信息,如in.ftpd、telnetd。
auth  由login、su、getty等进行身份认证时产生的信息
syslog 由syslogd内部产生的信息。
lpr   行打印spooling系统的信息。
news USENET网络新闻系统的信息。
uucp UUCP系统信息。
cron 和at工具信息。
local  0-7 保留为local使用。
mark syslogd 内部产生的时间戳信息。
*    为通配符,表示除mark之外的所有其它类型(此符号不可用以代表所有级别)。
保留字段中的“级别” 代表信息的重要性,可以是下面字段:
emerg 紧急,处于Panic状态,通常应广播到所有用户。
alert  告警,当前状态必须立即进行纠正,例如系统数据库崩溃。
crit   关键状态的警告。
err   表示其它错误。
warning 警告。
notice 非错误状态的报告,但应特别处理。
info  通报信息。
debug 调试程序时的信息。
none 通常调试程序时用,指示带有none级别的类型产生的信息无需送出,例如“*.debug;mail.none”表示调试时除邮件信
息外其它信息都送出。
“动作”域指示信息发送的目的地,可以是如下参数:
/filename 日志文件,由绝对路径指出的文件名,此文件必须事先建立。
@host 远程主机。
userl,user2 指定用户,如果指定用户已登录,那么他们将收到信息。
*   表示所有用户, 已登录的用户都将收到信息。
下面来看一看Linux下的一个实例/etc/syslog.conf文件:
..............
*.err;kern.debug;daemon.notece;mail.crit /var/adm/messages
..............
上面这行中的“action”就是大家关心的/var/adm/messages文件,输出到它的信息源头“selector”为*.err表
示所有的一般错误信息;kern.debug 表示核心产生的调试信息;daemon.notice表示守护进程的注意信息;mail.crit表示邮件系统的关键警告信息。
了解了syslog.conf格式之后,再来看/var/adm/messages中所记录的日志信息:
.....
Nov l4 l 8:59:05 host sshd(pam_unix)[2l9l3]:authentication failure ; logname= uid=0 euid=0
tty=NODEVssh ruser= rhost=202.21.60.5 user=root
Aug 25 1:13:01 host syslogd 1.5.1:restart.
.....
由上可以看到每行记录都按照日期、时间、主机名、进程名、进程的PID,以及来自该进程的消息中间用空格分割。两条记录分别记录了一次失败的root登录和一次syslogd进程的重起。系统会使用newsyslog定期检查syslog输出的messages 文件和maillog文件,将旧数据压缩保存为备份文件。