第七章 linux 系统用户以及用户组管理
【 认识 /etc/passwd 和/etc/shadow】
这两个文件可以说是 linux 系统中最重要的文件之一 。 如果没有这两个文件或者这两个文件出问题,则你是无法正常登录 linux 系统的 。

/etc/passwd 由 ’:’ 分割成 7 个字段,每个字段的具体含义是:
1 )用户名(如第一行中的 root 就是用户名),代表用户账号的字符串 。 用户名字符可以是大小写字母 、 数字 、 减号(不能出现在首位) 、 点以及下划线,其他字符不合法 。 虽然用户名中可以出现点,但不建议使用,尤其是首位为点时,另外减号也不建议使用,因为容易造成混淆 。
2 )存放的就是该账号的口令,为什么是 ’x’ 呢?早期的 unix 系统口令确实是存放在这里,但基于安全因素,后来就将其存放到 /etc/shadow 中了,在这里只用一个 ’x’ 代替 。
3 )这个数字代表用户标识号,也叫做 uid。 系统识别用户身份就是通过这个数字来的, 0 就是 root ,也就是说你可以修改 test 用户的 uid 为 0 ,那么系统会认为 root 和 test 为同一个账户 。 通常 uid 的取值范围是 0~65535 , 0 是超级用户( root )的标识号, 1~499 由系统保留,作为管理账号,普通用户的标识号从 500 开始,如果我们自定义建立一个普通用户,你会看到该账户的标识号是大于或等于 500 的 。
4 )表示组标识号,也叫做 gid。 这个字段对应着 /etc/group 中的一条记录,其实 /etc/group 和 /etc/passwd 基本上类似 。
5 )注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名 、 电话 、 地址等等 。 不过,当你使用 finger 的功能时就会显示这些信息的(稍后做介绍) 。
6 )用户的家目录,当用户登录时就处在这个目录下 。root 的家目录是 /root ,普通用户的家目录则为 /home/username ,这个字段是可以自定义的,比如你建立一个普通用户 test1 ,要想让 test1 的家目录在 /data 目录下,只要修改 /etc/passwd 文件中 test1 那行中的该字段为 /data 即可 。
7 ) shell ,用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是 shell。Linux 的 shell 有很多种 sh, csh, ksh, tcsh, bash 等,而 Redhat/CentOS 的 shell 就是 bash。 查看 /etc/passwd 文件,该字段中除了 /bin/bash 外还有 /sbin/nologin 比较多,它表示不允许该账号登录 。 如果你想建立一个账号不让他登录,那么就可以把该字段改成 /sbin/nologin ,默认是 /bin/bash。

再来看看 /etc/shadow 这个文件,和 /etc/passwd 类似,用 ”:” 分割成 9 个字段 。
1 )用户名,跟 /etc/passwd 对应 。
2 )用户密码,这个才是该账号的真正的密码,不过这个密码已经加密过了,但是有些黑客还是能够解密的 。 所以为了安全,该文件属性设置为 600 ,只允许 root 读写 。
3 )上次更改密码的日期,这个数字是这样计算得来的,距离 1970 年 1 月 1 日到上次更改密码的日期,例如上次更改密码的日期为 2012 年 1 月 1 日,则这个值就是 365* ( 2012-1970 ) +1=15331。
4 )要过多少天才可以更改密码,默认是 0 ,即不限制 。
5 )密码多少天后到期 。 即在多少天内必须更改密码,例如这里设置成 30 ,则 30 天内必须更改一次密码,否则将不能登录系统,默认是 99999 ,可以理解为永远不需要改 。
6 )密码到期前的警告期限,若这个值设置成 7 ,则表示当 7 天后密码过期时,系统就发出警告告诉用户,提醒用户他的密码将在 7 天后到期 。
7 )账号失效期限 。 你可以这样理解,如果设置这个值为 3 ,则表示:密码已经到期,然而用户并没有在到期前修改密码,那么再过 3 天,则这个账号就失效了,即锁定了 。
8 )账号的生命周期,跟第三段一样,是按距离 1970 年 1 月 1 日多少天算的 。 它表示的含义是,账号在这个日期前可以使用,到期后账号作废 。
9 )作为保留用的,没有什么意义 。
【 新增 / 删除用户和用户组 】
a. 新增一个组 groupadd [-g GID] groupname
不加 -g 则按照系统默认的 gid 创建组,跟用户一样, gid 也是从 500 开始的

-g 选项可以自定义 gid
b. 删除组 gropudel groupname

没有特殊选项 。
c. 增加用户 useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]-u 自定义 UID
-g 使其属于已经存在的某个 GID
-d 自定义用户的家目录
-M 不建立家目录
-s 自定义 shell

你会发现,创建 test11 时,加上了 -M 选项后,在 /etc/passwd 文件中 test11 那行的第六字段依然有 /home/test11 ,可是 ls 查看该目录时,会提示该目录不存在 。

-M 选项的作用就是不创建用户的家目录 。
-d. 删除用户 userdel [-r] username
-r 选项的作用是删除用户时,连同用户的家目录一起删除 。
【chfn 更改用户的 finger (不常用) 】
前面内容中提到了 findger ,即在 /etc/passwd 文件中的第 5 个字段中所显示的信