Shadow Suite 提供 useradd、usermod、userdel 三大用戶管理指令,並強化 passwd 實現密碼老化與帳號鎖定。所有操作自動同步更新 /etc/passwd 與 /etc/shadow,避免手動編輯導致的競態條件。
首先檢查預設值:
useradd -D # 輸出範例 GROUP=100 HOME=/home INACTIVE=0 EXPIRE=60 SHELL=/bin/bash SKEL=/etc/skel
修改預設值:
useradd -D -g 100 -e 60 -f 0 -s /bin/bash
新增用戶 fred:
useradd -m -c "Fred Flintstone" fred # /etc/passwd: fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash # /etc/shadow: fred:!:0:0:60:0:0:0:0
解鎖帳號(設定密碼):
passwd fred # 輸入兩次新密碼後,/etc/shadow 變為: # fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0
#!/bin/bash
# /sbin/newuser
GROUP=100; HOME=/home; SKEL=/etc/skel
INACTIVE=0; EXPIRE=60; SHELL=/bin/bash
PASSMIN=0; PASSWARN=14
[ $(whoami) != "root" ] && { echo "需 root 權限"; exit 1; }
read -p "Username: " USERNAME
read -p "Full name: " FULLNAME
/usr/sbin/useradd -c "$FULLNAME" -d $HOME/$USERNAME -e $EXPIRE \
-f $INACTIVE -g $GROUP -m -k $SKEL -s $SHELL $USERNAME
/bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
/bin/passwd $USERNAME
grep "^$USERNAME:" /etc/passwd /etc/shadow
passwd -S $USERNAME
usermod -s /bin/tcsh fred # 改 shell usermod -e 09/15/97 fred # 設定帳號到期日
userdel -r username # 連同家目錄一併刪除 # 僅鎖定帳號請用 passwd -l username
| 選項 | 功能 |
|---|---|
-l / -u | 鎖定 / 解鎖帳號 |
-x 天數 | 密碼最大有效天數 |
-n 天數 | 密碼最小變更間隔天數 |
-w 天數 | 密碼到期前警告天數 |
-i 天數 | 密碼過期後寬限天數(過期仍可登入,但需改密碼) |
-S | 顯示密碼狀態 |
# 範例:設定 fred 密碼 60 天到期,到期前 14 天警告,過期後 14 天寬限 passwd -x 60 -n 0 -w 14 -i 14 fred # 輸出:fred P 03/04/96 0 60 14 14
控制登入行為與密碼老化預設值,包含:
務必檢查並調整此檔案以符合站點安全政策。