Linux 系統管理員的日常工作中,使用者帳戶管理至關重要。除了帳戶的增刪改查,還需處理密碼政策、群組許可權等,以維護系統安全和穩定。本文將探討如何有效管理 Linux 使用者帳戶,涵蓋建立、修改、刪除帳戶,以及密碼管理、群組設定等實務操作,並提供程式碼範例與圖表說明,讓讀者能快速掌握使用者帳戶管理的精髓。同時,文章也強調了資料安全的重要性,例如在刪除帳戶時保留家目錄,以及服務帳戶的特殊性等,以協助系統管理員更全面地理解使用者帳戶管理的各個導向。
管理使用者帳戶
身為系統管理員,管理使用者帳戶是日常工作的重要部分。除了處理帳戶相關的問題外,還需要解決其他與使用者相關的問題,如連線問題、應用程式錯誤、資料損壞、培訓問題、安全問題等。
使用者與群組 ID 編號慣例
在 Linux 系統中,建立和維護使用者帳戶有一些約定俗成的規則,如表 4-1 所示。這些規則不是硬性規定,但在大多數企業環境中都被遵循。
表 4-1:使用者與群組帳戶的編號慣例
| UID | GID | 描述 | |
|
|
| | 0 | 0 | root | | 1–999 | 1–999 | 系統/服務帳戶 | | 1000+ | 1000+ | 使用者帳戶 |
使用者帳戶的 UID 和 GID 通常從 1000 開始,每新增一個帳戶就遞增 1。root 使用者的 UID 和 GID 永遠是 0,其他使用者不能使用這些 ID。系統和服務帳戶不是人類使用者帳戶,通常沒有與之相關的互動式 shell。這些帳戶的 UID 和 GID 範圍從 1 到 999。這種區分使得系統管理更加容易。
建立使用者帳戶
在 Linux 中,有多種方法可以建立使用者帳戶。本章節將介紹兩種主要的方法:useradd 和 adduser。
使用 useradd 新增使用者
useradd 是 Linux 中新增使用者的標準命令列工具。使用 useradd 時,只需提供使用者名稱作為引數:
# useradd jsmith
這將建立 /home/jsmith 家目錄,並填入預設的隱藏環境檔案,同時在 /etc/passwd 中新增一筆記錄。
若要提供更多資訊,如使用者的全名,可以使用 -c 選項:
# useradd -c "Jane Smith" jsmith
-c 選項將提供的資訊寫入 /etc/passwd 檔案的第五個欄位。如果需要提供更多資訊,如電話號碼、電子郵件地址等,可以用逗號分隔:
# useradd -c "Jane Smith,Room 26,212-555-1000,[email protected]" jsmith
新使用者的 /etc/passwd 紀錄如下:
jsmith:x:1007:1007:Jane Smith,Room 26,212-555-1000,[email protected]:/home/jsmith:/bin/bash
每個欄位的含義如下(從左到右):
- 使用者名稱
/etc/shadow密碼欄位- 使用者 ID
- 主要群組 ID
- 評論欄位
- 家目錄
- 預設 shell
密碼並未儲存在 /etc/passwd 中。/etc/shadow 欄位指向 /etc/shadow 檔案,該檔案包含每個使用者的加密密碼,且僅對 root 使用者可讀。
雖然 Jane Smith 的使用者帳戶已經建立,家目錄也存在,但她仍無法登入系統,因為尚未設定密碼。使用 passwd 命令為帳戶設定密碼:
# passwd jsmith
Changing password for user jsmith.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
現在,您需要將密碼告知 Jane,她才能成功登入系統。
使用 adduser 新增使用者
在某些 Linux 發行版中,adduser 是 useradd 的符號連結:
lrwxrwxrwx. 1 root root 17 Oct 26 2020 /usr/sbin/adduser -> /usr/sbin/useradd
在其他發行版中,adduser 是一個互動式的 Perl 指令碼,會引導您逐步完成新增使用者的過程。
修改使用者帳戶
使用者帳戶很少是靜態的,因此 usermod 命令用於在不編輯 /etc/passwd、家目錄或設定檔的情況下進行必要的變更。usermod 命令是變更所有與使用者帳戶相關設定的綜合工具。
以下是 usermod 命令可以進行的一些修改:
- 將使用者新增至補充群組
- 修改使用者的評論欄位
- 修改使用者的家目錄
- 設定帳戶過期日期
- 移除過期日期
- 修改使用者的登入名稱(使用者名稱)
- 鎖定/解鎖使用者的帳戶
- 移動使用者的家目錄內容
- 修改使用者的登入 shell
- 修改使用者的 ID
修改範例程式碼如下所示:
# usermod -aG supplementary_group jsmith // 將使用者新增至補充群組
# usermod -c "New Comment" jsmith // 修改使用者的評論欄位
# usermod -d /new/home/dir jsmith // 修改使用者的家目錄(需搭配 -m 使用以移動內容)
# usermod -e YYYY-MM-DD jsmith // 設定帳戶過期日期
# usermod -L jsmith // 鎖定使用者的帳戶
# usermod -U jsmith // 解鎖使用者的帳戶
# usermod -s /bin/new_shell jsmith // 修改使用者的登入 shell
程式碼內容解密:
usermod -aG supplementary_group jsmith:此命令將使用者jsmith新增至名為supplementary_group的補充群組中。-aG選項表示新增群組而不移除現有群組。usermod -c "New Comment" jsmith:此命令修改使用者jsmith的評論欄位,將其更新為"New Comment"。usermod -d /new/home/dir jsmith:此命令試圖修改使用者jsmith的家目錄為/new/home/dir。通常需要搭配-m使用,以將現有家目錄的內容移動到新的位置。usermod -e YYYY-MM-DD jsmith:此命令設定使用者jsmith的帳戶過期日期為指定的YYYY-MM-DD日期。usermod -L jsmith:此命令鎖定使用者jsmith的帳戶,使其無法登入。usermod -U jsmith:此命令解鎖使用者jsmith的帳戶,允許其再次登入。usermod -s /bin/new_shell jsmith:此命令修改使用者jsmith的預設登入 shell 為/bin/new_shell。
這些範例展示瞭如何利用 usermod 命令來管理與修改使用者帳戶的不同方面,有助於滿足多變的使用者管理需求。
圖表說明:使用者管理流程圖
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title Linux使用者帳戶管理
package "安全架構" {
package "網路安全" {
component [防火牆] as firewall
component [WAF] as waf
component [DDoS 防護] as ddos
}
package "身份認證" {
component [OAuth 2.0] as oauth
component [JWT Token] as jwt
component [MFA] as mfa
}
package "資料安全" {
component [加密傳輸 TLS] as tls
component [資料加密] as encrypt
component [金鑰管理] as kms
}
package "監控審計" {
component [日誌收集] as log
component [威脅偵測] as threat
component [合規審計] as audit
}
}
firewall --> waf : 過濾流量
waf --> oauth : 驗證身份
oauth --> jwt : 簽發憑證
jwt --> tls : 加密傳輸
tls --> encrypt : 資料保護
log --> threat : 異常分析
threat --> audit : 報告生成
@enduml
此圖示展示了管理使用者帳戶的基本流程,包括建立新使用者、修改現有使用者的設定以及相關的檢查與確認步驟。
圖表內容解密:
- 流程開始:圖表從「開始」節點啟動,表示進入使用者管理流程。
- 判斷是否需要建立新使用者:流程首先判斷是否需要建立新使用者。若需要,則進入建立新使用者的步驟;否則,進一步判斷是否需要修改現有使用者。
- 建立新使用者:若決定建立新使用者,則使用
useradd或adduser命令完成此操作。接著,需要為新使用者設定初始密碼,以確保其能夠成功登入系統。 - 修改現有使用者:若決定修改現有使用者的設定,則利用
usermod命令來完成所需的變更。完成變更後,需要檢查並確認這些變更是否正確實施。 - 檢查與確認:無論是建立新使用者還是修改現有使用者的設定,都需要在完成相關操作後進行檢查與確認,以確保一切符合預期。
- 流程結束:完成所有必要的操作和檢查後,流程進入「結束」階段,表示相關的使用者管理任務已經完成。
綜上所述,這個流程圖清晰地展示了管理使用者帳戶的主要步驟和決策點,有助於系統管理員有效地執行相關任務。
管理使用者帳戶:新增、修改與刪除
在 Linux 系統管理中,使用者帳戶的管理是一項基本且重要的任務。系統管理員需要了解如何新增、修改和刪除使用者帳戶,以確保系統的安全性和穩定性。
新增附屬群組
當建立新的使用者帳戶時,系統會為該使用者分配一個使用者 ID(UID)和一個主要群組 ID(GID)。例如,假設為 Jane Smith 建立了一個帳戶,其 UID 為 1007,GID 也為 1007:
jsmith:x:1007:1007:
Jane 的主要 GID 是 1007,但她可能還需要存取其他群組的分享目錄。假設她在工程部門工作,該部門的分享目錄 GID 為 8020。可以使用 usermod 命令將 Jane 新增到工程部門的群組:
# usermod -a -G 8020 jsmith
這將 Jane 的使用者帳戶新增到 /etc/group 檔案中的工程群組:
engineering:x:8020:bjones,kdoe,vkundra,adundee,jsmith
現在 Jane 可以存取工程部門的分享目錄。需要注意的是,使用 -a(append)和 -G(supplementary group)選項一起使用,可以將使用者新增到新的群組而不會移除現有的群組成員資格。
程式碼解析:
# usermod -a -G finance jsmith
內容解密:
usermod:用於修改使用者帳戶的命令。-a:表示將使用者追加到指定的群組,而不是覆寫現有的群組成員資格。-G:指定要追加使用者的群組。finance:群組名稱或 GID。jsmith:要修改的使用者帳戶名稱。
修改使用者註解欄位
修改使用者的註解(GECOS)欄位是一項常見的任務。可以使用 usermod 命令和 -c 選項來更改 GECOS 欄位。例如,將 Jane Smith 的 GECOS 欄位修改為 “Jane R Smith”:
# usermod -c "Jane R Smith" jsmith
或者,也可以使用 chfn 命令來更改使用者的 finger 資訊:
# chfn -f "Janie Smith" jsmith
chfn 命令用於更改使用者的 finger 資訊,包括全名、辦公室電話等。
程式碼解析:
# chfn -f "Janie Smith" jsmith
內容解密:
chfn:用於更改使用者 finger 資訊的命令。-f:指定要更改的全名欄位。"Janie Smith":新的全名。jsmith:要修改的使用者帳戶名稱。
設定帳戶過期日期
如果使用者離職或需要暫時停用帳戶,可以使用 usermod 命令設定帳戶的過期日期。例如,將 Rob Smith 的帳戶設定為在 2021 年 7 月 23 日過期:
# usermod -e 2021-07-23 rsmith
這將使 Rob Smith 的帳戶在指定的日期自動過期。
程式碼解析:
# usermod -e 2021-07-23 rsmith
內容解密:
usermod:用於修改使用者帳戶的命令。-e:指定帳戶的過期日期。2021-07-23:過期日期,格式為 YYYY-MM-DD。rsmith:要修改的使用者帳戶名稱。
變更使用者的登入 Shell
預設情況下,Linux 系統使用 bash shell,但使用者可以請求更改為其他 shell。可以使用 usermod、chsh 命令或直接編輯 /etc/passwd 檔案來更改使用者的預設 shell。例如,使用 usermod 命令將 Jane Smith 的預設 shell 改為 /bin/sh:
# usermod -s /bin/sh jsmith
或者,使用者也可以使用 chsh 命令自行更改 shell:
$ chsh -s /bin/zsh
程式碼解析:
# usermod -s /bin/sh jsmith
內容解密:
usermod:用於修改使用者帳戶的命令。-s:指定新的 shell。/bin/sh:新的 shell 路徑。jsmith:要修改的使用者帳戶名稱。
刪除使用者帳戶
刪除使用者帳戶可以使用 userdel 命令。例如,刪除一個使用者帳戶:
# userdel username
需要注意的是,刪除使用者帳戶前應確保已備份相關資料。
程式碼解析:
# userdel username
內容解密:
userdel:用於刪除使用者帳戶的命令。username:要刪除的使用者帳戶名稱。
綜上所述,Linux 系統管理員需要掌握如何新增、修改和刪除使用者帳戶,以確保系統的安全性和穩定性。透過使用相關命令和管理工具,可以有效地管理使用者帳戶。
管理使用者帳戶與群組許可權
在 Linux 系統管理中,正確地管理使用者帳戶和群組許可權是確保系統安全性的重要環節。本文將介紹如何有效地管理使用者帳戶,包括刪除使用者、強制密碼變更,以及處理服務帳戶等議題。此外,我們還將探討如何透過管理群組來簡化許可權管理的過程。
刪除使用者帳戶
當需要從系統中移除一個使用者帳戶時,可以使用 userdel 命令,並提供需要刪除的帳戶名稱:
# userdel jsmith
這個命令會從 /etc/passwd 和 /etc/shadow 中移除使用者的條目,但預設不會刪除使用者的家目錄(/home/jsmith)。這樣做的原因是,系統管理員通常希望在使用者離職或更換職位後,仍然保留其家目錄,以確保只有 root 使用者能夠存取該使用者留下的可能對公司重要的檔案。
內容解密:
/etc/passwd:儲存使用者的基本資訊。/etc/shadow:儲存使用者的密碼資訊。- 保留家目錄的原因是為了確保重要檔案的安全存取。
如果需要連同使用者的家目錄一併刪除,可以使用 -r 選項:
# userdel -r jsmith
內容解密:
-r選項會刪除使用者的家目錄及其內的所有檔案。- 使用此命令時需格外小心,因為該操作是不可逆的。
強制密碼變更
為了提高安全性,系統管理員需要能夠強制使用者定期變更密碼。使用 chage 命令可以稽核和設定使用者的密碼變更政策。以下命令列出了指定使用者帳戶的當前設定:
# chage -l rsmith
輸出結果顯示了密碼變更的相關設定,例如密碼過期的時間等。
內容解密:
chage -l用於列出指定使用者帳戶的密碼變更政策。- 設定密碼變更政策,例如強制每 90 天變更一次密碼,並設定最小變更間隔為 1 天,可以使用以下命令:
# chage -m 1 -M 90 rsmith
處理服務帳戶
服務帳戶(如 nobody)通常用於特定的系統服務,它們不具有互動式 shell,也沒有密碼。在 /etc/passwd 檔案中,這些帳戶的 shell 通常被設定為 /sbin/nologin,表示它們不能登入系統。
內容解密:
- 服務帳戶沒有互動式 shell,因此無法直接登入。
- 即使 root 使用者也無法透過
su或sudo切換到服務帳戶。
管理群組而非單個使用者
透過管理群組,可以更方便地控制多個使用者的許可權。當需要變更許可權時,只需修改群組的許可權設定,即可影響到所有屬於該群組的使用者。
內容解密:
- 群組管理允許系統管理員根據工作職能或部門來分配許可權。
- 將使用者新增到或從群組中移除,可以快速變更其對分享檔案和資料夾的存取許可權。