使用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
下一篇 2017-11-23

相关推荐

  • 第二周 文件管理

    1.Linux上的文件管理类型命令都有哪些,其常用的使用方法及其相关示例演示 mkdir—— 创建目录  make directory 命令格式——mkdir [OPTION]… DIRECTORY… -p:自动按需创建父目录; -v:verbose,显示详细过程; -m MODE:创建目录直接给定权限,否则是默认权限; 注意:路径基…

    2017-12-10
  • KeepAlived高可用集群详解及拓扑实验搭建配置

    Linux Cluster:KeepAlive 1.集群类型:LB(负载均衡集群),HA(高可用集群),HP(高性能集群)     LB:均衡负载的实现LVS     HA:高可用的实现KeepAlived 2.RS:健康状态检测方式: (1)网络层:icmp ping (2)传…

    Linux干货 2016-11-01
  • 0803权限管理作业练习

    0803权限管理作业练习 题目:创建组sales,gid 3000,passwd :centos,sales 的组管理员admins:user2 将用户user1,user2,user3加入到sales辅助组 希望user1创建新文件默认的所属组为sales user2将用户user3从sales组移除   答案:   &nbs…

    Linux干货 2016-08-05
  • 马哥教育网络班21期+第14周课程练习

    iptables关键点 表:filter(过滤,防火墙);nat(网络地址转换);mangle(拆解报文,做出修改,封装报文);raw(关闭nat表启用的链接追踪机制);上述是根据功能来区分的,写规则要明白要实现的功能 链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING 数据流向:流入PREROUTING–…

    Linux干货 2016-08-26
  • Tomcat

        Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。但…

    2017-09-05
  • Linux系统结构 详解

    Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。  1. linux内核         内核是操作系统的核心,具有很多最基本功能,它负责管理系…

    Linux干货 2015-04-13