當前位置:成語大全網 - 新華字典 - 用戶和組

用戶和組

雖然我們登陸 Linux 系統時,輸入的是帳號,但是其實電腦並不會直接識別帳號名稱,它僅認識 ID 而已。

每個登陸用戶至少都會取得兩個 ID ,壹個是用戶ID(User ID ),壹個是群組ID(Group ID)。文件是如何知道它是屬於哪個用戶和群組呢?其實就是通過 UID 和 GID 。

這個文件的結構:每壹行代表壹個用戶帳號,每壹行的內容使用冒號 : 隔開,總***有 7 項內容:

1.用戶名稱

2.密碼,由於歷史原因,密碼欄都是 x ,真正的密碼在 /etc/shadow 中;

3.UID,特別的, root 用戶的 UID 是 0 , 1-999 是系統帳號;

4.GID,對應 /etc/group 中的 GID ;

5.備註

6.家目錄

7.Shell

這個文件主要與用戶密碼相關,結構和 /etc/passwd 類似,每壹行代表壹個用戶密碼和限制條件:

1.用戶名稱;

2.密碼,註意是經過加密的密碼;

3.最近更換密碼的日期;

4.密碼不可更換的天數;

5.密碼需要更換的天數;

6.密碼需要更換期限前的警告天數;

7.密碼過期後的帳號寬限時間;

8.帳號失效日期;

9.保留;

這個文件記錄 GID 與群組名稱的對應關系。

每壹行代表壹個群組,以冒號 : 作為分隔符,總***有 4 欄,每個欄位的意義是:

當用戶壹登陸系統,立刻就擁有這個群組的相關權限。

可以通過查看 /etc/passwd 文件裏面用戶的 GID 確定初始群組。使用者壹登陸就會主動取得,不需要在 /etc/group 文件的第 4 個欄位中寫入該群組。

假如有壹個用戶 lc ,由於是使用 useradd <username> 命令創建的,現在 lc 這個用戶的初始群組是 lc 。如果它要加入到 users 組中,那麽必須要在 /etc/group 文件中找到 users 那壹行,將 lc 這個用戶加到第 4 欄當中,這樣 lc 就加入了 users 群組中。如果壹個用戶不止加入壹個群組,用逗號 , 隔開即可。

如何知道壹個用戶屬於哪些群組呢?可以使用命令 groups ,結果如下:

上面輸出的信息顯示用戶 lc 同時屬於 lc 和 users 兩個群組。同時,還有壹個隱含的信息: 第壹個輸出的群組為有效群組。 也就是說, 目前用戶 lc 的有效群組是 lc 。此時,如果我以 touch <filename> 新建壹個文件,這個文件的擁有者是 lc ,群組也是 lc 。

通常有效群組的作用就是新建文件時。

那麽有效群組是否可以切換呢?

我想把有效群組切換到 users ,此時可以使用 newgrp 命令,這個命令可以變更目前用戶的有效群組。

上面輸出的信息顯示 有效群組 已經變更為 users 了

這個文件的作用是建立群組管理員,和 /etc/group 壹樣也是使用冒號 : 作為分隔符,每壹欄的含義如下:

1.群組名稱

2.密碼欄。密碼欄為嘆號 ! 或者為 空 表示該群組沒有群組管理員

3.群組管理員的帳號

4.該群組所屬的用戶

使用系統默認值新增用戶,操作如下:

默認值內容包括:

有特殊需求的新增用戶操作如下:

這裏我們指定了新增用戶的 uid ,指定了壹個已經存在的群組作為使用者的初始群組。

以上新增了用戶之後,在默認情況下,該用戶是鎖定無法登陸的,需要使用 passwd 命令設定密碼才可以使用

Pluggable Authentication Modules

PAM 是獨立的 API,任何程序有驗證需求時,都可以向 PAM 發出驗證請求,PAM 經過壹系列的驗證之後,將驗證結果返回給程序。

passwd 使用的就是 pam_cracklib.so 模塊,如果我們輸入字典中可以找到的字符串, passwd 就會有報錯提示。

passwd 驗證執行流程:

1.執行 /usr/bin/passwd 命令;

2. passwd 調用 PAM 模塊進行驗證;

3. PAM 模塊會到 /etc/pam.d/ 尋找與 passwd 同名的配置文件;

4.根據 /etc/pam.d/passwd 內的配置,引用相關的 PAM 模塊逐步進行驗證;

5.將驗證結果會傳給 passwd ;

6. passwd 程序會根據 PAM 會傳的結果決定下壹步動作(重新設置密碼或者通過驗證)。

pam_cracklib.so 支持的部分選項:

retry=N :定義登錄/修改密碼失敗時,可以重試的次數

minlen=N :新密碼的最小長度

dcredit=N :當 N>0 時表示新密碼中數字出現的最多次數;當N<0時表示新密碼中數字出現最少次數;

ucredit=N : 當 N>0 時表示新密碼中大寫字母出現的最多次數;當N<0時表示新密碼中大寫字母出現最少次數;

lcredit=N : 當 N>0 時表示新密碼中小寫字母出現的最多次數;當N<0時表示新密碼中小寫字母出現最少次數;

ocredit=N :當 N>0 時表示新密碼中特殊字符出現的最多次數;當N<0時表示新密碼中特殊字符出現最少次數;

maxrepeat=N :拒絕包含多於N個相同連續字符的密碼。 默認值為0表示禁用此檢查

maxsequence=N :拒絕包含長於N的單調字符序列的密碼。默認值為0表示禁用此檢查。實例是 '12345' 或 'fedcb' 。除非序列只是密碼的壹小部分,否則大多數此類密碼都不會通過簡單檢查。

enforce_for_root : 如果用戶更改密碼是root,則模塊將在失敗檢查時返回錯誤。默認情況下,此選項處於關閉狀態,只打印有關失敗檢查的消息,但 root 仍可以更改密碼。不要求root用戶輸入舊密碼,因此不會執行比較舊密碼和新密碼的檢查

修改 /etc/pam.d/system-auth 文件:

找到 pam_pwquality.so 後面加上需要驗證的參數:

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1 enforce_for_root

修改 /etc/login.defs 文件:

以上是針對新增用戶的設置,如果是已有用戶不受影響,需要使用以下命令修改已有用戶的密碼到期時間:

編輯 /etc/pam.d/sshd 文件:

參數說明:

even_deny_root :也限制 root 用戶;

deny :設置普通用戶和root用戶連續錯誤登陸的最大次數,超過最大次數,則鎖定該用戶

unlock_time :設定普通用戶鎖定後,多少時間後解鎖,單位是秒;

root_unlock_time :設定root用戶鎖定後,多少時間後解鎖,單位是秒;

從上面的輸出信息可以看到 ,在嘗試 5 次錯誤密碼登錄之後,幾十使用正確密碼也無法登錄了,需要的等待 20 分鐘解鎖。

設置 TMOUT 環境變量,30 分鐘超時: