一、用戶和組
1、用戶賬號類型
在Linux系統中,根據系統管理的需要將用戶賬號分為不同的類型,其擁有的權限、擔任的角色也各不相同。主要包括超級用戶、普通用戶和程序用戶。
【超級用戶】:root用戶是Linux系統中默認的超級用戶賬號,對本主機擁有最高的權限,類似于Windows系統中的Administrator用戶。只有當進行系統管理、維護任務時,才建議使用root用戶登錄系統,日常事務處理建議使用普通用戶賬號進行。
【普通用戶】:普通用戶賬號需要由root用戶或其他管理員用戶創建,擁有的權限受到一定限制,一般只在用戶自己的家目錄中有完全權限。
【系統用戶】:在安裝Linux系統及部分應用程序時,會添加一些特定的低權限用戶賬號,這些用戶一般不允許登錄到系統,而僅用于維持系統或某個程序的正常運行。例如:bin、daemon、ftp、mail等。
2、組賬號
每一個用戶賬號至少屬于一個組,在用戶賬號創建之初,如果管理員未指定該用戶的特定主組,則系統會默認創建一個與該用戶同名的用戶組作為其主要組,這個組稱為該用戶的基本組(或私有組);如果該用戶同時還包括在其他的組中,則這些組稱為該用戶的附加組(或公共組)。一個用戶必須擁有自己的基本組,附加組則可有可無。
當某一用戶只有私有組時,若將其私有組添加為附加組,當使用id查看該用戶信息時,其私有組仍是原來的私有組,并沒有附加組的顯示,但如果稍后為該用戶添加新的私有組后再查看其信息將會將原來的組轉換為附加組,示例如下圖。
組賬號設置的權限,將適用于組內的每一個用戶賬號。
3、UID和GID號
Linux系統中的每一個用戶賬號都有一個數字形式的身份標記,稱為UID,對于系統核心來說,UID作為區分用戶的基本依據,原則上每個用戶的UID號應該是唯一的(特殊情況下會出現兩個用戶使用相同的id)。root用戶賬號的UID號為固定值0.計算機并不區分用戶的名稱,僅僅區別其ID,例如將UID為500的用戶的UID改為0,則該用戶具有與root用戶相同的權限,成為管理員用戶。而在CENTOS6中程序用戶賬號的UID號默認在1-499之間(CENTOS7在1-999之間),500-60000(CENTOS7在1000+)的UID號默認分配給普通用戶賬號使用。
與UID相類似,每一個組賬號也有一個數字形式的身份標記,稱為GID。root組賬號的GID號為固定值0,而程序組(系統組)賬號的GID號默認編號與UID的范圍是一致的。
普通用戶、組賬號使用的默認UID、GID號范圍定義在配置文件“/etc/login.defs”中。
二、Linux中的用戶賬號管理
Linux系統中的用戶賬號、密碼等信息均保存在相應的配置文件中,直接修改這些文件或者使用用戶管理命令都可以對用戶賬號進行管理。
1、用戶賬號文件
與用戶賬號相關的配置文件主要有兩個,分別是/etc/passwd、/etc/shadow。前者用于保存用戶名稱、宿主目錄、登錄Shell等基本信息,后者用于保存用戶的密碼、賬號有效期等信息。在這連個配置文件中,每一行對應一個用戶賬號,不用的配置項之間使用冒號“:”進行分隔。
【passwd文件中的配置行格式】:
系統中所有用戶的賬號基本信息都保存在“/etc/passwd”文件中,該文件時文本文件,任何用戶都可以讀取文件中的內容。
在passwd文件開頭的部分,包括超級用戶root及各程序用戶的賬號信息,系統中新增加的用戶賬號信息將保存到passwd文件的末尾。passwd文件的每一行內容中,包括了七個用冒號“:”分隔的配置字段,從左到右各配置字段的含義分別如下所述。
第一字段:用戶賬號的名稱。
第二字段:經過加密的用戶密碼字串,或者密碼占位符“x”。
第三字段:用戶賬號的UID號。
第四字段:所屬基本組賬號的GID號。
第五字段:用戶全名,可填寫與用戶相關的說明信息。
第六字段:宿主目錄,即該用戶登錄后所在的默認工作目錄。
第七字段:登錄Shell等信息,用戶完成登錄后使用的Shell。
基于系統運行和管理需要,所有用戶都可以訪問passwd文件中的內容,但是只有root用戶才能進行更改。在早期的UNIX操作系統中,用戶賬號的密碼信息也是保存在passwd文件中的,不法用戶可以獲取密碼字串進行暴力破解,這樣一來賬號安全就存在一定的隱患。因此后來將密碼轉存入專門的shadow文件中,而passwd文件中僅保留密碼占位符“x”。
【shadow文件中的配置行格式】
shadow文件又被稱為“影子文件”,其中保存有各用戶賬號的密碼信息,因此對shadow文件的訪問應該進行嚴格限制。默認只有root用戶能夠讀取文件中的內容,而不允許直接編輯該文件中的內容。
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”文件中。
如果結合useradd命令的各種選項,可以在添加用戶賬號的同時對UID號、宿主目錄、登錄Shell等相關屬性進行指定。以下列出了useradd命令中用于設置賬號屬性的幾個常見選項。
-u:指定用戶的UID號,要求該UID號碼未被其他用戶使用。
-d:指定用戶的宿主目錄位置。
-e:指定用戶的賬戶失效時間,可使用YYYY-MM-DD的日期格式。
-g:指定用戶的基本組名(或使用GID號)。
-G:指定用戶的附加組名(或使用GID號)。
-M:不建立使用者目錄,即使/etc/login.defs系統檔設定要建立使用者目錄。
-s:指定用戶的登錄Shell。
3、passwd命令——為用戶賬號設置密碼
通過useradd命令新添加的用戶賬號,還必須為其設置一個密碼才能用來登陸Linux系統。root用戶可以指定賬號名稱作為參數,對指定賬號的密碼進行管理。
用戶賬號具有可用的登錄密碼以后,就可以從字符終端進行登錄了。雖然root用戶可以指定用戶名作為參數,對指定賬號的密碼進行管理,但是普通用戶卻只能執行單獨的“passwd”命令修改自己的密碼。
普通用戶設置自己的密碼時,密碼要求有一定的復雜性,否則系統可能拒絕進行設置。
使用passwd命令除了可以修改賬號的密碼以外,還能夠對用戶賬號進行鎖定、解鎖,或者也可以將用戶的密碼設置為空(無需密碼即可登錄)。相關的幾個選項如下:
-d:清空指定用戶的密碼,僅使用用戶名即可登錄系統。
-l:鎖定用戶賬戶。
-S:查看用戶賬戶的狀態(是否被鎖定)。
-u:解鎖用戶賬戶。
4、usermod命令——修改用戶賬號屬性
對于系統中已經存在的用戶賬號,可以使用usermod命令重新設置各種屬性。usermod命令同樣需要指定賬號名稱作為參數。較常使用的幾個選項如下所述:
-u:修改用戶的UID號。
-d:修改用戶的宿主目錄位置。
-e:修改用戶的賬戶失效時間。
-g:修改用戶的基本組名。
-G:修改用戶的附加組名。
-M:不為用戶建立并初始化宿主目錄。
-s:指定用戶的登錄Shell。
-l:更改用戶賬號的登錄名稱。
-L:鎖定用戶賬戶。
-U:解鎖用戶賬戶。
使用usermod命令時,其大部分的選項與useradd命令的選項是相對應的,作用也相似。除此以外,還有兩個選項“-U”、“-L”,分別用于解鎖、鎖定用戶賬號。這連個選項與passwd命令的“-l”、“-u”選項作用基本相同,只不過大小寫存在區別。
5、userdel命令——刪除用戶賬號
當系統中的某個用戶賬號已經不再需要使用時,可以使用userdel命令將該用戶賬號刪除。使用該命令也需要指定賬號名稱作為參數。添加“-r”選項時可以將該用戶的宿主目錄一并刪除。
6、用戶賬號的初始配置文件
在Linux系統中添加用戶賬號后,useradd命令會在該用戶的宿主目錄中建立一些初始配置文件。這些文件來自于賬號模板目錄“/etc/skel”,基本上都是隱藏文件,較常用的初始配置文件包括“.bash_logout”、“.bash_profile”、“.bashrc”。
其中,“.bashrc_profile”文件中的命令將在該用戶每次登陸時被執行;“.bashrc”文件中的命令會在每次加載“/bin/Bash”程序時(當然也包括登陸系統)被執行;而“.bash_logout”文件中的命令將在用戶每次退出登陸時被執行。理解這些文件的作用,便于我們安排一些自動運行的后臺管理任務。
如果希望為所有用戶添加登錄后自動運行的命令程序、自動設置變量等,可以直接修改“/etc”目錄下的類似文件,如“/etc/bashrc”、“/etc/profile”文件。
原創文章,作者:poetic snow,如若轉載,請注明出處:http://www.www58058.com/82332