整理自《鸟哥的Linux私房菜》,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/
管理员的工作中,相当重要的一环就是“管理账号”。因为整个系统都是你在管理的,并且所有一般用户的账号申请都必须要通过你的协助才行!所以必须要了解一下如何管理好一个服务器主机的账号。在管理Linux的账号时,我们必须先来了解一下Linux是如何辨别每一个用户的。
1.用户登陆的来龙去脉
1.1 登陆过程
Linux系统上面的用户如果需要登陆主机以取得shell的环境来工作时,需要通过以下步骤:
- 先寻找/etc/passwd是否有你输入的账号,如果没有则跳出,如果有的话则将该账号对应的UID与GID读出,另外,将账号的主文件夹和shell设置也一起读出。
- 核对密码。这时Linux会进入/etc/shadow里面找出账号对应的账号与UID,然后核对一下输入的密码与里面的密码是否相符。
- 如果一切顺利,则登陆成功,取得shell的管控权。
1.2 /etc/passwd文件结构
文件类似于:
每一行代表一个账号,字段之间用“:”隔开,共七个字段,分别是:
账号名称:密码:UID:GID:用户信息说名列:主文件夹:Shell
说明:
- 密码:早起UNIX系统的密码就是放在这个字段上!但是这个文件的权限是所有程序都能读取,很容易造成密码数据被窃取,因此后来就将这个字段的密码数据放到/etc/shadow中了,所以这里你会看到一个”x”。
- Shell:默认shell会使用bash,就是在这个字段指定的。这里需要注意的是,有一个shell可以用来替代成让账号无法取得shell环境的登陆操作,那就是/sbin/nologin。
1.3 /etc/shadow 文件结构
很多程序的运行都与权限有关,而权限又与UID/GID有关,因此各个程序当然要读取/etc/passwd来了解不同账号的权限。因此
/etc/passwd的权限需要设置为-rw-r--r--。因为这样的关系密码移到/etc/shadow这个文件,并加了很多的限制。文件结构类似于:
每一行代表一个账号,字段之间用“:”隔开,共九个字段,分别是:
账号名称:密码:最近更改的日期:不可被更改的天数:需要重新更改的天数:警告天数:宽限时间:失效日期:保留
2.有效与初始用户组
看完了和账号直接相关的两个文件,再来看看用户组的配置文件:/etc/group和/etc/gshadow。
2.1 /etc/group 文件结构
文件的内容有点像这样:
每一行代表一个用户组,也是以“:”作为字段分割符,共分为4列,分别是:
用户组名称:用户组密码:GID:支持的账号名称
说明:
- 用户组密码:通常不需要设置,留给“用户组管理员”。同样已经移到/etc/gshadow中,因此为“x”。
- 通过图示来了解账号相关文件之间的UID/GID与密码间的关系:
- 有效用户组与初始用户组。现在就有一个问题了, 一个账号可以加入多个用户组,那么在工作的时候,到底是以哪个用户组为准呢?在/etc/passwd第四列,对应的用户组是初始用户组,用户登陆就会主动取得,不需要再/etc/group第四个字段写入该账号。账号工作时是以有效用户组为准,查看和更改有效用户组的命令分别是groups和newgrp。
2.2 /etc/gshadow的文件结构
文件结构如下:
各个字段含义:
用户组名称:密码:用户组管理的账号:所属账号
说明:
- 这个文件和创建“用户组管理员”有关。就是账号太多,root管理不过来,就可以创建用户组管理员,负责将账号纳入自己管理的用户组中。