一、用戶和組的相關(guān)概念
賬號的概念和分類
賬號:是用于注冊一個或多個用戶的數(shù)據(jù)類型。 每個合法的Linux用戶必須具有一個帳戶才能使用它。 它不僅可以用于驗證用戶的身份,而且還可以確定用戶在系統(tǒng)中可以執(zhí)行的操作。
在Linux 上的賬號可以分成兩類:
用戶賬號用來儲存單一用戶的數(shù)據(jù),你可以使用一個用戶賬號,來儲存某一個用戶的數(shù)據(jù)。
群組賬號用來儲存多個用戶的信息,每一個群組賬號可以用來記錄一組用戶的數(shù)據(jù)。
我們可以把 Linux 的所有賬號依照下面兩種方法進行分類:
依照賬號的位置。
依照賬號的功能。
依照賬號的位置
賬號數(shù)據(jù)存放在不同的地方,其可使用的范圍就會不太一樣,賬號的使用范圍我們稱為視野。依照賬號儲存的位置與視野不同,我們可以區(qū)分本機賬號與網(wǎng)域賬號兩種:
本機賬號:儲存于本機硬盤中的賬號數(shù)據(jù),我們稱為本機賬號。本機賬號使用范圍局限在賬號建立的 Linux 系統(tǒng)上,如果超出范圍時,本機賬號將無法使用。比如你在自己電腦上登錄用的賬號和密碼,正常是無法在其它的電腦上使用的。
本機賬號的優(yōu)點是簡單易用,你無須作額外的設(shè)置,就可以直接建立本機賬號;但缺點則是無法具備延展性(Scalability)。比如你在一個擁有很多主機的環(huán)境中,想擁有一個在每臺主機都可以登錄的賬號時,你就需要在所有的主機上都建立相關(guān)的用戶
網(wǎng)域賬號:你也可以把大量的計算機組織成為一個網(wǎng)域,然后在網(wǎng)域中的某一臺 Linux 上建立賬號數(shù)據(jù),并且通過某些通信協(xié)議,將賬號數(shù)據(jù)分享出來。當其他計算機需要取得賬號數(shù)據(jù)時,再通過網(wǎng)絡(luò)調(diào)用這些分享的賬號即可。這種賬號我們稱為網(wǎng)域賬號 (Domain Account)。
網(wǎng)域賬號的優(yōu)點在于具備延展性。在大規(guī)模的環(huán)境中,使用網(wǎng)域賬號往往能節(jié)省管理賬號的時間;但網(wǎng)域賬號也有缺點,其最大的缺點就是要配置網(wǎng)域賬號前,你必須先建立“域”的環(huán)境才行。
依照賬號的功能
不管是本機賬號或是網(wǎng)域賬號,我們還可以把所有賬號依照功能分成下面幾類
用戶賬號部分:包含了超級用戶、普通用戶;而普通用戶中還可細分為系統(tǒng)用戶、真實用戶兩種。
超級用戶: 在Linux 系統(tǒng)上擁有完整的控制能力,常被稱為系統(tǒng)管理員,在 系統(tǒng)上擁有完整的控制能力,你可以利用超級用戶讀取或?qū)懭? 上任何文件、安裝或刪除軟硬件、啟動或停止服務(wù),甚至關(guān)機與停止系統(tǒng)的執(zhí)行。 通常只有在管理系統(tǒng)時才會使用超級用戶賬號登錄,所以超級用戶常被稱為系統(tǒng)管理員 (System Administrator)。由于超級用戶的權(quán)限不受任何限制,你可以使用該賬號來管理 系統(tǒng);但是,也可能因為操作錯誤,或者打錯命令而造成無法挽救的傷害。在此,強烈建議你“除非有必要,否則請不要輕易以超級用戶身份使用 Linux”!
在 Linux 系統(tǒng)中,超級用戶的用戶名稱通常為 root,其 UID(用戶ID號)一定為 0。
普通用戶賬號:行為能力會受到限制,只能調(diào)用具備權(quán)限的文件,如果沒有足夠的權(quán)限,普通用戶是完全無法調(diào)用的;所以,普通用戶賬號不太容易危害 Linux 系統(tǒng)。普通用戶賬號中,我們又可分為兩大類:
系統(tǒng)賬號
這種類型的賬號僅提供給Linux 系統(tǒng)本身使用。在某些軟件執(zhí)行的時候,需要你提供一個普通用戶類型的賬號。為了滿足這些軟件而建立的賬號,我們稱為系統(tǒng)賬號 (System Account)。
真實用戶
系統(tǒng)用戶賬號是給軟件或程序使用的,那么,什么賬號是讓我們登錄Linux 時使用的呢?答案就是真實用戶(Real User)。真實用戶賬號是為了讓其他人登錄系統(tǒng)使用的
群組賬號部分:包含了超級用戶群組、系統(tǒng)群組以及用戶自定義組三大類。
超級用戶群組:Linux 有一個叫做 root 的群組,因為這個群組的名稱與 root 這個超級用戶的名稱相同,所以,我們習(xí)慣把 root 群組叫做超級用戶群組。超級用戶群組的 GID 為 0。
系統(tǒng)群組: 與系統(tǒng)賬號一樣,系統(tǒng)群組是給 Linux 系統(tǒng)本身,或是某個軟件所使用
用戶自定義組: 除了上述的群組外其余的所有群組,皆是由管理者自行定義,因此我們把這些群組稱之為用戶自定義組
另外,Linux 系統(tǒng)的“用戶自定義組“類型中,還有一種名為用戶私有群組 (UPG, User Private Group)的群組。什么是 “用戶私有群組”呢?用戶私有群組(UPG, User Private Group)是指 “與用戶賬號名稱相同,且為用戶的主要群組”的群組。當你建立新的用戶賬號時,Linux 會自動建立該用戶的私有群組。如,當你建立 test 這個用戶賬號時,Linux 會自動建立了一個名為 test 的群組,并且讓 test群組成為 test 用戶賬號的主要群組,test 群組即是 test 的私有群組。
了解完賬號的基本概念后,我們一起來看下賬號到底記錄了哪些信息
二、用戶賬號管理
本機的用戶賬號數(shù)據(jù)儲存于/etc/passwd文件中。與其他的配置文件一樣,passwd 也是一個文本文件,因此,你可以直接使用文字處理程序,例如 cat 或 less 瀏覽其中的內(nèi)容。
root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin
/etc/passwd 權(quán)限必須是0644,每一行代表一個用戶的賬號數(shù)據(jù),每一行又使用冒號(:)分隔為幾個部分
USERNAME:PASSWORD:UID:GID:COMMENT:HOMEDIR:SHELL
USERNAME: 用戶識別名稱,也是登錄的名稱
PASSWORD: 密碼位,用于存儲用戶的密碼,為了安全起見,密碼放在另一個文件中,這里統(tǒng)一用x
UID: 用戶識別號,0表示為管理員,非0為普通用戶
GID: 組識別號,用來識別用戶組的身份,同樣0為管理員組,非0為系統(tǒng)群組或者自定義組
COMMENT: 描述信息
HOMEDIR: 家目錄位置
SHELL: shell類型
這個文件我們就介紹完了,現(xiàn)在我們來看下用戶管理的相關(guān)命令
這些參數(shù)大多數(shù)可以同時使用,可以根據(jù)自己的需求指定,如:
useradd -u 1500 -g hello -d /home/hello -s /bin/bash -c "this is a test user" hello
usermod是用來修改用戶相關(guān)信息的,和useradd使用的參數(shù)很多是相同的,用法也是一樣的,除此之外usermod命令還有一些額外的參數(shù)
userdel刪除用戶,有一個常用參數(shù)-r,含義是刪除用戶的相關(guān)數(shù)據(jù),包括家目錄,郵箱。
id
[root@manage01 ~]# id hellouid=1000(hello) gid=1000(hello) 組=1000(hello)[root@manage01 ~]# id -u hello1000
whoami
[root@manage01 ~]# whoamiroot
三、組賬號管理
本機的群組賬號數(shù)據(jù)被儲存在 /etc/group 文件中,權(quán)限也必須為0644,與 /etc/passwd 一樣,這也是一個文本文件。
root:x:0:bin:x:1:daemon:x:2:
這與/etc/passwd文件的格式類似
GROUPNAME:PASSWORD:GID:MEMBERS
GROUPNAME: 組名
PASSWORD: 組密碼,這里也和passwd文件一樣是個x
GID: 群組識別號
MEMBERS: 組成員
一起來看下組管理的相關(guān)命令
四、密碼管理
賬號猶如一張通行證,有了賬號你才能順利的使用Linux。不過 Linux 怎么確認使用某賬號的人,是這個賬號的真正擁有者呢?此時Linux 會根據(jù)用戶的密碼,來確認用戶的身份。Linux 的用戶賬號與群組賬號都可設(shè)置密碼。用戶賬號的密碼用來驗證用戶的身份;而群組賬號的密碼則是用來確認用戶是否為該群組的成員,以及確認是否為該群組的管理者。
在 Linux 中,使用 useradd 新建一個用戶賬號時,useradd 會鎖定用戶的密碼,如此一來,用戶暫時不能使用 。你必須要修改其密碼后,新建的用戶才能用他的賬號登錄。要修改用戶賬號的密碼需要使用passwd命令
除了可以修改用戶賬號的密碼外,你也可以為每一個群組設(shè)置一個密碼,這個密碼稱為群組密碼(Group Password)。Linux 的用戶,可以通過 newgrp 暫時修改其主要群組的身份。執(zhí)行 newgrp 時,會以指定的群組身份,開啟一個登錄 Shell,這樣就可以獲得暫時修改主要群組之功效。此時,如果該群組沒有指定密碼,那么 Linux 只允許群組的成員可以使用 newgrp修改主要群組的身份;如果群組設(shè)置了密碼,群組成員仍可以不用密碼就可切換主要群組身份,但非群組的成員,則必須要提供正確的密碼才行。
密碼管理使用的命令我們就說到這里,現(xiàn)在看一下相關(guān)工具
五、相關(guān)工具
說到相關(guān)工具,就不得不提到shadow這個組件,shadow有三個功能:隱藏密碼、擴充密碼的功能、提供賬號管理工具
隱藏密碼:因為/etc/passwd和/etc/group文件的權(quán)限必須是0644,這意味著所有的用戶都能讀取到內(nèi)容,所以為了安全起見,我們通過shaodw把用戶和組的密碼分別隱藏在/etc/shadow,/etc/gshadow文件中,且這兩個文件只有管理員,也就是root能調(diào)用
提供賬號管理工具:我們之前所介紹的用戶和組管理的相關(guān)命令,都是shadow所提供的工具
擴充密碼功能: 這個擴充密碼功能就是除了密碼之外的額外功能,如,密碼的有效期限,設(shè)置群組管理員(組長)等,這些都是記錄在/etc/shadow,/etc/gshadow文件中
/etc/shadow:存儲用戶密碼及密碼額外功能的文件
root:$6$T52Xvk7zu84.tDXp$nfXcm6LTfUx.ZviEo7Eq1bPjDO...::0:99999:7:::bin:*:18027:0:99999:7:::
/etc/shadow文件的格式與/etc/passwd類似,也是每一行代表一個賬號的數(shù)據(jù),使用:進行分隔
USERNAME:PASSWORD:LASTCHANGED:MINDAYS:MAX_DAYS:WARNNING:EXPIRES:INVALID:RESERVED
1 USERNAME:用戶賬號名稱。
2 PASSWORD:加密后的密碼。
3 LAST_CHANGED:密碼最后一次修改的日期。
4 MIN_DAYS:密碼修改的最小間隔天數(shù)。
5 MAX_DAYS:密碼修改的最大天數(shù)。
6 WARNNING:密碼過期前警告的天數(shù)。
7 EXPIRES:密碼過期的日期
8 INVALID: 賬號失效日期
9 RESERVED:保留位,未定義功能
這里面我們所提到的日期都是從1970年1月1日起經(jīng)過的天數(shù),所以我們看到的不是日期的格式,而是一組數(shù)字,我們接下來看下另一個文件
/etc/gshadow:存儲組密碼及密碼額外功能的文件
root:::bin:::daemon:::
GROUPNAME:PASSWORD:ADMINISTRATORS:MEMBERS
GROUPNAME: 組名
PASSWORD: 組密碼
ADMINISTRATORS: 組長
MEMBERS: 組成員
除此之外用戶管理還有一個簡單的方法,那就是以root用戶身份登錄圖形界面
cockpit
# systemctl start cockpithttp://localhost:9090
管理密碼的有效期限
Shadow除了會把密碼數(shù)據(jù)隱藏到其他文件、提供許多賬號管理工具外,還允許你為賬號或密碼設(shè)置有效期限,以提高Linux 的安全性。目前的 Shadow 可以設(shè)置下列兩種期限:
密碼過期
一旦超過密碼過期日期,用戶成功的登錄Linux 時,會強迫用戶設(shè)置一個新的密碼。設(shè)置完畢后,才會開啟用戶的 Shell 程序。設(shè)置密碼過期的目的,在于提高 Linux 的安全性。
賬號過期
若超過賬號過期日期,Linux 會禁止用戶登錄系統(tǒng),即使輸入正確的密碼,也無法登錄。當賬號過期時,Linux 會提示用戶聯(lián)系管理員修改賬號過期日期。
Your account has expired; please contact your system administrator
我們可以使用chage命令來查看或調(diào)整這些相關(guān)的期限
[root@manage01 ~]# chage -l hello最近一次密碼修改時間 :從不密碼過期時間 :從不密碼失效時間 :從不帳戶過期時間 :從不兩次改變密碼之間相距的最小天數(shù) :0兩次改變密碼之間相距的最大天數(shù) :99999在密碼過期之前警告的天數(shù) :7chage -m 設(shè)置密碼修改的最小天數(shù) -M 設(shè)置密碼修改的最大天數(shù) -d 設(shè)置密碼最后修改日期 -I 設(shè)置密碼過期后,鎖定賬號的天數(shù) -E 設(shè)置賬號過期日期,0=立即過期,-1=永不過期 -W 設(shè)置密碼過期前的警告天數(shù)-l 查看指定用戶的相關(guān)信息-h 幫助
群組管理員
群組管理員可以
指派群組管理員,如果有多個管理員用“,”分隔,如果想刪除群組管理員,保持位置為空gpasswd -A USER GROUPgpasswd -A hello test#將test組的管理員設(shè)置為hellogpasswd -A '' test #刪除test組的管理員加入與刪除群組成員gpasswd -a USER GROUPgpasswd -d USER GROUP