一、Linux中的使用者群組賬号概述
與Windows作業系統相比,Linux系統中的使用者群組賬号的作用本質上是一樣的,同樣都是基于使用者身份來控制對資源的通路,隻不過在表現形式及個别細節方面存在些許差異。下面将給大家介紹Linux系統中使用者賬号群組賬号的相關概念。
1、使用者賬号
在Linux系統中,根據系統管理的需要将使用者賬号分為不同的類型,其擁有的權限、擔任的角色也各不相同。主要包括超級使用者、普通使用者和程式使用者。
【超級使用者】:root使用者是Linux系統中預設的超級使用者賬号,對本主機擁有至高無上的完全權限,類似于Windows系統中的Administrator使用者。隻有當進行系統管理、維護任務時,才建議使用root使用者登入系統,日常事務處理建議使用普通使用者賬号進行。
【普通使用者】:普通使用者賬号需要由root使用者或其他管理者使用者建立,擁有的權限受到一定限制,一般隻在使用者自己的宿主目錄中有完全權限。
【程式使用者】:在安裝Linux系統及部分應用程式時,會添加一些特定的低權限使用者賬号,這些使用者一般不允許登入到系統,而僅用于維持系統或某個程式的正常運作。例如:bin、daemon、ftp、mail等。
2、組賬号
基于某種特定聯系将多個使用者集合在一起,即構成一個使用者組,用于表示該組内所有使用者的賬号稱為組賬号。每一個使用者賬号至少屬于一個組,這個組稱為該使用者的基本組(或私有組);如果該使用者同時還包括在其他的組中,則這些組稱為該使用者的附加組(或公共組)。
例如,使用者gaoke是總經辦的員工,與部門内的其他同僚同屬于基本組zongjingban,後來因工作安排需要,公司将gaoke加入到資訊中心組mis。則此時使用者gaoke同時屬于zongjingban、mis組,zongjingban組是其基本組賬号,而mis組是其附加組賬号。
最組賬号設定的權限,将适用于組内的每一個使用者賬号。
3、UID和GID号
Linux系統中的每一個使用者賬号都有一個數字形式的身份标記,稱為UID,對于系統核心來說,UID作為區分使用者的基本依據,原則上每個使用者的UID号應該是唯一的。root使用者賬号的UID号為固定值0.而程式使用者賬号的UID号預設在1-499之間,500-60000的UID号預設配置設定給普通使用者賬号使用。
與UID相類似,每一個組賬号也有一個數字形式的身份标記,稱為GID。root組賬号的GID号為固定值0,而程式組賬号的GID号預設在1-499之間,普通組賬号使用的UID号預設為500-60000.
普通使用者、組賬号使用的預設UID、GID号範圍定義在配置檔案“/etc/login.defs”中。
【例1】:檢視“/etc/login.defs”配置檔案中定義的預設UID、GID号範圍。

