二十二、账号管理(一)

king's blog
作为Linux的管理员,创建用户,删除用户,修改用户权限等,是基本的常规操作。从本节开始,我们来了解下linux关于账号管理的方方面面,由于内容较多,我们将分几个章节分别介绍。本节的主要内容如下:
一、/etc/passwd文件结构介绍
二、/etc/shadow文件结构介绍
三、/etc/group文件结构介绍
四、/etc/gshadow文件结构介绍
五、有效群组和初始群组

一、/etc/passwd文件结构介绍

linux系统的注册用户,统一保存到/etc/passwd文件中,那该文件记录了哪些内容呢,如下:

1
2
3
4
5
6
weblogic@ETS157:/opt/project> head -5 /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash

下面根据例子来了解下,该文件每个域代表的含义
/etc/passwd
①:代表账号名称
②:早期linux的密码是保存到这里,后来保存到/etc/shadow,所以这里看到是x
③:代表用户名称对应的UID,其中UID=0代表是系统管理员,1~499系统账号,500~65535 一般用户使用
④:该用户所属组的GID
⑤:用户信息说明栏,没重要用途,只是在finger功能时,稍有用途
⑥:用户的家目录,该用户登入后,将进入到该目录
⑦:代表用户登入系统后会取得该shell与系统的核心进行沟通

二、/etc/shadow文件结构介绍

linux系统注册用户的密码,均保存在/etc/shadow文件中,该文件的结构如下:

1
2
3
4
5
ETS157:~ # tail -4 /etc/shadow
weblogic:$2y$10$cpGaZZEL2kjJvGP8C7r0IOr9evXuQA8evaqdBxai6ZDKP7Afg.N3a:16377:0:99999:7:::
oracle:$2y$10$lHVoiEWNF9eyG.n9ctNWy.6sQHgNFfaQPZ76VUjxTmye/hmIpaQA2:16377:0:99999:7:::
tester:$2y$10$scmoV.l03phrlB5f8nAOLusbOot6Cajko.MLk1CwposxvUBKvdrbG:16902:0:99999:7:::
abc:!:17203:0:99999:7:::

/etc/shadow
根据下面的例子,说明每个域代表的含义:
①:代表账号名称
②:加密后的密码
③: 最近一次更改密码的时间(从1971.1.1开始计算的天数)
④:在③字段的基础上,密码多长时间内不能被修改
⑤:在③字段的基础上,密码必须在该时间内修改
⑥:在⑤字段的基础上,密码变更期限前的警告天数,如上,到期前7天给出警告提示
⑦:在⑤字段的基础上,密码过期后的账号宽限天数(密码失效日)
⑧:账号的失效日
⑨:保留字段

三、/etc/group文件结构介绍

Linux系统的Group保存在/etc/group文件内,该文件结构如下:

1
2
3
4
5
6
ETS157:~ # tail -5 /etc/group
wasgroup:!:1000:
dba:!:1001:oracle,king,abc
oinstall:!:1002:
groupA:!:1003:
groupB:!:1004:

来看个例子,对每个域进行说明:
/etc/group
①:代表组名
②:组密码(加密)
③:组的GID
④:此组支持的账号名称,比如让weblogic用户也加入到dba组,则
dba:!:1001:oracle,weblogic
方法:usermod -G dba weblogic 或者usermod -A dba weblogic (增加)
usermod -R dba weblogic (将weblogic用户从dba组中去掉)

四、/etc/gshadow文件结构介绍

同样,group的密码保存在/etc/gshadow文件中,结构如下:
注意:Radhat用这个文件,但Suse没有

1
2
3
4
5
6
[root@ReapsCindaQA1 ~]# tail -5 /etc/gshadow
tcpdump:!::
slocate:!::
wasgroup:!::
dba:!::oracle
oinstall:!::

来看个例子,对每个域进行说明:
/etc/gshadow
①:代表组名称
②:!开头表示无合法密码,所有无群组权限(重要),可用sudo替代,故该功能用得少
③:组管理员的账号
④:该群组的所属账号(与/etc/group内容一致)

五、有效群组和初始群组

1.有效群组和初始群组概念和例子

有效群组的概念:当一个用户同时属于几个组时,用groups查询,显示结果都是有效群组(effective group),第一个显示的组,就是初始群组(initial group),作用如下:

有效群组:用户登录之后,将获得所属群组集合的权限
初始群组:用户创建的文件或目录,所属的组为初始群组

请看下面的例子

1
2
3
4
5
6
7
8
9
10
11
#1.查看当前的登陆用户
weblogic@ETS157:/opt/project> whoami
weblogic

#1.查看当前登陆用户所属的组
weblogic@ETS157:/opt/project> groups
wasgroup dialout video   ----->weblogic用户属于wasgroup dialout video这3个有效群组,其中初始群组为wasgroup

#2.创建目录,并查看所属组
weblogic@ETS157:/opt/project> mkdir effective_default_group ; ll -d effective_default_group
drwxr-xr-x 2 weblogic wasgroup 4096 Mar 20 09:41 effective_default_group ---->属于wasgroup组
2.更改初始群组

那能不能修改默认群组,答案是肯定的,可通过newgrp命令在子shell中修改默认群组,请看下面的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#1.查看当前的登陆用户,及所属组,父shellID
weblogic@ETS157:/opt/project> whoami
weblogic

weblogic@ETS157:/opt/project> groups ; echo $$
wasgroup dialout video
8817


#2.修改默认的所属组,及子shellID
weblogic@ETS157:/opt/project> newgrp dialout   -------->修改初始的所属组为 dialout
weblogic@ETS157:/opt/project> groups ; echo $$ -------->初始的所属组被修改,且是在子shell中修改的
dialout wasgroup video
9013

#3.创建目录验证,新创建的目录属于dialout组
weblogic@ETS157:/opt/project> mkdir newgrep ; ll -d newgrep
drwxr-xr-x 2 weblogic dialout 4096 Mar 20 09:53 newgrep

#4.回到父shell,恢复默认组
weblogic@ETS157:/opt/project> exit
exit
wasgroup dialout video
8817
3.初始群组的设定逻辑

从上面的例子中可以看出weblogic用户属于wasgroup dialout video这3个group,初始群组为wasgroup,那系统是怎样确定的呢,为什么不是dialout呢?系统是按如下的顺序进行确定的
1.根据/etc/passwd文件,得到weblogic用户属于GID=1000的group,该GID就是初始的群组

1
2
weblogic@ETS157:~> grep weblogic /etc/passwd
weblogic:x:1001:1000::/weblogic:/bin/bash

2.再在/etc/group文件中查找GID=1000的组(为wasgroup)

1
2
weblogic@ETS157:~> grep 1000 /etc/group
wasgroup:!:1000:

3.最后再查看/etc/group中,是否还添加了weblogic用户到其他的组,这些组也属于有效群组,从下面的结果中发现weblogic用户还加入到了dialout、video2个组

1
2
3
weblogic@ETS157:~> grep weblogic /etc/group
dialout:x:16:weblogic,tester
video:x:33:weblogic,tester
Tags:
文 / 甲乙丙丁
LEAVE A REPLY

loading