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

Ubuntu useradd vs adduser 深度對比:家目錄創建、交互體驗、腳本適用性

編輯:關於 Linux

Ubuntu 提供兩個創建用戶命令:底層 useradd 與友好封裝 adduser。本文深度對比參數、行為差異、適用場景,助你選擇正確工具。

核心差異速覽

特性useraddadduser
家目錄創建需 -m 參數默認自動創建
交互體驗無交互、需參數完整交互式提示密碼、全名、電話等
默認 Shell/bin/sh/bin/bash
骨架目錄需 -k 指定自動複製 /etc/skel
腳本適用性✅ 適合自動化❌ 交互式阻塞腳本
群組處理需 -G 手動指定自動創建同名群組、加入
密碼設置需 passwd 另行設置交互式同步設置

命令對比演示

useradd (非交互、參數驅動)

# 最小化創建 (無家目錄、無密碼、sh shell)
sudo useradd testuser1
# 結果:/etc/passwd 有用戶,/home 無目錄,/etc/shadow 密碼欄為 !

# 完整創建 (推薦腳本用法)
sudo useradd -m -s /bin/bash -G sudo -c "Test User" testuser2
sudo echo "testuser2:Password123" | sudo chpasswd
# -m 創建家目錄
# -s 指定 shell
# -G 加入附屬群組
# -c 註釋 (全名)

adduser (交互式向導)

$ sudo adduser testuser3
Adding user `testuser3' ...
Adding new group `testuser3' (1002) ...
Adding new user `testuser3' (1002) with group `testuser3' ...
Creating home directory `/home/testuser3' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for testuser3
Enter the new value, or press ENTER for the default
	Full Name []: Test User
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] Y

等價轉換

# useradd 等價於 adduser 的參數組合
sudo useradd -m -s /bin/bash -G sudo -c "Full Name" username
sudo passwd username  # 另行設置密碼

# adduser 內部實際調用 useradd + chfn + passwd

適用場景選擇

場景推薦命令理由
手動創建單用戶adduser交互友好、自動處理細節、不易出錯
腳本批量創建用戶useradd非交互、參數化、可編程控制
臨時服務帳號useradd -r -s /usr/sbin/nologin系統用戶、無登錄、無家目錄
Dockerfile 創建用戶useradd構建過程無交互終端
LDAP/AD 同步腳本useradd程序化控制屬性

配置文件控制默認值

# /etc/default/useradd
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

# /etc/adduser.conf
DSHELL=/bin/bash
DHOME=/home
SKEL=/etc/skel
FIRST_SYSTEM_UID=100
LAST_SYSTEM_UID=999
FIRST_SYSTEM_GID=100
LAST_SYSTEM_GID=999

進階:adduser 禁用交互 (腳本兼容)

# 使用 --gecos 預填信息,--disabled-password 禁用密碼提示
sudo adduser --gecos "Full Name,,," --disabled-password username
# 仍會創建家目錄、複製 skel、創建同名群組
# 後續需手動設置密碼:sudo passwd username

避坑指南

  • ❌ 腳本中直接用 adduser 會卡死等待輸入
  • ❌ useradd 忘記 -m 導致無家目錄、登錄報錯
  • ❌ 未設置密碼導致無法登錄 (SSH 密鑰除外)
  • ✅ 生產腳本統一用 useradd + 參數完整指定
  • ✅ 手動運維首選 adduser 享受交互便利

理解雙命令設計哲學:useradd 為機器服務,adduser 為人服務。按場景選擇,事半功倍。

Copyright © Windows教程網 All Rights Reserved