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 16:13
下一篇 2016-08-05 16:13

相关推荐

  • Linux 系统终端

    Linux系统的主要终端主要包含:控制台终端、控制终端、串口终端、伪终端、虚拟终端。 控制台终端:在Linux 系统中,计算机显示器通常被称为控制台终端(Console)内核将信息送到控制台终端上(/dev/console), 通过与console相关联的虚拟终端将信息显示到屏幕上。再开机过程中屏幕输出的信息,这个屏幕就是Console; 控制终端:键盘,显…

    Linux干货 2016-10-19
  • http2.4版本基本配置应用

    练习题:分别使用httpd-2.2和httpd-2.4实现; 1、建立httpd服务,要求: (1) 提供两个基于名称的虚拟主机: www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1/error_log,访问日志为/var/log/httpd/www1/access_log; www2…

    2017-06-05
  • 网络配置之-nmcli

    使用nmcli配置网络 NetworkManager是管理和监控网络设置的守护进程,设备既就是网络接口,连接是对网络接口的配置,一个网络接口可以有多个连接配置,但同时只有一个连接配置生效。 1 使用nmcli配置主机名 CentOS6 之前主机配置文件:/etc/sysconfig/network CentOS7主机名配置文件:/etc/hostname,默…

    Linux干货 2017-05-07
  • yum详解

        yum(全称为 Yellow dog Updater, Modified)yum相对于rpm来说:rpm为基础包管理器,yum则是rpm的前端工具。能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。,yum无法独立存在,系统不允许有两个…

    Linux干货 2016-08-24
  • MySQL基础入门详解

    MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 想要使用MySQL来存储并操作数…

    2017-09-16
  • Linux文件查找之find命令

    前言:        Linux文件种类繁多,难免在维护Linux中会忘记文件的路径。所有在维护Linux中学好查找命令是非常必要的。     Linux查找命令有很多,比如 whereis,type,which,locate,find(重点)。  &nbsp…

    Linux干货 2015-06-15