用戶和組 之 增刪改
要對計算機系統進行相關的操作,就需要有賬號,如果很多賬號需要對同一文件具有相同的操作權限,那麽這個時候就涉及到組的概念了,我們可以將不同的賬號加入同一組中,使得該組的所有賬號擁有相同的操作權限。日常的linux運維中,就需要對賬號和組進行管理,本文就用戶和組的增刪改操作進行探討。
用戶和組的關系
用戶和用戶組的對應關系有:一對一、一對多、多對一和多對多;下圖展示了這種關系:
一對一:即一個用戶可以存在一個組中,也可以是組中的唯一成員。
一對多:即一個用戶可以存在多個用戶組中。那麽此用戶具有多個組的共同權限。
多對一:多個用戶可以存在一個組中,這些用戶具有和組相同的權限。
多對多:多個用戶可以存在多個組中。其實就是上面三個對應關系的擴展。
id概念
linux中,一般情況下用戶和組都會分配到一個專有的id,這個id也可以在創建時手動自動,系統對賬號的管理是由id決定的,而非id對應的名稱或者是組名。比如同一id,名稱更改後,這個id的所擁有的權限還是一樣的,但是同一名稱,將id調整後,所擁有的權限可能是不一樣的,比如講普通用戶的uid調整為0,那麽用戶將獲得和root一樣的權限。簡單來說,進程所能夠訪問資源的權限取決於進程的運行者的身份,而id就是所謂的身份。
在CentOS 6x 以及老版本 和 CentOS 7x裏有在系統id的分配上有了變更
Linux用戶: Username/UID
管理員:root, 0
普通用戶:1-65535
系統用戶:1-499, 1-999(CentOS7) 對守護進程獲取資源進行權限分配
登錄用戶: 500+, 1000+(CentOS7)
Linux組:Groupname/GID
管理員組:root, 0
普通組:
系統組:1-499, 1-999(CENTOS7)
普通組:500+, 1000+(CENTOS7)
在linux的組裏,還分為主要組和附加組。一個用戶必須屬於一個,且僅有一個的主要組,但是一個用戶可以同時加入多個附加組裏。
默認情況下,主要組是和用戶是同名的,而且主要組也是僅包含一個用戶,這樣的組也叫私有組
配置文件
Linux用戶和組的主要配置文件有如下四個:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
格式:賬號:密碼:UID:GID:描述:家目錄:shell
描述:是關於賬號的描述,可以通過chfn這個命令來更改描述信息。
這裏的UID和GID默認情況下是一致的,但是通過手動指定可以不一致
例子,系centOS6統裏有賬號UID和GID此時最大值為524,執行以下的語句
groupadd -g 526 hong useradd terry4 useradd terry5
此時/etc/passwd的結果如下
terry4:x:525:525::/home/terry4:/bin/bash terry5:x:526:527::/home/terry5:/bin/bash
可以看到,雖然我們沒有指定新用戶 terry5的GID,但是UID 不等於 GID ,是由於,terry4的GID是525,526已經被hong通過手動方法新建指定了,所以系統默認新生成的GID為527.如果要使得UID 和 GID新建的賬號一致,可以通過手動指定。
/etc/group:組及其屬性信息
格式:組名:密碼:GID:用戶列表
用戶列表:把該組作為附加組的用戶
密碼:通過gpasswd設定,指用戶輸入該密碼就可以通過newgrp臨時切換到該組,即將該組作為臨時的附加組,獲取到附加組的相關組的權限,取消密組碼後,只有成員才可以通過newgrp命令切換入該組。
/etc/shadow:用戶密碼及其相關屬性
格式:用戶名:加密密碼:最後一次改密碼的時間:密碼最小使用時間:密碼最長使用時間:密碼警告期:密碼寬限期:賬號過期時間:保留區間
最後一次改密碼的時間 和 賬號過期時間 都是相對1970年1月1日的天數。
加密密碼:格式為$加密方式$鹽值$加密後的密碼,鹽值的作用是保證了加密的強度,這個值是隨機數,相同密碼在鹽值不一樣的情況下,加密後的密文是不一樣的。
警告期:用戶在密碼過期前幾天,提醒用戶更改密碼
密碼寬限期:用戶在密碼過期後的幾天,可以更改密碼,如果還不更改密碼,該賬戶將會被系統鎖
/etc/gshadow:組密碼及其相關屬性
格式:組名:密碼:管理者:成員
密碼:格式和/etc/shadow裏密碼格式一樣
管理者:指該用戶可以將其他用戶加入到該組裏,通過gpasswd -a添加成員
成員:把該組作為附加組的用戶,用逗號隔開不同的用戶
新建用戶的相關文件
/etc/default/useradd
/etc/skel/*
/etc/login.defs
etc/default/useradd 文件的內容,提示useradd default file ,創建用戶時使用的默認文件
GROUP = 100 表示用戶組ID
HOME = /HOME 表示家目錄的位置
INACTIVE = -1 表示是否啟用帳號過期停權,-1表示不啟用。
EXPIRE= 表示賬號是否啟用過期設置 無表示不啟用
SHELL = /bin/bash 表示賬號使用shell種類
SKEL = /etc/skel 表示賬號使用默認文件內容, 可以理解為添加用戶的目錄默認文件存放位置。也就是說,當用戶用useradd添加用戶時,用戶主目錄下的文件都是從這個目錄中復制的
CREATE_MAIL_SPOOL=yes 表示是否創建郵箱緩存 yes表示創建
/etc/skel–當系統內增加新用戶時,該目錄下的所有文件都將被自動復制到該用戶的主目錄默認時,這些文件中的大部分都是以(.)文件
/etc/login.defs文件定義了與/etc/passwd和/etc/shadow配套的用戶限制設定。這個文件是需要的,缺失並不會影響系統的使用,但是也許會產生意想不到的錯誤。
用戶和組管理命令
用戶管理命令
useradd:添加用戶
userdel:刪除賬號
usermod:修改使用者賬號
組帳號維護命令
groupadd:添加組
groupdel:刪除群組
groupmod:修改群組
下面我們通過增,刪,改的順序依次介紹
增加 用戶
useradd[options] LOGIN
-u UID: [UID_MIN, UID_MAX]定義在/etc/login.defs
-o 配合-u 選項,不檢查UID的唯一性
-g GID:指明用戶所屬基本組,可為組名,也可以GID
-c "COMMENT":用戶的註釋信息
-d HOME_DIR:以指定的路徑(不存在)為家目錄
-s SHELL: 指明用戶的默認shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...]:為用戶指明附加組,組須事先存在
-N 不創建私用組做主組,使用users組做主組
-r: 創建系統用戶CentOS 6: ID<500,CentOS 7: ID<1000
例子:
useradd -c "test terry6" -d /home/terry6 -G terry3 terry6
表示增加用戶terry6,描述為 test terry6,指定用戶的家目錄為/home/terry6,並增加附加組為terry3
增加 組
groupadd[OPTION]... group_name
-g GID: 指明GID號;[GID_MIN, GID_MAX]
-r: 創建系統組:CentOS 6: ID<500,CentOS 7: ID<1000
例子
groupadd -g 528 terry7
表示增加組terry7,並指定GID 為528
刪除 用戶
userdel[OPTION]... login
-r: 刪除使用者賬號及相關文檔,如用戶的家目錄及郵箱的目錄,反正,如果沒有-r,則只刪除賬號,相關文檔沒刪掉
例子
userdel -r terry6
表示刪掉terry6,並且把terry6家目錄及郵箱的目錄都刪掉
刪除 組
groupdel
groupdel GROUP
例子
groupdel terry3
表示刪掉了terry3這個群主,但是terry3這個賬號還是存在,如果有任何一個群組的使用者在線上的話就不能移除該群組。如terry3還是用戶terry3的主組,最好先用命令usermod -g移除用戶terry3使用者後再移除群組。註意,userdel刪除用戶的同時把用戶的主組也刪掉了。
修改 用戶
usermod[OPTION] login
-u UID: 新UID
-g GID: 新主組
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項
-s SHELL:新的默認SHELL
-c ‘COMMENT‘:新的註釋信息
-d HOME: 新家目錄不會自動創建;若要創建新家目錄並移動原家數據,同時使用-m選項
-l login_name: 新的名字;
-L: lock指定用戶,在/etc/shadow 密碼欄的增加!
-U: unlock指定用戶,將/etc/shadow 密碼欄的! 拿掉
-e YYYY-MM-DD: 指明用戶賬號過期日期
-f INACTIVE: 設定非活動期限
例子
usermod -s /bin/bash -d /home/terry7 -e 2017-09-30 terry8
表示把terry8 的賬號的shell設置為/bin/bash,家目錄修改為/home/terry7,過期日期設置為2017-09-30
修改 組
groupmod[OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
例子
groupmod -n terry3n -g 523 terry3
表示把terry3的組名改成terry3n,GID改為523
除了以上的兩個命令對用戶和組進行修改外,以下的命令也可以修改相關的屬性
pwck:檢查賬號的信息,比如賬號沒有家目錄,或者沒有密碼,就會報異常
grpck:檢查組信息,比如同一組在/etc/group和/etc/gshadow的成員中不一致,就會報異常
修改密碼
passwd[OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限,普通用戶也可以通過passwd: 修改自己的密碼
常用選項:
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-iinactivedays:非活動期限
--stdin:從標準輸入接收用戶密碼
echo "PASSWORD" | passwd--stdinUSERNAME修改用戶密碼策略
chage[OPTION]... LOGIN
-d LAST_DAY
-E --expiredateEXPIRE_DATE
-I --inactive INACTIVE
-m --mindaysMIN_DAYS
-M --maxdaysMAX_DAYS
-W --warndaysWARN_DAYS
–l 顯示密碼策略例子
chage-d 0 tom 下一次tom登錄強制重設密碼
gpasswd[OPTION] GROUP
-a user: 將user添加至指定組中
-d user: 從指定組中移除用戶user
-A user1,user2,...: 設置有管理權限的用戶列表newgrp命令:臨時切換主組,如果用戶本不屬於此組,則需要組密碼
groupmems[options] [action]
options:
-g, --group groupname更改為指定組(只有root)
Actions:
-a, --add username 指定用戶加入組
-d, --delete username 從組中刪除用戶
-p, --purge 從組中清除所有成員
-l, --list 顯示組成員列表
例子
groupmems -g tom -p
表示清除組tom的成員列表groups [OPTION].[USERNAME]... 查看用戶所屬組列表
以上就是關於linux系統中用戶和組 增 刪 改 的相關概念和命令。
本文出自 “自學linux” 博客,請務必保留此出處http://ghbsunny.blog.51cto.com/7759574/1950273
用戶和組 之 增刪改