一、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.www58058.com/28138