Linux命令-useradd(创建新用户)
2026/8/20 3:02:17 网站建设 项目流程

Linux命令-useradd(创建新用户)

    • 语法
    • 常用选项
    • 基础用法
      • 1. 创建普通用户
      • 2. 设置密码
      • 3. 创建带附加组的用户
      • 4. 自定义主目录和 UID
      • 5. 使用骨架目录定制新用户环境
      • 6. 查看和修改默认值
      • 7. 批量创建用户
      • 8. 安全最佳实践

useradd用于在 Linux 系统中创建新用户账号。它是最基本的用户管理命令,会更新 /etc/passwd、/etc/shadow、/etc/group 等系统文件。

⚠️需要 root 权限!普通用户无法创建新用户。在生产环境中,请遵循最小权限原则——只为用户分配必要的组和权限。

语法

useradd [选项] 用户名

常用选项

选项含义
-m创建用户主目录(/home/用户名)
-d指定主目录路径
-s指定登录 Shell
-g指定主组
-G指定附加组(逗号分隔)
-u指定 UID
-c添加注释/全名
-e账号过期日期 (YYYY-MM-DD)
-f密码过期后的宽限天数
-r创建系统账号(UID < 1000)
-M不创建主目录
-k指定骨架目录(默认 /etc/skel)

基础用法

1. 创建普通用户

# 最简方式创建用户(注意: 需要 root)sudouseraddalice# 验证用户已创建grepalice /etc/passwd# alice:x:1001:1001::/home/alice:/bin/sh# 查看用户信息idalice# uid=1001(alice) gid=1001(alice) groups=1001(alice)# 推荐方式: 创建用户 + 主目录 + 指定 Shellsudouseradd-m-s/bin/bash alice# 创建用户并添加注释sudouseradd-m-c"Alice Wang, Developer"alice# 查看完整信息grepalice /etc/passwd# alice:x:1001:1001:Alice Wang, Developer:/home/alice:/bin/bash

2. 设置密码

# useradd 不会自动设置密码,需要单独设置sudopasswdalice# New password:# Retype new password:# 或创建用户时强制下次登录修改密码sudouseradd-malice2sudopasswd-ealice2# 密码立即过期# 用户首次登录时会提示: You are required to change your password immediately

3. 创建带附加组的用户

# 将用户添加到 sudo 组(Debian/Ubuntu)sudouseradd-m-s/bin/bash-Gsudoalice# 将用户添加到 wheel 组(CentOS/RHEL)sudouseradd-m-s/bin/bash-Gwheel bob# 添加到多个附加组sudouseradd-m-Gdocker,www-data,developers charlie# 验证groupscharlie# charlie : charlie docker www-data developers# 指定主组和附加组sudouseradd-m-gdevelopers-Gdocker,adm daveiddave# uid=1005(dave) gid=1000(developers) groups=1000(developers),999(docker),4(adm)

4. 自定义主目录和 UID

# 指定主目录路径sudouseradd-m-d/opt/data/alice-s/bin/bash alice# 指定 UID(通常用于保持多台服务器 UID 一致)sudouseradd-m-u1500-s/bin/bash alice# 设置账号过期日期sudouseradd-m-e2026-12-31 tempuser# 检查过期信息sudochage-ltempuser

5. 使用骨架目录定制新用户环境

# /etc/skel 中的文件会自动复制到新用户的主目录ls-la/etc/skel/# .bashrc .profile .bash_logout# 自定义骨架: 为新用户添加默认配置sudomkdir-p/etc/skel/.sshsudomkdir-p/etc/skel/projectsecho'alias ll="ls -alF"'|sudotee-a/etc/skel/.bashrc# 创建新用户时会自动获得这些默认文件sudouseradd-mnewuserls-la/home/newuser/# 可以看到 .bashrc, .profile, .ssh/, projects/ 等# 创建系统账号(不创建主目录,UID < 1000)sudouseradd-r-s/usr/sbin/nologin service_useridservice_user# uid=999(service_user) gid=999(service_user)

6. 查看和修改默认值

# 查看 useradd 的默认配置useradd-D# GROUP=100# HOME=/home# INACTIVE=-1# EXPIRE=# SHELL=/bin/sh# SKEL=/etc/skel# CREATE_MAIL_SPOOL=no# 修改默认 Shellsudouseradd-D-s/bin/bash# 修改默认主目录前缀sudouseradd-D-b/opt/users# 默认配置保存在 /etc/default/useraddcat/etc/default/useradd

7. 批量创建用户

#!/bin/bash# 从 CSV 文件批量创建用户# 格式: 用户名,全名,密码,附加组CSV_FILE="users.csv"cat>"$CSV_FILE"<<'EOF' alice,Alice Wang,pass123,sudo,docker bob,Bob Li,pass456,developers charlie,Charlie Zhang,pass789,www-data,developers EOFwhileIFS=','read-rusername fullname password groups_str;do# 跳过空行和注释[[-z"$username"||"$username"=~^# ]] && continueecho"==创建用户:$username=="# 检查用户是否已存在ifid"$username"&>/dev/null;thenecho"[跳过]$username已存在"continuefi# 构建 useradd 参数args="-m -c\"$fullname\""# 处理附加组if[-n"$groups_str"];thenIFS=','read-ragroups<<<"$groups_str"args="$args-G$(IFS=,;echo"${groups[*]}")"fi# 创建用户sudouseradd$args"$username"# 设置密码echo"$username:$password"|sudochpasswd# 强制首次登录改密码sudopasswd-e"$username"2>/dev/nullecho"[完成]$username"done<"$CSV_FILE"# 验证echo""echo"==已创建用户列表=="tail-5/etc/passwdrm"$CSV_FILE"

8. 安全最佳实践

# 1. 为服务账号设置 nologin(防止登录)sudouseradd-r-s/usr/sbin/nologin-Mnginx# 2. 检查是否有空密码的用户sudoawk-F:'($2 == "" || $2 == "!") {print $1 " has no password"}'/etc/shadow# 3. 检查 UID 0 的用户(不应存在除 root 外的)sudoawk-F:'($3 == 0) {print $1}'/etc/passwd# 4. 密码策略配置: /etc/login.defsgrep-E"^PASS_|^UID_|^CREATE_HOME"/etc/login.defs# 5. 回滚: 删除误创建的用户sudouserdel-ralice# -r 同时删除主目录和邮件

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询