用戶管理(Linux運維)

1、用戶和組的相關概念
帳號的概念和分類
帳號:是一種用來記錄單個用戶或是多個用戶的數據。Linux中每個合法的用戶都必需要擁有帳號,才能使用 。它不只能夠用來驗證用戶身份,還決定了一個用戶在系統中能夠從事什麼工做shell

在Linux 上的帳號能夠分紅兩類:安全

用戶帳號 用來儲存單一用戶的數據,你可使用一個用戶帳號,來儲存某一個用戶的數據。bash

羣組帳號 用來儲存多個用戶的信息,每個羣組帳號能夠用來記錄一組用戶的數據。網絡

咱們能夠把 Linux 的全部帳號依照下面兩種方法進行分類:less

依照帳號的位置。運維

依照帳號的功能。ide

依照帳號的位置 工具

帳號數據存放在不一樣的地方,其可以使用的範圍就會不太同樣,帳號的使用範圍咱們稱爲視野。依照帳號儲存的位置與視野不一樣,咱們能夠區分本機帳號與網域帳號兩種:ui

本機帳號: 儲存於本機硬盤中的帳號數據,咱們稱爲本機帳號。本機帳號使用範圍侷限在帳號創建的 Linux 系統上,若是超出範圍時,本機帳號將沒法使用。好比你在本身電腦上登陸用的帳號和密碼,正常是沒法在其它的電腦上使用的。this

本機帳號的優勢是簡單易用,你無須做額外的設置,就能夠直接創建本機帳號;但缺點則是沒法具有延展性(Scalability)。好比你在一個擁有不少主機的環境中,想擁有一個在每臺主機均可以登陸的帳號時,你就須要在全部的主機上都創建相關的用戶

網域帳號: 你也能夠把大量的計算機組織成爲一個網域,而後在網域中的某一臺 Linux 上創建帳號數據,而且經過某些通訊協議,將帳號數據分享出來。當其餘計算機須要取得帳號數據時,再經過網絡調用這些分享的帳號便可。這種帳號咱們稱爲網域帳號 (Domain Account)。

網域帳號的優勢在於具有延展性。在大規模的環境中,使用網域帳號每每能節省管理帳號的時間;但網域帳號也有缺點,其最大的缺點就是要配置網域帳號前,你必須先創建「域」的環境才行。

依照帳號的功能

無論是本機帳號或是網域帳號,咱們還能夠把全部帳號依照功能分紅下面幾類

用戶管理(Linux運維)

用戶帳號部分:包含了超級用戶、普通用戶;而普通用戶中還可細分爲系統用戶、真實用戶兩種。

超級用戶: 在Linux 系統上擁有完整的控制能力,常被稱爲系統管理員,在 系統上擁有完整的控制能力,你能夠利用超級用戶讀取或寫入 上任何文件、安裝或刪除軟硬件、啓動或中止服務,甚相當機與中止系統的執行。 一般只有在管理系統時纔會使用超級用戶帳號登陸,因此超級用戶常被稱爲系統管理員 (System Administrator)。因爲超級用戶的權限不受任何限制,你可使用該帳號來管理 系統;可是,也可能由於操做錯誤,或者打錯命令而形成沒法挽救的傷害。在此,強烈建議你「除非有必要,不然請不要輕易以超級用戶身份使用 Linux」!

在 Linux 系統中,超級用戶的用戶名稱一般爲 root,其 UID(用戶ID號)必定爲 0。

普通用戶帳號:行爲能力會受到限制,只能調用具有權限的文件,若是沒有足夠的權限,普通用戶是徹底沒法調用的;因此,普通用戶帳號不太容易危害 Linux 系統。普通用戶帳號中,咱們又可分爲兩大類:

系統帳號

這種類型的帳號僅提供給Linux 系統自己使用。在某些軟件執行的時候,須要你提供一個普通用戶類型的帳號。爲了知足這些軟件而創建的帳號,咱們稱爲系統帳號 (System Account)。

真實用戶

