LINUX 用戶與用戶組管理

       Linux 管理員在工作中,相當重要的一環就是“帳號管理”。因爲整個系統都是你在管理,並且所有一般用戶的帳號申請都必須通過你的協助才行!所以就必須要了解一下如何管理好一個服務器主機的用戶與用戶組。在管理Linux主機的帳號時,我們必須先來了解一下Linux到底是如何辨別每一個用戶的。

       雖然我們登錄Linux主機的時候,輸入的是我們的帳號,但是其實Linux主機並不會直接認識你的“用戶名稱”的,它僅認識ID(ID就是一組號碼)。由於計算機僅認識 0和1,所以主機對於數字比較有概念的;至於帳號只是爲了讓人們容易記憶而已。而你的ID與帳號的對應關係就在/etc/passwd當中。

一、Linux帳戶、組管理相關的文件
用戶的屬性信息文件    /etc/passwd;
影子口令、密碼文件    /etc/shadow;          
用戶組的屬性信息文件    /etc/group;
用戶組的密碼文件    /etc/gshadow;
新用戶的配置文件    /etc/skel;

解釋帳戶相關文件的組成及各段內容的含義:
1、用戶屬性信息文件的組成
以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

2、影子口令、密碼文件的組成
以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等。
帳號過期期限:這個字段表示,這個帳號在此字段規定的日期之後,將無法再使用。
預留段:最後一個字段爲保留字段,如以後有新增功能將會使用此字段。    

3、用戶組的屬性信息文件組成
以root用戶爲例:
[root@vm04 ~]# cat /etc/group | grep root
root:x:0:root        # 用戶組的屬性信息文件共分爲四段級成,同樣以“:”號分隔,下面我們介紹下每段內容的含義:
group_name:passwd:GID:user_list

組名:組名就不需要多解釋了,就是組的名稱。
密碼佔位符:羣組的密碼,通常不需要設定,同樣,密碼已經被移到到/etc/gshadow文件中,因此,這個字段存在一個“x”。
GID:組ID
用戶列表:以此組爲額外組的用戶列表,用戶間用逗號分隔

4、用戶組的密碼文件組成
以root用戶爲例:
[root@vm04 ~]# cat /etc/gshadow | grep root
root:::root        # 用戶組的密碼文件共分爲四段組成,同樣以“:”號分隔,下面我們介紹下每段內容的含義:
group name:encrypted passord:administrators:members

組名:不需要在做解釋了,呵呵,你懂的。
密碼佔位符:組的密碼,開頭爲“!”表示無合法密碼。
羣組管理員帳號:就是讓羣組具有一個管理員,管理員可以管理那些帳號可以加入/移出該羣組。
該羣組的所屬帳號:組成員,如果有多個成員,用“,”(逗號)分割。

5、新用戶的配置文件
創建新用戶的時候,是將/etc/skel文件夾中文件拷貝新建用戶家目中的。

二、Linux 帳戶、組管理的相關命令

用戶管理的相關命令:useradd、passwd、usermod、userdel、chage
組管理的相關命令:groupadd、groupmod、groupdel、gpasswd
下面我們分別介紹每個命令的基本用法:

1、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

2、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

3、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

4、userdel 命令:
格式:userdel [ -r ] username
【選項與參數】
-r:連同用戶的家目錄一起刪除

例:刪除test_user用戶,刪除用戶的同時一併將家目錄也刪除
# userdel -r susu

5、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

6、groupadd 命令:
格式:groupadd [-g gid] [-r] 組名

【選項與參數】
-g :後面接某個特定的 GID,用來直接給予某個 GID
-r :建立系統羣組,與 /etc/login.defs 內的GID_MIN有關

例:創建testgrp組,並將組ID指定爲1000
# groupadd -g 1000 testgrp

7、groupmod 命令:
格式:groupmod [-g gid] [-n group_name] 羣組名
注意:不要隨便更改GID,容易造成系統資源錯亂。
【選項與參數】
-g :修改既有的 GID 數字;
-n :修改既有的組名

例:將testgrp組的GID修改爲1050,然後再將組名改爲testgrp1
# groupmod -g 1050 testgrp
# groupmod -n testgrp1 testgrp

8、groupdel 命令:
格式:groupdel [groupname]

例:刪除testgrp1組
# groupdel testgrp1

9、gpasswd 命令:
格式:gpasswd [option] group

【選項與參數】
-A :將 groupname 的主控權交由後面的使用者管理(該羣組的管理員)
-M :將某些賬號加入這個羣組當中
-r :將 groupname 的密碼刪除
-R :讓 groupname 的密碼欄失效
-a :將某位使用者加入到 groupname 這個羣組當中
-d :將某位使用者移除出 groupname 這個羣組當中

例:將testuser1用戶加入到testgrp1額外組
# gpasswd -a testuser1 testgrp1

Linux用戶與組管理相關的文件說明及常用的命令就簡單介紹到這裏了,如果想了解更多的用法,請man來幫忙吧。希望能對大家有所幫助!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章