使用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.www58058.com/88830

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

相關推薦

  • 一鍵搭建mysql集群系列一

    一鍵自動安裝mysql 5.7 shell腳本自動化安裝二進制mysql-5.7 本節主要用到四個shell腳本 和 一臺資料存儲機器(IP:192.168.42.26) install_mysql.sh 自動化安裝mysql腳本 ntpdate.sh 時間同步腳本 system_init.sh 系統初始化腳本 yum.sh yum源配置腳本 執行步驟: 1…

    2017-05-13
  • Linux程序包管理(二)YUM使用

    YUM Linux程序包管理(二) 說完了程序包管理以及rpm的相關使用,接下來說說rpm的前端管理工具 YUM YUM是什么?    前面提到,yum是rpm程序包管理器的前端管理工具,那么yum到底是什么?又能做什么呢? YUM:yellow dog,Yellowdog Update Mod…

    Linux干貨 2016-06-01
  • shell腳本編程基礎之二(if、case、for、while、until、continue、break語句使用)

    在shell腳本編程中,我們可以根據命令的狀態結果,判斷要不要執行下一步,但是有時候要判斷的問題不止一個,甚至對問題本身都要做判斷;同時問題的結果有時也不止一個,這時要借助簡單的邏輯與和邏輯或,就顯得很無力;要完成復雜的任務,需要借助一定的流程控制:順序執行、選擇執行、循環執行、同時在腳本執行過程中,有用戶交互輸入的需; if語句 case語句 for語句 …

    Linux干貨 2016-08-21
  • Linux入門詳解(第一周)

    Linux入門 1. 描述計算機的組成及其功能 計算機硬件的五大組成部分為:運算器、控制器、存儲器、輸入設備和輸出設備; CPU:CPU是執行存儲在主存中指令的引擎;內部又分為算數邏輯單元和控制單元,其中算數邏輯單元主要負責程序的運算與邏輯判斷,控制單元則主要是協調各周邊組件與各單元間的工作;此外CPU內還包含寄存器(如PC)和高速緩存等; 存儲器:這里指主…

    Linux干貨 2016-08-29
  • 文件系統的掛載使用總結

    文件系統使用 除根文件系統以外的文件系統創建后要使用需要先掛載至掛載點后才可以被訪問,掛載點即分區設備文件關聯的某個目錄文件,掛載命令mount和 卸載命令umount; 掛載點: mount_point,作為被掛載的文件系統的訪問入口; 作為掛載點需要滿足三個條件:  (1)這個目錄事先存在  (2)使用未被或不會被其他進程使用到的目錄…

    系統運維 2016-11-19
  • 馬哥教育網絡班22期第2周課程作業

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。     1、cp 文件復制 [選項]源文件 目標文件         -r 遞歸復制    …

    Linux干貨 2016-08-31
欧美性久久久久