linux基礎命令--groupmod 修改組定義


描述

  • groupmod命令用於修改系統上的組定義。
  • groupmod命令通過更改組數據庫(the group database)里的相關條目來修改指定的組

語法

  • groupmod [選項] GROUP

選項列表

選項(常用的已加粗) 說明
-g, --gid GID

給群組指定一個新的GID,即修改組ID。(類似groupadd,-g可和-o選項一起使用,指定一個已存在的GID給目標組)

注意:1.將更新將該組作為主組的用戶,且保留該組繼續作為用戶的主組。

   2.任何具有舊組ID且必須繼續屬於組的文件,都必須手動更改其組ID。

-n, --new-name NEW_GROUP 指定要更改的組名
-o, --non-unique 需和-g選項一起使用,允許為指定的組添加一個已存在的GID,即共享一個GID,使該GID不再具備唯一性。
-p, --password PASSWORD 指定組密碼
-R, --root CHROOT_DIR 指定在CHROOT_DIR(改變后的根目錄)下更改生效以及使用CHROOT_DIR目錄下的配置文件。

退出值

EXIT VALUES  說明
0
執行成功
2 
命令語法錯誤
3
無效的選項參數
4
指定的組不存在
9
組名已被使用。
10
無法更新組文件 

 

文件

  • /etc/group:組賬戶文件。
  • /etc/gshadow:安全的組賬戶文件
  • /etc/login.defs:創建用戶和組的定義文件
  • /etc/passwd:用戶賬戶信息文件

實例

  • 使用-o和-g選項指定一個已存在的GID給目標組

 1 [root@pople ~]# id anna && id test                                
 2 uid=1002(anna) gid=1002(anna) groups=1002(anna)
 3 uid=1003(test) gid=1003(test) groups=1003(test)
 4 [root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc
 5 -rw-r--r--. 1 anna anna 231 Oct 31 01:07 .bashrc
 6 -rw-r--r--. 1 test test 231 Oct 31 01:07 .bashrc
 7 [root@pople ~]# groupmod -o -g 1002 test              # 指定anna的GID給test,即共享一個GID  8 [root@pople ~]# id anna && id test              
 9 uid=1002(anna) gid=1002(anna) groups=1002(anna)
10 uid=1003(test) gid=1002(anna) groups=1002(anna)               # 可以看到用戶test的GID已修改
11 [root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc
12 -rw-r--r--. 1 anna anna 231 Oct 31 01:07 .bashrc
13 -rw-r--r--. 1 test 1003 231 Oct 31 01:07 .bashrc              # 之前的文件的GID不會被修改,需要手動去修改
14 [root@pople ~]# chown test:anna /home/test/.bashrc        # 手動更改.bashrc文件的屬組
15 [root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc  
16 -rw-r--r--. 1 anna anna 231 Oct 31 01:07 .bashrc
17 -rw-r--r--. 1 test anna 231 Oct 31 01:07 .bashrc              # 已更正屬組為anna
[root@pople ~]# chown test:test /home/test/.bashrc              # 更新文件屬組為test,無報錯,但文件的屬組仍未改變???
[root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc
-rw-r--r--. 1 anna anna 231 Oct 31 01:07 .bashrc
-rw-r--r--. 1 test anna 231 Oct 31 01:07 .bashrc
[root@pople ~]# tail -2 /etc/group # 兩個組擁有同樣的GID。
anna:x:1002:
test:x:1002:
[root@pople ~]# su - test
[test@pople ~]$ touch tt.txt
[test@pople ~]$ ll tt.txt
-rw-r--r--. 1 test anna 0 Apr  9 17:34 tt.txt            # 可以發現切換用戶之后創建一個文件,此文件的屬組是anna而不是test。
[root@pople ~]# groupmod -n new_name anna               # 修改anna的組名為:new_name
[root@pople ~]# tail -2 /etc/group && tail -2 /etc/gshadow
test:x:1002:
new_name:x:1002: # 兩個組文件的信息已修改,細心的朋友可以發現修改后的組信息排在最后一行,而test排在前面。
test:!::
new_name:!::
[root@pople ~]# ls -la /home/anna/ /home/test/
/home/anna/:
total 16
drwx------. 2 anna test  83 Apr  4 22:47 . # 可以看到用戶anna的當前屬組權限已全部自動更改為test
drwxr-xr-x. 5 root root  41 Apr  9 16:57 ..
-rw-------. 1 anna test   9 Apr  4 22:47 .bash_history
-rw-r--r--. 1 anna test  18 Oct 31 01:07 .bash_logout
-rw-r--r--. 1 anna test 193 Oct 31 01:07 .bash_profile
-rw-r--r--. 1 anna test 231 Oct 31 01:07 .bashrc

/home/test/:
total 12
drwx------. 2 test 1003  76 Apr  9 17:34 .
drwxr-xr-x. 5 root root  41 Apr  9 16:57 ..
-rw-r--r--. 1 test 1003  18 Oct 31 01:07 .bash_logout
-rw-r--r--. 1 test 1003 193 Oct 31 01:07 .bash_profile
-rw-r--r--. 1 test test 231 Oct 31 01:07 .bashrc # 用戶test的屬組權限也自動由anna更換為test了。說明對於共享同一個GID的兩個用戶,文件的屬組名取決於組文件里排在前面的那個組,也就是組test。
-rw-r--r--. 1 test test   0 Apr  9 17:34 tt.txt
[root@pople ~]#

總結:

  • 如果兩個用戶共享一個GID為主組,應該先檢查任何具有舊組ID且必須繼續屬於組的文件,都必須手動更改其組ID,否則有可能會導致組ID不一致。
  • 如果兩個用戶共享一個GID為主組,那么新建的文件的屬組名稱都會優先選擇組文件(/etc/group、/etc/gshadow)里排在前面的那個組


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM