1. 用户相关配置文件
A) /etc/passwd 文件是什么 /etc/passwd 是系统识别用户的一个文件,做个不恰当的比喻, /etc/passwd 是一个花名册,系统所有的用户都在这里有登录记载;当我们以 intern01 这个账号登录时,系统首先会查阅 /etc/passwd 文件,看是否有 intern01 这个账号,然后确定 intern01 的 UID,通过 UID 来确认用户和身 份,如果存在则读取/etc/shadow 影子文件中所对应的 intern01 的密码;如果 密码核实无误则登录系统,读取用户的配置文件; B) /etc/passwd 的 7 个字段 在/etc/passwd 中,每一行都表示的是一个用户的信息;一行有 7 个字 段;每个字段用:号分割,比如下面是我的系统中的/etc/passwd 的两行; intern01:x:500:500:张三:/home/intern01:/bin/bash intern02:x:501:502::/home/intern02:/bin/bash 第一字段: 用户名, 在上面的例子中,我们看到这两个用户的用户名分别 是 intern01 和 intern02; 第二字段: 密码;在例子中我们看到的是一个 x,其实密码已被映射到 /etc/shadow 文件中; 第三字段: UID ;请参看本文的 UID 的解说; 第四字段: GID;请参看本文的 GID 的解说; 第五字段: 用户名全称,这是可选的,可以不设置,在 intern01 这个用户 中,用户的全称是张三 ;而 intern02 这个用户没有全称; 第六字段: 用户的家目录所在位置; intern01 这个用户是/home/ intern01 ,而 intern02 这个用户是/home/ intern02 ; 第七字段: 用户所用 SHELL 的类型, intern01 和 intern02 都用的是 bash ;所以为/bin/bash 。 C) /etc/shadow 文件 /etc/shadow 文件是/etc/passwd 的影子文件,这个文件并不由 /etc/passwd 而产生的,这两个文件是应该是对应互补的; shadow 内容包括 用户及被加密的密码以及其它/etc/passwd 不能包括的信息,比如用户的有效 期限等;这个文件只有 root 权限可以读取和操作,权限如下: -r-------- 1 root root 1.5K 10 月 16 09:49 /etc/shadow /etc/shadow 的权限不能随便改为其它用户可读,这样做是危险的。如果 你发现这个文件的权限变成了其它用户组或用户可读了,要进行检查,以防系 统安全问题的发生;如果我们以普通用户查看这个文件时,应该什么也查看不 到,提示是权限不够: [intern01 ~]$ more /etc/shadow /etc/shadow: 权限不够 D) /etc/shadow 的 9 个字段 /etc/shadow 文件的内容包括 9 个段位,每个段位之间用:号分割;我们以 如下的例子说明。 intern01:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:16662:0:99999:7::: intern02:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:16662:0:99999:7::16668: 第一字段: 用户名(也被称之为登录名),在例子中有两条记录,也表示 有两个用户 intern01 和 intern02 第二字段: 被加密的密码,如果有的用户在此字段中是 x,表示这个用户不 能登录系统,也可以看作是虚拟用户,不过虚拟用户和真实用户都是相对 的,系统管理员随时可以对任何用户操作; 第三字段: 表示上次更改口令的天数(距 1970 年 01 月 01 日),上面的 例子能说明 intern01 和 intern02 这两个用户,是在同一天更改了用户密 码,当然是通过 passwd 命令来更改的,更改密码的时间距 1970 年 01 月 01 日的天数为 13072; 第四字段: 禁用两次口令修改之间最小天数的功能,设置为 0 第五字段: 两次修改口令间隔最多的天数,在例子中都是 99999 天;这个 值如果在添加用户时没有指定的话,是通过/etc/login.defs 来获取默认 值, PASS_MAX_DAYS 99999; 你可以查看/etc/login.defs 来查看,具体 的值; 第六字段: 提前多少天警告用户口令将过期;当用户登录系统后,系统登 录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由 /etc/login.defs 文件定义中获取,在 PASS_WARN_AGE 中定义;在例子 中的值是 7 ,表示在用户口令将过期的前 7 天警告用户更改期口令; 第七字段: 在口令过期之后多少天禁用此用户;此字段表示用户口令作废 多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也 不会提示用户过期,是完全禁用;在例子中,此字段两个用户的都是空 的,表示禁用这个功能; 第八字段: 用户过期日期;此字段指定了用户作废的天数(从 1970 年的 1 月 1 日开始的天数),如果这个字段的值为空,帐号永久可用;在例子 中,我们看到 intern01 这个用户在此字段是空的,表示此用户永久可用; 而 intern02 这个用户表示在距 1970 年 01 月 01 日后 16668 天后过期,算 起来也就是 2010 年 11 月 21 号过期 第九字段: 保留字段,目前为空,以备将来 Linux 发展之用; 2. 用户组相关配置文件 A) /etc/group 文件 /etc/group 文件是用户组的配置文件,内容包括用户和用户组,并且能显 示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多 个不同的用户组;同一用户组的用户之间具有相似的特征。比如我们把某一用 户加入到 root 用户组,那么这个用户就可以浏览 root 用户家目录的文件,如果 root 用户把某个文件的组读写执行权限开放, root 用户组的所有用户都可以修 改此文件,如果是可执行的文件(比如脚本), root 用户组的用户也是可以执 行的; 用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也 是值得关注的,如某个用户下有对系统管理有最重要的内容,最好让用户拥有 独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外 root 用户 组一般不要轻易把普通用户加入进去。 B) /etc/group 的 4 个字段 /etc/group 的内容包括用户组(Group) 、用户组口令、 GID 及该用户组 所包含的用户(User), 每个用户组一条记录; 格式如下: group_name:passwd:GID:user_list 在/etc/group 中的每条记录分四个字段: 第一字段: 用户组名称; 第二字段: 用户组密码; 第三字段: GID 第四字段: 用户列表,每个用户之间用,号分割;本字段可以为空;如果字 段为空表示用户组为 GID 的用户名; 我们举个例子: root:x:0:root,intern02 #用户组 root, x 是密码段,表示没有设置密码, GID 是 0,root 用户组下包括 root、 intern02 以及 GID 为 0 的其它用户(可以通过/etc/passwd 查看) intern01:x:500:intern02 #用户组 intern01, x 是密码段,表示没有设置密码, GID 是 500,intern01 用户组下包括 intern02 用户及 GID 为 500 的用户(可以通过/etc/passwd 查看) intern02:x:502:intern02 #用户组 intern02, x 是密码段,表示没有设置密码, GID 是 502,intern02 用户组下包用户 intern02 及 GID 为 502 的用户(可以通过/etc/passwd 查看) helloer:x:503: #用户组 helloer, x 是密码段,表示没有设置密码, GID 是 503,helloer 用户组下包括 GID 为 503 的用户,可以通过/etc/passwd 查看 而/etc/passwd 对应的相关的记录为: root:x:0:0:root:/root:/bin/bash intern01:x:500:500:intern01 sun:/home/intern01:/bin/bash intern02:x:505:502:intern02 open,intern02 office,13898667715:/home/intern02:/bin/bash helloer:x:502:503::/home/helloer:/bin/bash 由此可以看出 helloer 用户组包括 helloer 用户;所以我们查看一个用户组 所拥有的用户,可以通过对比/etc/passwd 和/etc/group 来得到。 C) /etc/gshadow 文件 /etc/gshadow 是/etc/group 的加密文件, 比如用户组(Group) 管理密码 就是存放在这个文件。 /etc/gshadow 和/etc/group 是互补的两个文件;对于 大型服务器,针对很多用户和组,定制一些关系结构比较复杂的权限模型,设 置用户组密码是极有必要的。比如我们不想让一些非用户组成员永久拥有用户 组的权限和特性,这时我们可以通过密码验证的方式来让某些用户临时拥有一 些用户组特性,这时就要用到用户组密码。 D) /etc/gshadow 的 4 个字段 /etc/gshadow 格式如下,每个用户组独占一行,我们举例来说明: intern01:!::intern02 intern02:oUS/q7NH75RhQ::intern02 第一字段: 用户组名 第二字段: 用户组的密码, intern01 用户组无密码; intern02 用户组有已 经,已经加密; 第三字段: 用户组管理者,两者都为空; 第四字段: intern01 用户组所拥有的成员是 intern02 ,然后还要对照一下 /etc/group 和/etc/passwd 查看是否还有其它用户,一般默认添加的用 户,有时同时也会创建用户组和用户名同名称; intern02 用户组有成员 intern02。