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