在linux系统中(以ubuntu为主),用户和用户组的信息一般都存储在三个文件中:
/etc/passwd /etc/shadow /etc/group
下面开始介绍这三个文件的结构:
1、/etc/passwd
这个文件用户管理中最重要的一个文件。Linux系统中每一个用户都对应
/etc/passwd文件中有一个
对应的记录行,它记录这个用户的一些基本属性,例如:用户名,uid,gid等.这个文件对所有用户都是可读的。下面时我的系统下的/etc/passwd文件:
01 root:
x:
0:
0:root:
/root:/
bin/bash
02 daemon:
x:
1:
1:daemon:
/usr/sbin:
/bin/
sh
03
bin:
x:
2:
2:
bin:
/bin:/
bin/
sh
04 sys:
x:
3:
3:sys:
/dev:/
bin/
sh
05
sync:
x:
4:
65534:
sync:
/bin:/
bin/
sync
06 games:
x:
5:
60:games:
/usr/games:
/bin/
sh
07 man:
x:
6:
12:man:
/var/cache
/man:/
bin/
sh
08
lp:
x:
7:
7:
lp:
/var/spool
/lpd:/
bin/
sh
09 mail:
x:
8:
8:mail:
/var/mail:
/bin/
sh
10 ......
11 speech-dispatcher:
x:
109:
29:SpeechDispatcher,,,:
/var/run
/speech-dispatcher:/
bin/
sh
12 lightdm:
x:
110:
116:LightDisplay Manager:
/var/lib
/lightdm:/
bin/false
13 avahi:
x:
111:
118:AvahimDNS daemon,,,:
/var/run
/avahi-daemon:/
bin/false
14 colord:
x:
112:
120:colordcolour management daemon,,,:
/var/lib
/colord:/
bin/false
15 pulse:
x:
113:
121:PulseAudiodaemon,,,:
/var/run
/pulse:/
bin/false
16 hplip:
x:
114:
7:HPLIPsystem user,,,:
/var/run
/hplip:/
bin/false
17 saned:
x:
115:
123::
/home/saned:
/bin/false
18 liluo:
x:
1000:
1000:LiLuo,,,:
/home/liluo:
/bin/bash
从上面这个文件可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号分割为7个
字段,其格式如下:
用户名:口令:UID:GID:注释行描述:用户主目录:登陆shell
一些字段的解释如下:
口令:
系统用口令来验证用户的合法性。超级用户root或某些高级用户可以使用系统命令passwd来更改系统中所有用户的口令,普通用户也可以在登录系统后使用passwd命令来更改自己的口令。
现在的Unix/Linux系统中,口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,将/etc/shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然shadow文件是不能被普通用户读取的,只有超级用户才有权读取。
此外,需要注意的是,如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。
UID:GID:
UID表示用户标示符,GID表示该用户所属组标识符,通常都是0~65535之间的阿拉伯数字,
他们具有唯一性。
注释行描述:
一些对用户的描述。
登陆shell:
用户登录到系统后运行的命令解释器,一般都是/bin/bash,当然还有其他的解释器,例
如:sh,csh.
像上述文件中第18行,
18 liluo:
x:
1000:
1000:LiLuo,,,:
/home/liluo:
/bin/bash
用户名:
liluo
口令:
x
UID:
1000
GID:
1000
注释行描述:
LiLuo,,,
登陆shell:
/bin/
bash
2、/etc/shadow
这个文件记录行和/etc/passwd中的记录行一一对应,
与/etc/passwd文件不同,/etc/shadow文件是
只有系统管理员才有权利进行查看和修改的文件。
下面就是我的系统下/etc/shadow文件:
01 root:$
6$/D3ZdVG6$ANBmsNJ.HjJpqWdV2brj2EOhNpPtb4sc
Pl0fqLPpRo4BmGJ4cNN5U4
02
9usI
9KlQPd
0PIXsOH
6xknYMZLquC
6x
0:
15895:
0:
99999:
7:::
03 daemon:*:
15819:
0:
99999:
7:::
04
bin:*:
15819:
0:
99999:
7:::
05 sys:*:
15819:
0:
99999:
7:::
06
sync:*:
15819:
0:
99999:
7:::
07 games:*:
15819:
0:
99999:
7:::
08 man:*:
15819:
0:
99999:
7:::
09
lp:*:
15819:
0:
99999:
7:::
10 mail:*:
15819:
0:
99999:
7:::
11 news:*:
15819:
0:
99999:
7:::
12 uucp:*:
15819:
0:
99999:
7:::
13 proxy:*:
15819:
0:
99999:
7:::
14 www-data:*:
15819:
0:
99999:
7:::
15
backup:*:
15819:
0:
99999:
7:::
16 lightdm:*:
15819:
0:
99999:
7:::
17 avahi:*:
15819:
0:
99999:
7:::
18 colord:*:
15819:
0:
99999:
7:::
19 pulse:*:
15819:
0:
99999:
7:::
20 hplip:*:
15819:
0:
99999:
7:::
21 saned:*:
15819:
0:
99999:
7:::
22 liluo:$
6$b3c4qqB3$bkyhIx6NZZGtmwEcuyUL6Fsk
tUeHqeqriGn3STq7ZVtD.
9.UqDmK
23 G5IkTUj1n1oF
/XyWiQUqbMfuW9b2n2FKH/:
15888:
0:
99999:
7:::
24 mysql:!:
15897:
0:
99999:
7:::
从上面这个文件可以看出,这里每条记录都与/etc/passwd有一个映射,分为9个字段,其文件格式
如下:
用户名:口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留
一些字段的解释:
口令:
使用MD5加密的密码字串信息,当为 * 或!时,表示此用户不能登录.如果为空,则对应着用
户没有密码,登录时不需要密码。若是口令字段MD5加密的密码字串信息前面有!,则表示此账号被锁定,作用相当于禁用此账号。
最后一次修改时间:
上次修改密码的时间,表示从1970年01月01日起到最近一次修改密码时间的间隔天数。
最小时间间隔:
密码最短有效天数,自本次修改密码后,必须至少经过多少天才能修改,若为0,表示不进行
限制。
最大时间间隔:
密码最长有效天数,自本次修改密码后,经过该天数后必须修改,若为99999,表示不进行
限制。
警告时间:
提前多少天提醒用户,口令将过期,默认为7天
不活动时间:
密码过期多少天后,禁用此用户
失效时间
账号失效时间,指定了用户作废的天数(从1970.1.1起),默认为空,表示永久可用
保留:
保留字段,目前没有特定用途
像上述文件中第22,23行,
liluo:$
6$b3c4qqB3$bkyhIx6NZZGtmwEcuyUL6Fsk
tUeHqeqriGn3STq7ZVtD.
9.UqDmK
G5IkTUj1n1oF
/XyWiQUqbMfuW9b2n2FKH/:
15888:
0:
99999:
7:::
用户名:
liluo
口令:
$
6$b3c4qqB3$bkyhIx6NZZGtmwEcuyUL6Fsk
tUeHqeqriGn3STq7ZVtD.
9.UqDmKG5IkTUj1n1oF
/XyWiQUqbMfuW9b2n2FKH/
最后一次修改时间:
15888
最小时间间隔:
0
最大时间间隔:
99999
警告时间:
7
不活动时间: 失效时间: 保留:
2、/etc/group
用户组的所有信息都存储在这个文件中。将用户分组是Linux系统对用户进行管理及控制访问权限的
一种手段.每个用户都属于某个用户组,而每个组可以拥有多个用户,同样,每个用户也可以属于多个不同的组。当一个用户同时是多个组的成员时,在/etc/passwd文件中记录的时用户所属的主组,也就是登陆时所属的默认组,而其他组被称为附加组。下面就是我的系统下的/etc/group文件:
01 root:
x:
0:
02 daemon:
x:
1:
03
bin:
x:
2:
04 sys:
x:
3:
05 adm:
x:
4:liluo
06
tty:
x:
5:
07 ......
08 dialout:
x:
20:
09 fax:
x:
21:
10 voice:
x:
22:
11 cdrom:
x:
24:liluo
12 floppy:
x:
25:
13 tape:
x:
26:
14 sudo:
x:
27:liluo
15 audio:
x:
29:pulse
16
dip:
x:
30:liluo
17 ......
18 lpadmin:
x:
108:liluo
19 netdev:
x:
109:
20 whoopsie:
x:
110:
21 mlocate:
x:
111:
22 ssh:
x:
112:
23 utempter:
x:
113:
24 rtkit:
x:
114:
25 bluetooth:
x:
115:
26 lightdm:
x:
116:
27 nopasswdlogin:
x:
117:
28 avahi:
x:
118:
29 scanner:
x:
119:
30 colord:
x:
120:
31 pulse:
x:
121:
32 pulse-access:
x:
122:
33 saned:
x:
123:
34 liluo:
x:
1000:
35 sambashare:
x:
124:liluo
36 mysql:
x:
125:
从上面文件可以看出,该文件每条记录分为四段,其格式如下:
组名:口令:GID:组内用户列表
一些字段的解释:
口令:
存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为
空,或者是x
组内用户列表:
多个用户,用逗号隔开
以上就是所有对用户管理篇相关系统文件的解释