系統用戶帳號是給軟件或程序使用的,那麼,什麼帳號是讓咱們登陸Linux 時使用的呢?答案就是真實用戶(Real User)。真實用戶帳號是爲了讓其餘人登陸系統使用的

羣組帳號部分:包含了超級用戶羣組、系統羣組以及用戶自定義組三大類。

超級用戶羣組:Linux 有一個叫作 root 的羣組,由於這個羣組的名稱與 root 這個超級用戶的名稱相同,因此,咱們習慣把 root 羣組叫作超級用戶羣組。超級用戶羣組的 GID 爲 0。

系統羣組: 與系統帳號同樣,系統羣組是給 Linux 系統自己,或是某個軟件所使用

用戶自定義組: 除了上述的羣組外其他的全部羣組,皆是由管理者自行定義,所以咱們把這些羣組稱之爲用戶自定義組

另外,Linux 系統的「用戶自定義組「類型中,還有一種名爲用戶私有羣組 (UPG, User Private Group)的羣組。什麼是 「用戶私有羣組」呢?用戶私有羣組(UPG, User Private Group)是指 「與用戶帳號名稱相同,且爲用戶的主要羣組」的羣組。當你創建新的用戶帳號時,Linux 會自動創建該用戶的私有羣組。如,當你創建 test 這個用戶帳號時,Linux 會自動創建了一個名爲 test 的羣組,而且讓 test羣組成爲 test 用戶帳號的主要羣組,test 羣組便是 test 的私有羣組。

瞭解完帳號的基本概念後,咱們一塊兒來看下帳號到底記錄了哪些信息

2、用戶帳號管理
本機的用戶帳號數據儲存於/etc/passwd文件中。與其餘的配置文件同樣,passwd 也是一個文本文件,所以,你能夠直接使用文字處理程序,例如 cat 或 less 瀏覽其中的內容。

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
/etc/passwd 權限必須是0644,每一行表明一個用戶的帳號數據,每一行又使用冒號(:)分隔爲幾個部分

USERNAME:PASSWORD:UID:GID:COMMENT:HOMEDIR:SHELL

USERNAME: 用戶識別名稱,也是登陸的名稱

PASSWORD: 密碼位,用於存儲用戶的密碼,爲了安全起見,密碼放在另外一個文件中,這裏統一用x

UID: 用戶識別號,0表示爲管理員,非0爲普通用戶

GID: 組識別號,用來識別用戶組的身份,一樣0爲管理員組,非0爲系統羣組或者自定義組

COMMENT: 描述信息

HOMEDIR: 家目錄位置

SHELL: shell類型

這個文件咱們就介紹完了,如今咱們來看下用戶管理的相關命令

useradd

參數

說明

-u UID

用來指定帳號的 UID,若是省略這個參數,useradd會自動以最後一個可用的 UID 做爲新帳號的 UID。 若是你指定的 UID 已經使用過,useradd 將會顯示錯誤信息,此時你能夠配合 -o 參數,告訴 useradd 容許重複的 UID。

-g GROUP

定義用戶的主要羣組。使用 -g 參數前,GROUP 必須已經存在。

-d HOME

指定用戶的主目錄。默認的主目錄是創建在 /home/ 目錄下,並且目錄名稱與用戶名稱相同。

-s SHELL

指定用戶登陸執行的程序。

-c COMMENT

