Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 用戶與組帳號系統文件全解析:/etc/passwd、shadow、group、gshadow 結構、維護命令與安全加固

編輯:Linux 教學

Linux 用戶認證與授權的基石是四大系統文件:/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow。本文系統拆解每個文件的**字段含義、編碼規則、特殊標記**、配套維護命令(useradd/usermod/userdel、groupadd/groupmod/groupdel、passwd/gpasswd/chfn/chsh)、查詢命令(id/whoami/su/groups)、臨時禁用帳號技巧,並給出生產環境安全加固清單。

一、四大核心文件結構

1. /etc/passwd —— 用戶基本信息(全局可讀)

用戶名:密碼佔位符:UID:GID:GECOS(描述):家目錄:登錄Shell
root:x:0:0:root:/root:/bin/bash
  • 第 2 欄 x 表示密碼在 /etc/shadow,早期系統存加密密碼於此。
  • UID 0-99 保留給系統賬號,UID 衝突會導致權限混亂。
  • GECOS 欄位逗號分隔:全名,辦公室,辦公電話,住宅電話。
  • 密碼老化擴展(舊版):密碼欄位含逗號 Mxy8 → 最大周數/最小周數/最後修改時間(base64 編碼),現已由 shadow 替代。

2. /etc/shadow —— 加密密碼與老化策略(僅 root 可讀)

用戶名:加密密碼:最後修改天數(1970起):最小間隔:最大有效:警告天數:失效後禁用天數:絕對過期天數:保留
root:$6$salt$hash:19000:0:99999:7:::
  • 密碼欄 !/* 表示鎖定/無密碼登錄。
  • 天數字段為整數,chage -l user 可查看人類可讀日期。

3. /etc/group —— 組信息(全局可讀)

組名:密碼佔位符:GID:成員列表(逗號分隔)
wheel:x:10:user1,user2
  • 組密碼極少用,通常為 x 或空。
  • 成員列表為**附加成員**,用戶主組由 /etc/passwd GID 決定。

4. /etc/gshadow —— 組密碼與管理員(僅 root 可讀)

組名:加密密碼:管理員列表:成員列表
wheel:!:root:user1,user2

二、安全編輯與驗證工具

  • vipw / vipw -s:鎖定文件、啟動編輯器、語法檢查後寫入,防止並發衝突。
  • vigr / vigr -s:同理編輯 group/gshadow。
  • pwck:檢查 passwd/shadow 完整性(格式、UID/GID 衝突、目錄存在性、Shell 合法性)。
  • grpck:檢查 group/gshadow 完整性。

三、用戶帳號維護命令

useradd —— 核心參數

useradd -c "Full Name" -d /home/user -g users -G wheel,docker \
        -s /bin/bash -u 2000 -m user
# -m 創建家目錄並複製 /etc/skel
# -n 不創建同名組 (RHEL 默認創建)

usermod —— 修改現有用戶

usermod -l newname oldname   # 修改用戶名 (需用戶未登錄)
usermod -L/-U user           # 鎖定/解鎖密碼 (前綴 !)
usermod -aG docker user      # 追加附加組 (-a 關鍵,否則覆蓋)

userdel —— 刪除用戶

userdel -r user   # 遞歸刪除家目錄與郵件卷

四、組帳號維護命令

groupadd -g 2000 projectA
groupmod -n newname oldname
groupmod -g 3000 projectA
groupdel projectA

五、口令與信息維護

passwd -l/-u user           # 鎖定/解鎖
passwd -x 90 -n 7 -w 14 user # 最大/最小/警告天數
gpasswd group               # 設置組密碼
chfn -f "Real Name" user    # 修改 GECOS
chsh -s /bin/zsh user       # 修改登錄 Shell

六、查詢與切換命令

id -u/-g/-G user   # UID/GID/所有組
whoami             # 當前有效用戶名
su - user          # 登錄式切換 (環境變量重置)
su -c "cmd" user   # 執行單命令
groups user        # 顯示用戶組

七、臨時禁用帳號(不刪除數據)

mkdir -p /usr/local/lib/no-login
cat > /usr/local/lib/no-login/deny <<'EOF'
#!/bin/bash
echo "This account has been disabled."
echo "Contact admin: 139-9509-6098"
exit 1
EOF
chmod 755 /usr/local/lib/no-login/deny
chsh -s /usr/local/lib/no-login/deny username
# 登錄時顯示提示並退出,保留所有文件與權限

八、生產環境安全加固清單

  • 禁用 root 遠程登錄:PermitRootLogin no (sshd_config)
  • 強制密碼複雜度:pam_pwquality.so (minlen=12, dcredit=-1, ucredit=-1, ocredit=-1, lcredit=-1)
  • 密碼老化策略:PASS_MAX_DAYS 90、PASS_MIN_DAYS 7、PASS_WARN_AGE 14 (/etc/login.defs)
  • 鎖定長期未用帳號:usermod -L 或 chage -E $(date -d '+90 days' +%Y-%m-%d) user
  • 審計關鍵文件變更:auditctl -w /etc/passwd -p wa -k passwd_chg
  • 定期 pwck && grpck 修復不一致。

總結

四大文件是 Linux 身份體系的「戶口本」。熟練掌握字段含義、標準化維護命令、安全加固基線,能讓用戶生命週期管理從「手工踩坑」轉變為「合規自動化」,為審計合規與入侵防禦築牢第一道防線。

Copyright © Windows教程網 All Rights Reserved