二、Linux中的使用者賬号管理
Linux系統中的使用者賬号、密碼等資訊均儲存在相應的配置檔案中,直接修改這些檔案或者使用使用者管理指令都可以對使用者賬号進行管理。
1、使用者賬号檔案
與使用者賬号相關的配置檔案主要有兩個,分别是/etc/passwd、/etc/shadow。前者用于儲存使用者名稱、宿主目錄、登入Shell等基本資訊,後者用于儲存使用者的密碼、賬号有效期等資訊。在這連個配置檔案中,每一行對應一個使用者賬号,不用的配置項之間使用冒号“:”進行分隔。
【passwd檔案中的配置行格式】:
系統中所有使用者的賬号基本資訊都儲存在“/etc/passwd”檔案中,該檔案時文本檔案,任何使用者都可以讀取檔案中的内容。
【例2】:檢視“/etc/passwd”檔案中的前兩行、後兩行的内容。
在passwd檔案開頭的部分,包括超級使用者root及各程式使用者的賬号資訊,系統中新增加的使用者賬号資訊将儲存到passwd檔案的末尾。passwd檔案的每一行内容中,包括了七個用冒号“:”分隔的配置字段,從左到右各配置字段的含義分别如下所述。
第一字段:使用者賬号的名稱。
第二字段:經過加密的使用者密碼字串,或者密碼占位符“x”。
第三字段:使用者賬号的UID号。
第四字段:所屬基本組賬号的GID号。
第五字段:使用者全名,可填寫與使用者相關的說明資訊。
第六字段:宿主目錄,即該使用者登入後所在的預設工作目錄。
第七字段:登入Shell等資訊,使用者完成登入後使用的Shell。
基于系統運作和管理需要,所有使用者都可以通路passwd檔案中的内容,但是隻有root使用者才能進行更改。在早期的UNIX作業系統中,使用者賬号的密碼資訊也是儲存在passwd檔案中的,不法使用者可以擷取密碼字串進行暴力破解,這樣一來賬号安全就存在一定的隐患。是以後來将密碼轉存入專門的shadow檔案中,而passwd檔案中僅保留密碼占位符“x”。
【shadow檔案中的配置行格式】
shadow檔案又被稱為“影子檔案”,其中儲存有各使用者賬号的密碼資訊,是以對shadow檔案的通路應該進行嚴格限制。預設隻有root使用者能夠讀取檔案中的内容,而不允許直接編輯該檔案中的内容。
【例3】:檢視“/etc/shadow”檔案中的前兩行、後兩行内容。
shadow檔案的每一行内容中,包含了九個用冒号“:”分隔的配置字段,從左到右各配置字段的含義分别如下所述。
第一字段:使用者賬号名稱。
第二字段:使用MD5加密的密碼字串資訊,當為“*”或“!!”時表示此使用者不能登入到系統。若該字段内容為空,則該使用者無需密碼即可登入系統。
第三字段:上次修改密碼的時間,表示從1970年01月01日算起到最近一次修改密碼時間隔的天數。
第四字段:密碼的最短有效天數,自本次修改密碼後,必須至少經過該天數才能再次修改密碼。預設值為0,表示不進行限制。
第五字段:密碼的最長有效天數,自本次修改密碼後,經過該天數以後必須再次修改密碼。預設值為99999,表示不進行限制。
第六字段:提前多少天警告使用者密碼将過期,預設值為7.
第七字段:在密碼過期之後多少天内禁用此使用者。
第八字段:賬号失效時間,此字段指定了使用者廢棄的天數(從1970年1月1日起計算),預設值為空,表示賬号永久可用。
第九字段:保留字段,目前沒有特定用途。
2、useradd指令------添加使用者賬号
useradd指令可以用于添加使用者賬号,其基本的指令格式如下所示。
useradd [選項] 使用者名
最簡單的用法是,不添加任何選項,隻使用使用者名作為useradd指令的參數,按系統預設配置建立指定的使用者賬号。在CentOS5系統中,useradd指令在添加使用者賬号的過程中主要完成以下幾項任務。
a、在“/etc/passwd”檔案和“/etc/shadow”檔案的末尾增加該使用者賬号的記錄。
b、若未明确指定使用者的宿主目錄,則在“/home”目錄下自動建立與該使用者賬号同名的宿主目錄,并在該目錄中建立使用者的初始配置檔案。
c、若沒有明确指定使用者所屬的組,則自動建立與該使用者賬号同名的基本組賬号,組賬号的記錄資訊将儲存到“/etc/group”、“/etc/gshadow”檔案中。
【例4】:建立名為test01的使用者賬号,檢視passwd、shadow檔案中的變化,并确認該使用者宿主目錄中的初始配置檔案。
如果結合useradd指令的各種選項,可以在添加使用者賬号的同時對UID号、宿主目錄、登入Shell等相關屬性進行指定。以下列出了useradd指令中用于設定賬号屬性的幾個常見選項。
-u:指定使用者的UID号,要求該UID号碼未被其他使用者使用。
-d:指定使用者的宿主目錄位置。
-e:指定使用者的賬戶失效時間,可使用YYYY-MM-DD的日期格式。
-g:指定使用者的基本組名(或使用GID号)。
-G:指定使用者的附加組名(或使用GID号)。
-M:不建立使用者目錄,即使/etc/login.defs系統檔設定要建立使用者目錄。
-s:指定使用者的登入Shell。
【例5】:建立名為test02的使用者賬号,并将其UID号指定為504.
#useradd -u 504 test02
【例6】建立一個輔助管理者賬号admin,将其基本組指定為“wheel”、附加組指定為“root”,宿主目錄指定為“/admin”。
【例7】:建立一個考試測試用的賬号exam01,指定屬于users組,該賬号于2009-07-30失效。
#useradd -g users -e 2009-07-30 exam01
【例8】:建立用于FTP通路的使用者賬号ftpuser,将登陸Shell指定為“/sbin/nologin”(禁止登陸),且不為其建立宿主目錄。
#useradd -M -s /sbin/nologin ftpuser
在Linux系統中,實際上大部分的程式使用者都是被禁止登陸到系統的。
3、passwd指令------為使用者賬号設定密碼
通過useradd指令新添加的使用者賬号,還必須為其設定一個密碼才能用來登陸Linux系統。root使用者可以指定賬号名稱作為參數,對指定賬号的密碼進行管理。
【例9】:指定使用者名test01作為參數,為該使用者設定一個登陸密碼,重複輸入兩次進行确認,并檢視shadow檔案中該使用者的密碼字串資訊。
使用者賬号具有可用的登入密碼以後,就可以從字元終端進行登入了。雖然root使用者可以指定使用者名作為參數,對指定賬号的密碼進行管理,但是普通使用者卻隻能執行單獨的“passwd”指令修改自己的密碼。
普通使用者設定自己的密碼時,密碼要求有一定的複雜性,否則系統可能拒絕進行設定。
【例10】:使用使用者賬号test01登入終端後,及時更改本賬号的登入密碼,需要原密碼進行驗證。
使用passwd指令除了可以修改賬号的密碼以外,還能夠對使用者賬号進行鎖定、解鎖,或者也可以将使用者的密碼設定為空(無需密碼即可登入)。相關的幾個選項如下:
-d:清空指定使用者的密碼,僅使用使用者名即可登入系統。
-l:鎖定使用者賬戶。
-S:檢視使用者賬戶的狀态(是否被鎖定)。
-u:解鎖使用者賬戶。
【例11】:将使用者賬号test01的密碼予以鎖定,檢視shadow檔案中的變化(密碼串前多了一個“!!”号)并檢查使用者密碼狀态。解除對使用者test01的鎖定,再次檢查使用者密碼狀态。
4、usermod指令------修改使用者賬号屬性
對于系統中已經存在的使用者賬号,可以使用usermod指令重新設定各種屬性。usermod指令同樣需要指定賬号名稱作為參數。較常使用的幾個選項如下所述:
-u:修改使用者的UID号。
-d:修改使用者的宿主目錄位置。
-e:修改使用者的賬戶失效時間。
-g:修改使用者的基本組名。
-G:修改使用者的附加組名。
-M:不為使用者建立并初始化宿主目錄。
-l:更改使用者賬号的登入名稱。
-L:鎖定使用者賬戶。
-U:解鎖使用者賬戶。
使用usermod指令時,其大部分的選項與useradd指令的選項是相對應的,作用也相似。除此以外,還有兩個選項“-U”、“-L”,分别用于解鎖、鎖定使用者賬号。這連個選項與passwd指令的“-l”、“-u”選項作用基本相同,隻不過大小寫存在差別。
【例12】:将admin使用者的宿主目錄移動至/home目錄下,并使用usermod指令做相應調整。
【例13】:使用usermod指令鎖定使用者賬号test01,确認狀态後解除其鎖定。
【例14】:将使用者賬号的登入名稱admin更改為webmaster,下次登入時生效。
5、userdel指令------删除使用者賬号
當系統中的某個使用者賬号已經不再需要使用時,可以使用userdel指令将該使用者賬号删除。使用該指令也需要指定賬号名稱作為參數。添加“-r”選項時可以将該使用者的宿主目錄一并删除。
【例15】:删除系統中的使用者賬号test01,但是保留其宿主目錄。
【例16】:删除系統中的使用者賬号test02,同時删除其宿主目錄。
6、使用者賬号的初始配置檔案
在Linux系統中添加使用者賬号後,useradd指令會在該使用者的宿主目錄中建立一些初始配置檔案。這些檔案來自于賬号模闆目錄“/etc/skel”,基本上都是隐藏檔案,較常用的初始配置檔案包括“.bash_logout”、“.bash_profile”、“.bashrc”。
其中,“.bashrc_profile”檔案中的指令将在該使用者每次登陸時被執行;“.bashrc”檔案中的指令會在每次加載“/bin/Bash”程式時(當然也包括登陸系統)被執行;而“.bash_logout”檔案中的指令将在使用者每次退出登陸時被執行。了解這些檔案的作用,便于我們安排一些自動運作的背景管理任務。
如果希望為所有使用者添加登入後自動運作的指令程式、自動設定變量等,可以直接修改“/etc”目錄下的類似檔案,如“/etc/bashrc”、“/etc/profile”檔案。