使用groupmems -l -g 组名选项遇到的问题

groupmems -l -g 组名 显示的不是附加组的成员,而是显示的是/etc/group文件的最后一个字段的内容

groupmems -l选项帮助文档上写的意思是显示的是一次组为附加组的用户列表,但是这是不准确的

那么先创建几个用户吧

[root@centos7 ~]#useradd zhao
[root@centos7 ~]#useradd li
[root@centos7 ~]#useradd zhang
[root@centos7 ~]#getent shadow zhao zhang li
zhao:!!:17493:0:99999:7:::
zhang:!!:17493:0:99999:7:::
li:!!:17493:0:99999:7:::

首先先将zhang用户设为zhang组的组管理员

[root@centos7 ~]#gpasswd -A zhang zhang
[root@centos7 ~]#getent gshadow zhang
zhang:!:zhang:

用zhang用户管理组,将zhao用户添加到zhang组

[root@centos7 ~]#su – zhang
[zhang@centos7 ~]$gpasswd -a zhao -g zhang
Adding user zhao to group zhang

但是我们用zhang能不能查看组成员呢?

[zhang@centos7 ~]$getent gshadow zhang

结果组管理员却不能查看,那么还是用root用户查看吧

[root@centos7 ~]#getent gshadow zhang
zhang:!:zhang:zhao
[root@centos7 ~]#getent group zhang
zhang:x:1007:zhao
[root@centos7 ~]#id zhao
uid=1002(zhao) gid=1002(zhao) groups=1002(zhao),1007(zhang)

使用groupmems查看

[root@centos7 ~]#groupmems -l -g zhang
zhao

从上面的结果来看zhang组是zhao的附加组,我们可以暂时理解为gshadow和group文件最后一个字段是以此组作为附加组的成员列表,那么现在做一个合理的实验,为了方便操作我不在切换成zhang用户管理该组了,现在将zhang用户添加到zhang组里:

[root@centos7 ~]#gpasswd -a zhang zhang
Adding user zhang to group zhang
[root@centos7 ~]#getent gshadow zhang
zhang:!:zhang:zhao,zhang
[root@centos7 ~]#getent group zhang
zhang:x:1007:zhao,zhang
[root@centos7 ~]#id zhang
uid=1004(zhang) gid=1007(zhang) groups=1007(zhang)

从上面的结果来看,zhang用户的确被添加到zhang组里了,但是zhang组仍然是zhang用户的主组,我们用groupmems查看一下

[root@centos7 ~]#groupmems -l -g zhang
zhao zhang

从上面的执行结果来看zhang组是zhang的主组却也用groupmems -l选项显示出来了,这就说明groupmems这个命令查看的就不是以此组作为附加组的成员列表了

深究一下,先查看与组有关的文件

[root@centos7 ~]#getent gshadow zhang
zhang:!:zhang:zhao,zhang
[root@centos7 ~]#getent group zhang
zhang:x:1007:zhao,zhang

貌似跟着两个文件都有关呢,那么修改一下gshadow文件在zhang组最后一个字段的后面添加一个用户li(其实可以不是用户,随便的字符串都行),在group文件在zhang组最后一个字段的后面添加一个不存在的用户wangcai

[root@centos7 ~]#getent gshadow zhang
zhang:!:zhang:zhao,zhang,li
[root@centos7 ~]#getent group zhang
zhang:x:1007:zhao,zhang,wangcai

添加好后,在执行groupmems -l命令查看结果:

[root@centos7 ~]#groupmems -l -g zhang
zhao zhang wangcai

结果很明显了,groupmems -l显示的并不一定是以此组为附加组的用户列表,该命令是读取的/etc/group文件中对应组的最后一个字段的全部内容。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88830

(4)
ChaogGeChaogGe
上一篇 2017-11-23 18:59
下一篇 2017-11-23 21:43

相关推荐

  • 8.3_Linux文件系统权限和特殊权限浅析

    什么是Linux文件系统权限? 在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。 Linux文件系统权限的分类 Linux中的权限分为:read(读)、write(写)、execut(执行)三种权限 文件和目录表示的权限也各有不同 权限对于文件的意义: r: 可使用文件查看类工具获取其内容 w: 可修改内…

    Linux干货 2016-08-05
  • BIND在生产环境中的创建

    一、实验:BIND二级域的搭建(均以yum安装bind),从实验图中可以看出需要五台虚拟机进行测试 一、准备五台虚拟机 二、配置root服务器 1、YUM安装bind的程序 2、配置bind的主配置文件 3、配置区域文件 4、为了实验的方便进行,把防火墙和SElinux关闭,并留意区域文件的属主属组 5、检查named的主配置文件和区域文件是否语法错误,并启…

    Linux干货 2016-10-05
  • 深入解析:分布式系统的事务处理经典问题及模型(转载分享)

    摘要:分布式系统需要在数据完整、一致性和性能间做平衡。本文系统介绍了处理分布式数据一致性的技术模型,如:Master-Slave,Master-Master,2PC/3PC,经典的将军问题,Paxos,以及Dynamo的NRW和VectorClock的模型。 编者按:数据服务的高可用是所有企业都想拥有的,但是要想让数据有高可用性,就需要冗余数据写多份。写多份…

    Linux干货 2015-04-04
  • 网络班第七周 作业

    1、创建一个10G分区,并格式为ext4文件系统 (1) 要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳 创建了一个20G的SCSI硬盘 fdisk /dev/sdb 创建ext4文件系统 ~]# mke2fs -…

    2017-09-16
  • iptables学习笔记   Netfilter:是Linux操作系统核心层内部的一个数据包处理模块。   Hook point:数据包在Netfilter中的挂载点。(PRE_ROUTIN   ,INPUT,OUTPUT,FORWARD,POST_ROUTING)   iptables 规则组成:四张表+五条链(Ho…

    Linux干货 2016-12-05