Linux 管理員在工做中,至關重要的一環就是「賬號管理」。由於整個系統都是你在管理,而且全部通常用戶的賬號申請都必須經過你的協助才行!因此就必需要了解一下如何管理好一個服務器主機的用戶與用戶組。在管理Linux主機的賬號時,咱們必須先來了解一下Linux究竟是如何辨別每個用戶的。shell
雖然咱們登陸Linux主機的時候,輸入的是咱們的賬號,可是其實Linux主機並不會直接認識你的「用戶名稱」的,它僅認識ID(ID就是一組號碼)。因爲計算機僅認識 0和1,因此主機對於數字比較有概念的;至於賬號只是爲了讓人們容易記憶而已。而你的ID與賬號的對應關係就在/etc/passwd當中。
1、Linux賬戶、組管理相關的文件
用戶的屬性信息文件
/etc/passwd;
影子口令、密碼文
件
/etc/shadow;
用戶組的屬性信息文件
/etc/group;
用戶組的密碼文件
/etc/gshadow;
新用戶的配置文件 /etc/skel;
解釋賬戶相關文件的組成及各段內容的含義:
一、用戶屬性信息文件的組成
以root用戶爲例:
[root@vm04 ~]# cat
/etc/passwd
| grep root
root:x:0:0:root:/root:/bin/bash # 用戶的屬性信息文件共分爲七段組成,每段之間用「:」號隔開,下面咱們介紹一下每段內容的含義:
account:password:UID:GID:GECOS:directory:shell
用戶名:就是登陸系統的賬號,用戶名用來對應UID。
密碼佔位符:就是登陸賬號的密碼,這個文件全部程序均可以讀取,很容易形成密碼數據被竊取,所以將這個字段的密碼放到了/etc/shadow文件中,因此會看到是一個"x"。
UID:用戶ID
。
GID:組ID
。
註釋信息:用戶的描述信息
。
家目錄:用戶的主目錄
。
shell:用戶默認使用的shell
。
二、影子口令、密碼文件的組成
以root用戶爲例:
[root@vm04 ~]# cat
/etc/shadow
| grep root
root:$1$ChrNrker$s.W4jjFr.lxVt9Fb7FStf1:15879:0:99999:7::: #
影子口令、密碼文
件
共分爲九段組成,
一樣以「:」號分隔,下面咱們介紹下每段內容的含義:
login name : encrypted passwd : date of last password change : minimum password age : maximum password age : password warning period : password inactivity period : account expiration date : reserved field
登陸名:因爲密碼也須要與賬號對應,因些,shadow文件的第一欄,便是咱們的登陸賬號。
密碼:這個字段內的數據纔是真正的密碼,並且是通過編譯的密碼(加密)。 此文件的默認權限通常爲[-rw-------]或[-r--------],只有root賬號才能夠查看此文件,說了這些,你應該知道這個文件的重要性了吧。
最近一次修改密碼的時間:這個字段記錄了[更改密碼的日期]時間。
密碼最短使用期限:這個字段記錄了,賬號密碼在最近一次被修改後通過多長時間(幾天)後能夠再次修改密碼操做。若是爲0,表示隨時能夠對密碼進行修改。
密碼最長使用期限:這個字段記錄了,指定最近一次修改密碼後,在多少天以後必須再次修改密碼才行,不然此賬號密碼將會[變爲過時特性]。
密碼到期警告天數:當賬號密碼有效期快要到期的時候,系統會根據這個字段的設置,發出[警告]信息,提示用戶儘快修改密碼。
賬號的非活動天數:當密碼有效期,過時後用戶仍然沒有修改密碼,那該密碼就算過時了,雖然過時了,但該賬號還能夠用來進行其它工做,如:bash等。
賬號過時期限:這個字段表示,這個賬號在此字段規定的日期以後,將沒法再使用。
預留段:最後一個字段爲保留字段,如之後有新增功能將會使用此字段。
三、用戶組的屬性信息文件組成
以root用戶爲例:
[root@vm04 ~]# cat
/etc/group
| grep root
root:x:0:root #
用戶組的屬性信息文件共分爲四段級成,
一樣以「:」號分隔,下面咱們介紹下每段內容的含義:
group_name:passwd:GID:user_list
組名:組名就不須要多解釋了,就是組的名稱。
密碼佔位符:羣組的密碼,一般不須要設定,一樣,密碼已經被移到到/etc/gshadow文件中,所以,這個字段存在一個「x」。
GID:組ID
。
用戶列表:以此組爲額外組的用戶列表,用戶間用逗號分隔
。
四、用戶組的密碼文件組成
以root用戶爲例:
[root@vm04 ~]# cat
/etc/gshadow
| grep root
root:::root #
用戶組的密碼文件共分爲四段組成,
一樣以「:」號分隔,下面咱們介紹下每段內容的含義:
group name:encrypted passord:administrators:members
組名:不須要在作解釋了,呵呵,你懂的。
密碼佔位符:組的密碼,開頭爲「!」表示無合法密碼。
羣組管理員賬號:就是讓羣組具備一個管理員,管理員能夠管理那些賬號能夠加入/移出該羣組。
該羣組的所屬賬號:組成員,若是有多個成員,用「,」(逗號)分割。
五、新用戶的配置文件
建立新用戶的時候,是將/etc/skel文件夾中文件拷貝新建用戶家目中的。
2、Linux 賬戶、組管理的相關命令
用戶管理的相關命令:useradd、passwd、usermod、userdel、chage
組管理的相關命令:groupadd、groupmod、groupdel、gpasswd
下面咱們分別介紹每一個命令的基本用法:
一、useradd 命令:
格式:useradd [-u UID] [-g 初始羣組] [-G 次要羣組] [-mM] [-c 說明欄] [-d 家目錄絕對路徑] [-s shell] 使用者帳號名
【選項與參數】
-u :後面接的是 UID ,是一組數字。直接指定一個特定的 UID 給這個帳號
;
-g :後面接的那個組名,就是該羣組的 GID 會被放置到 /etc/passwd 的第四個字段內
;
-G :後面接的組名則是這個帳號還能夠加入的羣組。 這個選項不參數會修改 /etc/group 內的相關資料
;
-M :強制,不要創建用戶家目錄!(系統帳號默認值);
-m :強制,要創建用戶家目錄!(通常帳號默認值)
;
-c :這個就是 /etc/passwd 的第五欄的說明內容,能夠隨便咱們設置描述信息;
-d :指定某個目錄成爲家目錄,而不要使用默認值。務必使用絕對路徑;
-r :創建一個系統的帳號,這個帳號的 UID 會有限制 (參考 /etc/login.defs)
;
-s :後面接一個shell ,若沒有指定則默認是 /bin/bash
;
-e :後面接一個日期,格式爲『YYYY-MM-DD』此項目可寫入 shadow 第八字段, 亦即帳號失效日的賬號設定;
-f :後面接 shadow 的第七字段項目,指定密碼是否會失效。0爲馬上失效, -1 爲永遠不失效(密碼只會過時而強制於登入時從新指定而已)
;
例:建立susu賬號,並指定家目錄爲:/testdir/susu
# mkdir /testdir
# useradd -d /testdir/susu susu
二、passwd 命令:
格式:passwd [-l] [-u] [--sdtin] [-S] [-n 日數] [-x 日數] [-w 日數] [-i 日期] 帳號 <==root 功能
【選項與參數】
--stdin:能夠經過來自前一個管道的數據,做爲口令輸入,此參數對shell script有很大幫助
;
-l:是Lock的意思,會將/etc/shadow第二欄最前面加上歎號「!」使密碼失效
;
-u:與-l相對,是Unlock的意思
;
-n:後面接天數,shadow的第4字段,密碼最短使用天數,指定天數內不可修改密碼;
-x:後面接天數,
shadow的第5字段,
最長使用天數,指定天數內必須修改密碼;
-w:
後面接天數,
shadow的第6字段,
密碼過時前
警告天數;
-i:後面接日期,
shadow的第7字段,密碼失效的日誌,
非活動時長;
例:給test_user用戶設置密碼:
# echo "password-string" | passwd --stdin susu
三、usermod 命令:
格式:usermod [-cdegGlsuLU] username
【選項與參數】
-u UID:後面接UID數字,即/etc/passwd文件中第3段的內容
;
-g GID:後面接GID數字,
即/etc/passwd文件中第4段的內容
;
-a -G
GID: -G修改額外組時會覆蓋原有的額外組,同時使用-a選項則能保留原有的額外組;(append,追加)
-c COMMENT:後面接賬號的說明,
即/etc/passwd文件中第5段的內容,能夠加入一些賬號的描述信息
;
-s /PATH/TO/SHELL:後面接shell的實際文件,例如:/bin/bash或/bin/csh
-l NEW_NAME: 後面接賬號的名稱,改用戶的登陸名稱,
即/etc/passwd文件中第1段的內容
;
-m -d
/path/to/somewhere:-d只修改家目錄指向,同時使用-m選項則可實現將原來家目錄移動爲新的家目錄;
-L:暫時將用戶的口令凍結,讓他沒法登陸,其實僅改/etc/shadow的密碼欄
;
-U:將/etc/shadow密碼檣的(歎號)「!」取消,解凍
;
例:將susu用戶加wheel、redha額外組,而後在將此用戶加入centos額外組
# usermod -a -G wheel susu ; usermod -a -G redhat susu ; usermod -a -G centos susu
四、userdel 命令:
格式:userdel [ -r ] username
【選項與參數】
-r:連同用戶的家目錄一塊兒刪除
;
例:刪除test_user用戶,刪除用戶的同時一併將家目錄也刪除
# userdel -r susu
五、chage 命令:
格式:chage [-ldEImMW] username
【選項與參數】
-l:列出該賬號的詳細密碼參數
;
-d :後面接日期,修改 shadow 第三字段(最近一次更改密碼的日期),格式 YYYY-MM-DD
;
-E :後面接日期,修改 shadow 第八字段(帳號失效日),格式 YYYY-MM-DD
;
-I :後面接天數,修改 shadow 第七字段(密碼失效日期)
;
-m :後面接天數,修改 shadow 第四字段(密碼最短保留天數)
;
-M :後面接天數,修改 shadow 第五字段(密碼多久須要進行變動)
;
-W :後面接天數,修改 shadow 第六字段(密碼過時前警告日期)
;
例:將susu用戶密碼警告日期修改成5天
# chage -W 5 susu
六、groupadd 命令:
格式:groupadd [-g gid] [-r] 組名
【選項與參數】
-g :後面接某個特定的 GID,用來直接給予某個 GID
;
-r :創建系統羣組,與 /etc/login.defs 內的GID_MIN有關
;
例:建立testgrp組,並將組ID指定爲1000
# groupadd -g 1000 testgrp
七、groupmod 命令:
格式:groupmod [-g gid] [-n group_name] 羣組名
注意:不要隨便更改GID,容易形成系統資源錯亂。
【選項與參數】
-g :修改既有的 GID 數字;
-n :修改既有的組名
;
例:將testgrp組的GID修改成1050,而後再將組名改成testgrp1
# groupmod -g 1050 testgrp
# groupmod -n testgrp1 testgrp
八、groupdel 命令:
格式:groupdel [groupname]
例:刪除testgrp1組
# groupdel testgrp1
九、gpasswd 命令:
格式:gpasswd [option] group
【選項與參數】
-A :將 groupname 的主控權交由後面的使用者管理(該羣組的管理員)
;
-M :將某些帳號加入這個羣組當中
;
-r :將 groupname 的密碼刪除
;
-R :讓 groupname 的密碼欄失效
;
-a :將某位使用者加入到 groupname 這個羣組當中
;
-d :將某位使用者移除出 groupname 這個羣組當中
;
例:將testuser1用戶加入到testgrp1額外組
# gpasswd -a testuser1 testgrp1
Linux用戶與組管理相關的文件說明及經常使用的命令就簡單介紹到這裏了,若是想了解更多的用法,請man來幫忙吧。但願能對你們有所幫助!