协同进化框架EvoTrainer:让LLM智能体与训练环境自主优化
2026/8/20 8:43:59
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) |
# 最简方式创建用户(注意: 需要 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# useradd 不会自动设置密码,需要单独设置sudopasswdalice# New password:# Retype new password:# 或创建用户时强制下次登录修改密码sudouseradd-malice2sudopasswd-ealice2# 密码立即过期# 用户首次登录时会提示: You are required to change your password immediately# 将用户添加到 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)# 指定主目录路径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# /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)# 查看 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#!/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"# 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 同时删除主目录和邮件