指定用戶的批註說明。若是批註文字包含空白,請記得使用雙引號 (") 包起來。

-r

這個參數用來指出創建一個系統用戶的帳號。

這些參數大多數能夠同時使用,能夠根據本身的需求指定,如:

useradd -u 1500 -g hello -d /home/hello -s /bin/bash -c "this is a test user" hello
usermod 是用來修改用戶相關信息的,和useradd使用的參數不少是相同的,用法也是同樣的,除此以外usermod命令還有一些額外的參數

參數

說明

-l NEWNAME

修改帳號的用戶名稱,NEWNAME 便是新的帳號名稱。

-L

鎖定帳號,一經鎖定的帳號將沒法用來登陸系統。

-U

解除鎖定。

userdel 刪除用戶,有一個經常使用參數-r,含義是刪除用戶的相關數據,包括家目錄,郵箱。

id

[root@manage01 ~]# id hello
uid=1000(hello) gid=1000(hello) 組=1000(hello)
[root@manage01 ~]# id -u hello
1000
whoami

[root@manage01 ~]# whoami
root

3、組帳號管理
本機的羣組帳號數據被儲存在 /etc/group 文件中,權限也必須爲0644,與 /etc/passwd 同樣,這也是一個文本文件。

root:x:0:
bin:x:1:
daemon:x:2:
這與/etc/passwd文件的格式相似

GROUPNAME:PASSWORD:GID:MEMBERS

GROUPNAME: 組名

PASSWORD: 組密碼,這裏也和passwd文件同樣是個x

GID: 羣組識別號

MEMBERS: 組成員

一塊兒來看下組管理的相關命令

groupadd 創建組

參數

說明

-g GID

指定羣組帳號的標識符

-r

指定添加的羣組成爲系統羣組

-f

強制執行。 在通常的狀況下,groupadd 不容許創建一個與使用過的 GID 相同的羣組帳號,而使用這個參數時,groupadd 將會創建相同 GID 的 羣組帳號。

groupmod 修改羣組信息

參數

說明

-g GID

修改羣組帳號的標識符。GID 就是新的標識符。

-n NEWNAME

用來修改羣組的名稱。NEWNAME 就是新的組名。

groupdel 刪除羣組帳號

用戶和組的相關命令咱們介紹完了,如今來看下密碼管理

4、密碼管理
帳號猶如一張通行證,有了帳號你才能順利的使用Linux。不過 Linux 怎麼確認使用某帳號的人,是這個帳號的真正擁有者呢?此時Linux 會根據用戶的密碼,來確認用戶的身份。Linux 的用戶帳號與羣組帳號均可設置密碼。用戶帳號的密碼用來驗證用戶的身份;而羣組帳號的密碼則是用來確認用戶是否爲該羣組的成員,以及確認是否爲該羣組的管理者。

在 Linux 中,使用 useradd 新建一個用戶帳號時,useradd 會鎖定用戶的密碼,如此一來,用戶暫時不能使用 。你必需要修改其密碼後,新建的用戶才能用他的帳號登陸。要修改用戶帳號的密碼須要使用passwd命令

passwd 修改用戶密碼

參數

說明

-d

刪除用戶密碼,亦即把文件中的密碼字段清空。

-l

這個參數用來鎖定帳號,帳號一經鎖定,用戶再怎樣輸入密碼,都會被判斷爲錯誤。這個參數只能由 root 使用,普通用戶沒法用來鎖定本身的帳號。

除了能夠修改用戶帳號的密碼外,你也能夠爲每個羣組設置一個密碼,這個密碼稱爲羣組密碼(Group Password)。Linux 的用戶,能夠經過 newgrp 暫時修改其主要羣組的身份。執行 newgrp 時,會以指定的羣組身份,開啓一個登陸 Shell,這樣就能夠得到暫時修改主要羣組之功效。此時,若是該羣組沒有指定密碼,那麼 Linux 只容許羣組的成員可使用 newgrp修改主要羣組的身份;若是羣組設置了密碼,羣組成員仍能夠不用密碼就可切換主要羣組身份,但非羣組的成員,則必需要提供正確的密碼才行。

gpasswd 修改組密碼

參數

說明

-r

用來刪除羣組的密碼。

-R

鎖定 GROUP 的羣組密碼。

密碼管理使用的命令咱們就說到這裏,如今看一下相關工具

5、相關工具
說到相關工具,就不得不提到shadow這個組件,shadow有三個功能:隱藏密碼、擴充密碼的功能、提供帳號管理工具

隱藏密碼:由於/etc/passwd和/etc/group文件的權限必須是0644,這意味着全部的用戶都能讀取到內容,因此爲了安全起見,咱們經過shaodw把用戶和組的密碼分別隱藏在/etc/shadow,/etc/gshadow文件中,且這兩個文件只有管理員,也就是root能調用

提供帳號管理工具 :咱們以前所介紹的用戶和組管理的相關命令,都是shadow所提供的工具

擴充密碼功能: 這個擴充密碼功能就是除了密碼以外的額外功能,如,密碼的有效期限,設置羣組管理員(組長)等,這些都是記錄在/etc/shadow,/etc/gshadow文件中

/etc/shadow: 存儲用戶密碼及密碼額外功能的文件

root:$6$T52Xvk7zu84.tDXp$nfXcm6LTfUx.ZviEo7Eq1bPjDO...::0:99999:7:::
bin:*:18027:0:99999:7:::
/etc/shadow文件的格式與/etc/passwd相似,也是每一行表明一個帳號的數據,使用:進行分隔

USERNAME:PASSWORD:LASTCHANGED:MINDAYS:MAX_DAYS:WARNNING:EXPIRES:INVALID:RESERVED

1 USERNAME:用戶帳號名稱。

2 PASSWORD:加密後的密碼。

3 LAST_CHANGED:密碼最後一次修改的日期。

4 MIN_DAYS:密碼修改的最小間隔天數。

5 MAX_DAYS:密碼修改的最大天數。

6 WARNNING:密碼過時前警告的天數。

7 EXPIRES:密碼過時的日期

8 INVALID: 帳號失效日期

9 RESERVED:保留位,未定義功能

這裏面咱們所提到的日期都是從1970年1月1日起通過的天數,因此咱們看到的不是日期的格式,而是一組數字,咱們接下來看下另外一個文件

/etc/gshadow: 存儲組密碼及密碼額外功能的文件

root:::
bin:::
daemon:::

GROUPNAME:PASSWORD:ADMINISTRATORS:MEMBERS

GROUPNAME: 組名

PASSWORD: 組密碼

ADMINISTRATORS: 組長

MEMBERS: 組成員

除此以外用戶管理還有一個簡單的方法,那就是以root用戶身份登陸圖形界面

用戶管理(Linux運維)
用戶管理(Linux運維)

cockpit

systemctl start cockpit

http://localhost:9090

用戶管理(Linux運維)

用戶管理(Linux運維)

管理密碼的有效期限

Shadow除了會把密碼數據隱藏到其餘文件、提供許多帳號管理工具外,還容許你爲帳號或密碼設置有效期限,以提升Linux 的安全性。目前的 Shadow 能夠設置下列兩種期限:

密碼過時

一旦超過密碼過時日期,用戶成功的登陸Linux 時,會強迫用戶設置一個新的密碼。設置完畢後,纔會開啓用戶的 Shell 程序。設置密碼過時的目的,在於提升 Linux 的安全性。

帳號過時

若超過帳號過時日期,Linux 會禁止用戶登陸系統,即便輸入正確的密碼,也沒法登陸。當帳號過時時,Linux 會提示用戶聯繫管理員修改帳號過時日期。

Your account has expired; please contact your system administrator
咱們可使用chage命令來查看或調整這些相關的期限

[root@manage01 ~]# chage -l hello
最近一次密碼修改時間 :從不
密碼過時時間 :從不
密碼失效時間 :從不
賬戶過時時間 :從不
兩次改變密碼之間相距的最小天數 :0
兩次改變密碼之間相距的最大天數 :99999
在密碼過時以前警告的天數 :7

chage
-m 設置密碼修改的最小天數
-M 設置密碼修改的最大天數
-d 設置密碼最後修改日期
-I 設置密碼過時後,鎖定帳號的天數
-E 設置帳號過時日期,0=當即過時,-1=永不過時
-W 設置密碼過時前的警告天數
-l 查看指定用戶的相關信息
-h 幫助
用戶管理(Linux運維)

羣組管理員

羣組管理員能夠

指派羣組管理員,若是有多個管理員用「,」分隔,若是想刪除羣組管理員,保持位置爲空gpasswd -A USER GROUPgpasswd -A hello test#將test組的管理員設置爲hellogpasswd -A '' test #刪除test組的管理員加入與刪除羣組成員gpasswd -a USER GROUPgpasswd -d USER GROUP

相關文章
相關標籤/搜索