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中所有的一切,都是可以通过ls进行查询的到的,甚至可以说ll查看详细信息时表现形式为文件,所有的设备,所有的文件不论后缀,只是一个单纯文件通过vim可以编辑一切 单一目的的小程序,组合小程序完成复杂任务 在linux中,每一个命令都是对应一个功能,通过不同的参数来完成不同的要求,通过繁多的小的命令来完成大型的要求…

    Linux干货 2016-10-30
  • 如何编译源码安装

    #include <stdio.h> main() {printf(“Hello World!\n”); } gcc -o hello hello.c 在编写hello.c的时候出现问题一直找不到,后来发现是因为我安装的gcc有问题 我在安装的时候是用rpm -ivh gcc –nodeps忽略依赖关系直接安装…

    2017-08-19
  • 软件包管理 — rpm & yum

    软件包管理 包管理器     二进制应用程序的组成部分:         二进制文件、库文件、配置文件、帮助文件     程序包管理器:      &…

    Linux干货 2016-08-24
  • day6总结

    主要内容: useradd与usermod对比 groupadd与groupmod对比 passwd与chage对比 gpasswd与groupmems对比 切换用户 chown与chgrp用法 一般权限与特殊权限 chmod用法   useradd创建用户的初始信息存放在/etc/login.defs和/etc//default/useradd文…

    系统运维 2016-08-08
  • 初识linux

    Linux 是什么?2014年之前我都没有听说过linux。 简单来说,Linux是一种操作系统,我们知道Windows吧,Linux也是一种操作系统。 特性: (1)字符界面(当然现在也有图形界面了) (2)一切皆文件 (3)许多小工具程序组合 Linux脱胎于Unix,Unix是由贝尔实验开发的。符合posix 标准,Unix系统上面的应用程序大部分可以…

    Linux干货 2016-06-01
  • Linux误删大文件的一个可能解救办法

    描述:某个网友说他在进行md5指纹对比某文件的时候,另外一个同事在另外一个窗口删除了该文件,然后顺嘴跟他说了下,这时候他意识到同事可能是误删除了,于是,他利用了以下办法来进行解救: 操作顺序如下: 1)网友的操作: [root@C67-X64-A0 ~]# ls -l /test.img  -rw-r–r-…

    Linux干货 2016-08-02