M20 – 1- 第三周博客(2):Linux用户、组

一、Linux用户组详解

Linux系统中的每个用户都有一个用户组,系统能对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于和他同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就对/etc/group文件的更新。

用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;

1、用户组的添加、删除、管理

很多人都问,为什么Linux系统中已经存在用户了,为什么还需要组呢,其实这个不难理解,也是跟我们的生活息息相关的,假设1000个军人如果没有编组没有编号,是否会乱成一团呢,如果把把这一千人编组和编号,是否觉得就好方便管理了呢,而Linux系统用户组也是以这种方式进行管理和分配资源的。

Linux系统中,当创建一个普通用户时,同时也会创建一个以普通用户名称命名的用户组,是否真的是这样呢,接下来是操作演示:

[root@centos7 ~]# id tomcat
id: tomcat: no such user
[root@centos7 ~]# useradd tomcat
[root@centos7 ~]# id tomcat
uid=1001(tomcat) gid=1001(tomcat) groups=1001(tomcat)
[root@centos7 ~]#

从上面的操作可以看出,创建普通用户tomcat时,同时也创建出了tomcat用户组,而这个组是该用户的基本组,而且是仅有一个基本组,但是可以有多个附加组,如果仅仅只是创建组,而不创建用户只需要用groupadd命令创建组即可:

groupadd 命令

简介:
groupadd - create a new group
格式:
groupadd [options] group
选项:
-g GID:指明GID号;[GID_MIN, GID_MAX]
-r:创建系统组,(CentOS 6: ID<500,CentOS 7: ID<1000)
实例1:
[root@centos7 ~]# man groupadd
[root@centos7 ~]# groupadd -g 1020 nginx
[root@centos7 ~]# getent group nginx
nginx:x:1020:
实例2:
[root@centos7 ~]# groupadd -r zabbix   #创建系统用户
[root@centos7 ~]# getent group zabbix  
zabbix:x:986:                          #centos7系统中,系统用户小于1000

普通用户组是用于供人类使用,而系统用户组是供系统中的程序运行的,接下来讲的是附加组,为什么有了用户组还多了个附加组呢,附加组的作用是干什么的呢,假设一位王老师教两个班级数学,王老师给这两个班级批改作业,必须对这个两个班级有权限才能修改,但是用户只能有一个基本组,那不是王老师只能更改一个班级的作业么,但是由于linux系统的存在附加组的性质,因此将两个班级的基本组作为王老师的附加组,是不是王老师就有了更改两个班级的作业权限呢,因此附加组的作用在于用户可以使用附加组的权限,如何添加用户的附加组呢,下面讲的是gpasswd命令:

gpasswd 命令

简介:
gpasswd - administer /etc/group and /etc/gshadow
格式:
gpasswd [option] group
选项:
-a user:将user添加至指定组中
-d user:从指定组中移除用户user
-A user1,user2,...:设置有管理权限的用户列表
实例1:
[root@centos7 ~]# id mageedu
uid=1000(mageedu) gid=1000(mageedu) groups=1000(mageedu),10(wheel)
[root@centos7 ~]# getent group tom
tom:x:1021:
[root@centos7 ~]# gpasswd -a mageedu tom   #设置mageeedu用户添加附加组tom
Adding user mageedu to group tom
[root@centos7 ~]# id  mageedu
uid=1000(mageedu) gid=1000(mageedu) groups=1000(mageedu),10(wheel),1021(tom)
实例2:
[root@centos7 ~]# id  mageedu
uid=1000(mageedu) gid=1000(mageedu) groups=1000(mageedu),10(wheel),1021(tom)
[root@centos7 ~]# gpasswd -d mageedu tom
Removing user mageedu from group tom  #将mageedu用户从tom组中移除
[root@centos7 ~]# id mageedu
uid=1000(mageedu) gid=1000(mageedu) groups=1000(mageedu),10(wheel)

在有些场景中,有些用户添加组会写错名称,那如何更改组的名称呢,下面用的是groupmod命令详解:

groupmod 命令

简介:
groupmod - modify a group definition on the system
格式:
groupmod [options] GROUP
选项:
-n group_name:新名字
-g GID:新的GID
实例1:
[root@centos7 ~]# getent group nginx
nginx:x:1020:
[root@centos7 ~]# groupmod -n tom nginx  #更改普通组nginx名称为tom
[root@centos7 ~]# getent group tom
tom:x:1020:
实例2:
[root@centos7 ~]# groupmod -g 1021 tom   #更改普通组的tom的GID为1021
[root@centos7 ~]# getent group tom
tom:x:1021:

如果王老师不想加入到两个班级的组中,又想更改两个班级的作业,改怎么做呢,这时候只需要用newgrp命令,但是必须知道两个班级的组密码:

newgrp 命令

简介:
newgrp - log in to a new group
格式:
newgrp [-] [group]
实例1:
[wang@centos7 ~]$ newgrp user1  #切换到一班的组,即可对一班的资源进行操作
Password: 
[wang@centos7 ~]$

如果王老师用户已经加入两个班级的组中,我们该如何查看呢,接下来将的是查看该组的成员,

groupmems 命令

简介:
groupmems - administer members of a user's primary group
格式:
groupmems -a user_name | -d user_name | [-g group_name] | -l | -p
选项:
-g, --group:groupname更改为指定组(只有root)
-a, --add username:指定用户加入组
-d, --delete username:从组中删除用户
-p, --purge:从组中清除所有成员
-l, --list:显示组成员列表
实例1:
[root@centos7 ~]# groupmems -g wang -l  #将wang用户加入到user1组中
user1  user2 
[root@centos7 ~]# gpasswd -a wang user1 #将wang用户加入到user2组中
Adding user wang to group user1
[root@centos7 ~]# gpasswd -a wang user2
Adding user wang to group user2
[root@centos7 ~]# groupmems -g user1 -l #查看user1组中的成员
wang 
[root@centos7 ~]# groupmems -g user2 -l #查看user2组中的成员
wang
实例2:
如何将新来tom老师加入到两个班级的组中呢?
[root@centos7 ~]# useradd tom
[root@centos7 ~]# groupmems -a tom -g user1
[root@centos7 ~]# groupmems -a tom -g user2
[root@centos7 ~]# groupmems -g user1 -l
wang  tom 
[root@centos7 ~]# groupmems -g user2 -l
wang  tom
实例3:
如果wang老师离职了,需要将wang用户将两个组中删除
[root@localhost ~]# groupmems -a wang -g user1
[root@localhost ~]# groupmems -g user1 -l
tom  wang 
[root@localhost ~]# groupmems -d wang -g user1
[root@localhost ~]# groupmems -g user1 -l
tom 
[root@localhost ~]# groupmems -d wang -g user2
[root@localhost ~]# groupmems -g user2 -l
tom

Linux系统中还自带了一个命令是查看用户组中的用户列表,下面讲的是groups命令:

groups 命令

简介:
groups - print the groups a user is in
格式:
groups [OPTION]... [USERNAME]...
实例1
[root@localhost ~]# groups wang
wang : wang
[root@localhost ~]# groups tom
tom : tom user1 user2

2、用户组的管理

如果已经停用的用户组不需要了,可以用groupdel命令删除。

groupdel 命令

简介:
groupdel - delete a group
格式:
groupdel [options] GROUP
实例1:
[root@localhost ~]# getent group wang  
wang:x:1004:
[root@localhost ~]# groupdel wang   #删除用户组wang
groupdel: cannot remove the primary group of user 'wang'    #因为wang组中有wang用户,因此提示仅删除了wang组,wang用户未有删除
[root@localhost ~]# userdel -r wang  #使用userdel命令删除wang用户

Linux组:Groupname/GID

管理员组:root, 0
普通组:
    系统组:1-499, 1-999
    普通组:500+, 1000+
    
Linux组的类别:
    用户的主要组(主组):
        用户必须属于一个且只有一个主组
        组名同用户名,且仅包含一个用户:私有组
    用户的附加组(辅助组):
        一个用户可以属于零个或多个辅助组

3、用户组的配置文件详解

Linux用户组的主要配置文件:

/etc/group:组及其属性信息

/etc/gshadow:组密码及其相关属性

/etc/group:
   group_name:password:GID:user_list
   组名:组密码:群组的ID:以当前组为附加组的用户列表(分隔符为逗号)
/etc/gshadow
group_name:encrypted_password:administrators:members
群组名称:群组密码:组管理员列表:以当前组为附加组的用户列表(分隔符为逗号)

如果要编辑用户组的配置文件,建议使用vigr和grpck命令,这两个命令可以检测编辑的文件是否有语法错误。

原创文章,作者:Aleen,如若转载,请注明出处:http://www.178linux.com/28138

(0)
AleenAleen
上一篇 2016-08-05
下一篇 2016-08-05

相关推荐

  • CentOS7.3系统上编译安装httpd.2.4.25

    本文所做的所有操作是在一部新安装的CentOS7.3系统上。 1.环境与配置 环境说明:VMware上安装的CentOS7.3系统,7.3完整版光盘做成的yum源 配置:编译生成的所有的文件都存放在/usr/local/httpd24/这个目录下 2.安装GCC编译器 #安装Development tools这个软件包组 [root@pxe68 ~]# yu…

    2017-04-20
  • 关于文件权限管理了解和使用

                    文件权限管理   文件属性格式              文件属性操作 chown          设置文件的所有者…

    系统运维 2016-08-05
  • linux中的vim

    什么是vim:     Linux 在命令行下的文本编辑器,很多个别软件的编辑接口都会主动调用vim,所以在 Linux 的系统中使用文字编辑器来编辑你的Linux参数配置文件,在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改设置.所有的Unix L…

    Linux干货 2016-08-11
  • ​Bash2

    字串比较时变量最好使用"" 这样就不会报错了,只是退出码不为0 组合条件:     与:[ condition1 -a condition2 ]或condition1 && condition2     或:[ condition1 -o co…

    Linux干货 2016-09-25
  • 文件权限

    文件属主、文件属组、
    文件权限、目录权限、特殊权限

    2018-03-13
  • CentOS上配置https服务

    在CentOS6.9(http2.2)配置https   创建前准备:       安装opensssl包  和 http2.2 1、在主机(192.168.109.100)创建私有CA   (1)获取私钥       …

    2017-06-04