Ubuntu 提供兩個建立使用者帳號的指令:底層的 useradd 與友善的 Perl 腳本封裝 adduser。本文透過實測對比兩者在家目錄建立、密碼設定、Shell 指定、骨架檔案複製等方面的差異,並說明如何讓 useradd 達到 adduser 同等效果。

| 特性 | useradd | adduser |
|---|---|---|
| 家目錄建立 | 預設不建立 (需 -m) | 自動建立 /home/username |
| 密碼設定 | 需另行 passwd | 互動式提示輸入密碼 |
| Shell 指定 | 預設 /bin/sh (需 -s) | 預設 /bin/bash (可配置) |
| 骨架檔案 (/etc/skel) | 不複製 (需 -k) | 自動複製 |
| GECOS 欄位 (全名、電話等) | 需 -c 手動指定 | 互動式逐項輸入 |
| 群組處理 | 需 -g/-G 手動指定 | 自動建立同名群組並加入 |
| 適用場景 | 腳本自動化、批次建立 | 人工互動式管理 |
sudo useradd test1
ls -ld /home/test1
# ls: cannot access /home/test1: No such file or directory
id test1
# uid=1001(test1) gid=1001(test1) groups=1001(test1)
# 家目錄未建,Shell 為 /bin/sh
sudo useradd -m test2
ls -ld /home/test2
# drwxr-xr-x 2 test2 test2 4096 ... /home/test2
# 家目錄已建,但 Shell 仍為 /bin/sh,無密碼
sudo adduser test3
# 提示:密碼、全名、房間號碼、電話...
# 完成後:
ls -ld /home/test3
# drwxr-xr-x 2 test3 test3 4096 ... /home/test3
grep test3 /etc/passwd
# test3:x:1003:1003:Test User,,,:/home/test3:/bin/bash
# Shell 為 bash,GECOS 已填入
sudo useradd -m -s /bin/bash -c "Full Name" -G sudo username
sudo passwd username # 另行設定密碼
/etc/default/useradd:useradd 預設值 (SHELL, HOME, SKEL, GROUP 等)。/etc/adduser.conf:adduser 行為配置 (DHOME, DSHELL, FIRST_UID 等)。adduser,省時不易出錯。useradd -m -s /bin/bash 並明確指定所有參數。理解兩者差異,能根據場合選擇最適合的建立帳號方式。