Linux 帳號與群組管理

群組管理

群組可以將多個帳號分類,設定資源權限時,比起針對單一帳號更有效率。

/etc/group

/etc/group 用來記錄群組與帳號的關係,共有 4 個欄位,以 : 區隔:

欄位位置 欄位名稱 說明
1 group_name 群組名稱
2 password 群組密碼(現已不使用,通常為空或 x
3 GID 群組 ID(Group ID)
4 user_list 成員帳號清單,使用 , 分隔

第 3 欄 GID 可對照 /etc/passwd 第 4 欄,了解使用者的主要群組。

不建議直接編輯 /etc/group,請使用以下指令:

新增群組

groupadd groupName

將帳號加入/移除群組

# 加入
gpasswd -a userAccount groupName
# 移除
gpasswd -d userAccount groupName

刪除群組

groupdel groupName

帳號設定

Linux 的帳號資訊主要儲存在 /etc/passwd/etc/shadow,系統區分帳號大小寫(不同於 Email)。

/etc/login.defs

UID 為 0 代表 root,擁有最高權限。
系統與服務建立帳號時會使用特定範圍的 UID(通常 <1000),手動建立帳號建議 UID 從 1000 開始。這些起始值定義於 /etc/login.defs 中。

/etc/default/useradd

定義 useradd 建立帳號時的預設行為。

/etc/passwd

用來記錄帳號資訊,使用 : 分隔為 7 欄:

欄位 說明
帳號 登入帳號(不可重複)
密碼 通常為 x,代表密碼儲存在 /etc/shadow
UID 使用者 ID(唯一)
GID 主要群組 ID
註解 顯示名稱,可空白
家目錄 預設為 /home/帳號
shell 登入後預設 shell,預設為 /bin/bash

建議不要直接編輯此檔案,應使用指令操作。

/etc/shadow

儲存與密碼相關資訊,使用 : 分隔為 9 欄:

欄位 說明
登入名稱 帳號名稱,與 /etc/passwd 第 1 欄對應
加密密碼 使用 SHA-512 加密密碼
上次密碼變更日期 自 1970-01-01 起的天數
密碼最短使用期限 密碼修改後多少天內不可再次變更
密碼最長使用期限 密碼最多可使用天數
密碼過期警告期限 到期前幾天發出警告
密碼暫停使用期限 密碼過期後,幾天後鎖定帳號
帳號失效日期 帳號失效日,自 1970-01-01 起的天數
保留欄位 保留使用

帳號資訊查詢

使用 id 查詢帳號基本資訊:

id userAccount

輸出會包含 UID、主要群組 GID、與所屬的所有群組(次要群組)。


新增帳號

useradd [選項] userAccount

常用選項:

參數 說明
-c 備註 備註資訊
-d 家目錄 指定家目錄路徑
-e YYYY-MM-DD 帳號有效期限
-f 天數 密碼過期後多少天停用帳號
-g 群組 主要群組
-G 群組1,群組2 次要群組
-m 建立家目錄並複製 /etc/skel/
-p 密碼 指定密碼(明碼加密後)
-s shell 指定登入 shell
-u UID 指定 UID
-o 允許建立重複 UID(不建議)

修改帳號

usermod [選項] userAccount

用途如修改 UID、GID、shell、群組等。


刪除帳號

userdel [-r] userAccount

加上 -r 可一併刪除家目錄。


設定密碼

passwd userAccount

注意:

  • 一般使用者只能改自己的密碼
  • root 可改自己與他人密碼
  • 一般使用者須符合密碼原則
  • root 不受密碼原則限制

密碼有效期限設定

# 查詢密碼政策
chage -l userAccount

# 設定密碼有效期為 90 天
chage -M 90 userAccount

# 密碼設定後,2 天內不得再改
chage -m 2 userAccount

檔案與目錄權限管理

常用指令

指令 用途
ls -l 查看權限
chown 變更檔案擁有者
chgrp 變更檔案群組
chmod 修改權限(數字表示法為八進位)

檔案進階屬性(僅適用 ext 系列檔案系統)

可透過 chattr 設定、lsattr 查詢。

chattr 指令

chattr [模式] [檔案]

支援的模式:

模式 說明
+ / - / = 增加 / 移除 / 指定
a 只能附加寫入
A 不更新存取時間
c 自動壓縮存取資料
d dump 時排除備份
i 鎖定檔案不可更動
s 刪除後完整清除
S 立即寫入硬碟
u 自動備份檔案

其他參數:

參數 說明
-R 遞迴處理
-V 顯示過程
-v 設定檔案版本

lsattr 指令

lsattr [選項] [檔案]

常用參數:

參數 說明
-a 顯示隱藏檔
-d 僅顯示目錄本身
-R 遞迴列出屬性
-v 顯示檔案版本
-V 顯示版本資訊