深刻理解Linux系統中的用戶和組帳號

1、Linux中的用戶和組帳號概述
     與Windows操做系統相比,Linux系統中的用戶和組帳號的做用本質上是同樣的,一樣都是基於用戶身份來控制對資源的訪問,只不過在表現形式及個別細節方面存在些許差別。下面將給你們介紹Linux系統中用戶帳號和組帳號的相關概念。
安全

一、用戶帳號
      在Linux系統中,根據系統管理的須要將用戶帳號分爲不一樣的類型,其擁有的權限、擔任的角色也各不相同。主要包括超級用戶、普通用戶和程序用戶。
【超級用戶】:root用戶是Linux系統中默認的超級用戶帳號,對本主機擁有至高無上的徹底權限,相似於Windows系統中的Administrator用戶。只有當進行系統管理、維護任務時,才建議使用root用戶登陸系統,平常事務處理建議使用普通用戶帳號進行。
【普通用戶】:普通用戶帳號須要由root用戶或其餘管理員用戶建立,擁有的權限受到必定限制,通常只在用戶本身的宿主目錄中有徹底權限。
【程序用戶】:在安裝Linux系統及部分應用程序時,會添加一些特定的低權限用戶帳號,這些用戶通常不容許登陸到系統,而僅用於維持系統或某個程序的正常運行。例如:bin、daemon、ftp、mail等。
bash

二、組帳號
      基於某種特定聯繫將多個用戶集合在一塊兒,即構成一個用戶組,用於表示該組內全部用戶的帳號稱爲組帳號。每個用戶帳號至少屬於一個組,這個組稱爲該用戶的基本組(或私有組);若是該用戶同時還包括在其餘的組中,則這些組稱爲該用戶的附加組(或公共組)。
      例如,用戶gaoke是總經辦的員工,與部門內的其餘同事同屬於基本組zongjingban,後來因工做安排鬚要,公司將gaoke加入到信息中心組mis。則此時用戶gaoke同時屬於zongjingban、mis組,zongjingban組是其基本組帳號,而mis組是其附加組帳號。
      最組帳號設置的權限,將適用於組內的每個用戶帳號。
測試

三、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號範圍。spa

2、Linux中的用戶帳號管理
     Linux系統中的用戶帳號、密碼等信息均保存在相應的配置文件中,直接修改這些文件或者使用用戶管理命令均可以對用戶帳號進行管理。操作系統

一、用戶帳號文件 
     與用戶帳號相關的配置文件主要有兩個,分別是/etc/passwd、/etc/shadow。前者用於保存用戶名稱、宿主目錄、登陸Shell等基本信息,後者用於保存用戶的密碼、帳號有效期等信息。在這連個配置文件中,每一行對應一個用戶帳號,不用的配置項之間使用冒號「:」進行分隔。事務

【passwd文件中的配置行格式】:
       系統中全部用戶的帳號基本信息都保存在「/etc/passwd」文件中,該文件時文本文件,任何用戶均可以讀取文件中的內容。
資源

【例2】:查看「/etc/passwd」文件中的前兩行、後兩行的內容。模板


      在passwd文件開頭的部分,包括超級用戶root及各程序用戶的帳號信息,系統中新增長的用戶帳號信息將保存到passwd文件的末尾。passwd文件的每一行內容中,包括了七個用冒號「:」分隔的配置字段,從左到右各配置字段的含義分別以下所述。
test

第一字段:用戶帳號的名稱。
第二字段:通過加密的用戶密碼字串,或者密碼佔位符「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日起計算),默認值爲空,表示帳號永久可用。
第九字段:保留字段,目前沒有特定用途。

二、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系統中,實際上大部分的程序用戶都是被禁止登錄到系統的。

三、passwd命令------爲用戶帳號設置密碼
     經過useradd命令新添加的用戶帳號,還必須爲其設置一個密碼才能用來登錄Linux系統。root用戶能夠指定帳號名稱做爲參數,對指定帳號的密碼進行管理。

【例9】:指定用戶名test01做爲參數,爲該用戶設置一個登錄密碼,重複輸入兩次進行確認,並查看shadow文件中該用戶的密碼字串信息。
      用戶帳號具備可用的登陸密碼之後,就能夠從字符終端進行登陸了。雖然root用戶能夠指定用戶名做爲參數,對指定帳號的密碼進行管理,可是普通用戶卻只能執行單獨的「passwd」命令修改本身的密碼。
      普通用戶設置本身的密碼時,密碼要求有必定的複雜性,不然系統可能拒絕進行設置。

【例10】:使用用戶帳號test01登陸終端後,及時更改本帳號的登陸密碼,須要原密碼進行驗證。
     使用passwd命令除了能夠修改帳號的密碼之外,還可以對用戶帳號進行鎖定、解鎖,或者也能夠將用戶的密碼設置爲空(無需密碼便可登陸)。相關的幾個選項以下:

-d:清空指定用戶的密碼,僅使用用戶名便可登陸系統。
-l:鎖定用戶帳戶。
-S:查看用戶帳戶的狀態(是否被鎖定)。
-u:解鎖用戶帳戶。

【例11】:將用戶帳號test01的密碼予以鎖定,查看shadow文件中的變化(密碼串前多了一個「!!」號)並檢查用戶密碼狀態。解除對用戶test01的鎖定,再次檢查用戶密碼狀態。

四、usermod命令------修改用戶帳號屬性
      對於系統中已經存在的用戶帳號,可使用usermod命令從新設置各類屬性。usermod命令一樣須要指定帳號名稱做爲參數。較常使用的幾個選項以下所述:

-u:修改用戶的UID號。
-d:修改用戶的宿主目錄位置。
-e:修改用戶的帳戶失效時間。
-g:修改用戶的基本組名。
-G:修改用戶的附加組名。
-M:不爲用戶創建並初始化宿主目錄。
-s:指定用戶的登陸Shell。
-l:更改用戶帳號的登陸名稱。
-L:鎖定用戶帳戶。
-U:解鎖用戶帳戶。
      使用usermod命令時,其大部分的選項與useradd命令的選項是相對應的,做用也類似。除此之外,還有兩個選項「-U」、「-L」,分別用於解鎖、鎖定用戶帳號。這連個選項與passwd命令的「-l」、「-u」選項做用基本相同,只不過大小寫存在區別。

五、userdel命令------刪除用戶帳號
      當系統中的某個用戶帳號已經再也不須要使用時,可使用userdel命令將該用戶帳號刪除。使用該命令也須要指定帳號名稱做爲參數。添加「-r」選項時能夠將該用戶的宿主目錄一併刪除。

六、用戶帳號的初始配置文件
       在Linux系統中添加用戶帳號後,useradd命令會在該用戶的宿主目錄中創建一些初始配置文件。這些文件來自於帳號模板目錄「/etc/skel」,基本上都是隱藏文件,較經常使用的初始配置文件包括「.bash_logout」、「.bash_profile」、「.bashrc」。       其中,「.bashrc_profile」文件中的命令將在該用戶每次登錄時被執行;「.bashrc」文件中的命令會在每次加載「/bin/Bash」程序時(固然也包括登錄系統)被執行;而「.bash_logout」文件中的命令將在用戶每次退出登錄時被執行。理解這些文件的做用,便於咱們安排一些自動運行的後臺管理任務。       若是但願爲全部用戶添加登陸後自動運行的命令程序、自動設置變量等,能夠直接修改「/etc」目錄下的相似文件,如「/etc/bashrc」、「/etc/profile」文件。

相關文章
相關標籤/搜索