Linux快速创建用户教程
- Linux
- 2025-06-19
- 4452
useradd命令创建用户(如
 useradd username),随后用
 passwd username为其设置密码,最后可通过
 id username验证用户是否创建成功。
在 Linux 系统中创建新用户是一项基础且关键的管理任务,无论是用于多用户环境、服务账户隔离还是权限管理,本文将详细介绍两种最常用、最推荐的方法:useradd 命令和 adduser 脚本(在 Debian/Ubuntu 及其衍生版中),并涵盖重要的后续配置和安全注意事项。
核心前提:你需要 root 权限
创建用户需要修改系统级的文件和目录(如 /etc/passwd, /etc/shadow, /etc/group, /home 等)。你必须拥有 root 权限,通常通过以下两种方式之一实现:
- 直接以 root用户登录: 不推荐日常使用,安全性较低。
- 使用 sudo命令: 强烈推荐,这允许被授权(通常在sudoers文件中配置)的普通用户临时以root权限执行命令,本文后续命令将默认使用sudo。
使用 useradd 命令(通用、灵活)
useradd 是 Linux 发行版中最基础、最通用的用户创建工具,它提供了精细的控制选项。
基本语法:
sudo useradd [选项] 用户名
常用选项详解:
- -m或- --create-home:至关重要! 为新用户创建其主目录(通常是- /home/用户名),如果省略此选项,用户将没有主目录,登录后可能遇到问题。
- -d /path/to/home或- --home /path/to/home:指定自定义的主目录路径(而不是默认的- /home/用户名),通常与- -m一起使用。
- -s /path/to/shell或- --shell /path/to/shell:指定用户的登录 Shell,常见的 Shell 有:- /bin/bash:功能强大的 Bourne-Again Shell (Bash),大多数发行版的默认 Shell。
- /bin/sh:Bourne Shell 或其兼容链接(通常是 Dash 或 Bash)。
- /usr/sbin/nologin或- /sbin/nologin:用于服务账户,禁止该用户通过 Shell 登录系统,但进程可以以其身份运行。创建服务用户时常用。
- /bin/false:类似- nologin,立即退出,效果相同。
 
- -g 主组名或- --gid 主组名/GID:指定用户的初始登录组(主组),组名或 GID(组 ID)必须已存在,如果省略,系统通常创建一个与用户名同名的新组作为其主组(在 RHEL/CentOS 等上),或者在 Debian/Ubuntu 上默认使用一个名为- users的组(具体行为取决于- /etc/login.defs配置)。
- -G 附加组1,附加组2,...或- --groups 附加组1,附加组2,...:指定用户所属的附加组(辅助组),多个组名用逗号分隔,不要有空格,这赋予用户额外的权限(由这些组的权限定义)。- sudo -G sudo,developers newuser将- newuser加入- sudo和- developers组。
- -c "注释"或- --comment "注释":为用户添加一段描述性注释,通常是全名或描述(会出现在- /etc/passwd的 GECOS 字段)。- -c "John Doe, DevOps Engineer"。
- -u UID或- --uid UID:手动指定用户的 UID(用户 ID),通常系统会自动分配一个未使用的最小 UID(>= 1000 或 500 用于普通用户),仅在特殊需求(如 UID 映射)时使用。
- -p 加密密码或- --password 加密密码:极其不推荐直接使用! 此选项要求提供 已经加密 的密码字符串(如- $6$salt$hashedpassword),直接在命令行传递明文密码或加密密码存在安全风险(命令历史记录)。强烈建议使用- passwd命令单独设置密码(见下文)。
- -k /path/to/skel或- --skel /path/to/skel:指定一个包含默认配置文件(如- .bashrc,- .profile)的骨架目录(Skeleton Directory),复制到新用户的主目录,默认通常是- /etc/skel,修改- /etc/skel可以定制所有新用户的默认环境。
- -e YYYY-MM-DD或- --expiredate YYYY-MM-DD:设置用户账户的过期日期,过期后用户将无法登录,格式:- YYYY-MM-DD。
- -f INACTIVE或- --inactive INACTIVE:设置密码过期后,账户被永久禁用前的天数(宽限期),0 表示密码一过期就立即禁用,-1 表示禁用此功能(默认值)。
典型示例:
-  创建用户 johndoe,创建主目录,使用 Bash Shell: sudo useradd -m -s /bin/bash johndoe - 系统会自动创建一个名为 johndoe的组作为其主组。
- 主目录 /home/johndoe会被创建,并从/etc/skel复制基本配置文件。
 
- 系统会自动创建一个名为 
-  创建用户 webserver,创建主目录/srv/web,禁止登录 Shell(用于服务):sudo useradd -m -d /srv/web -s /usr/sbin/nologin webserver 
-  创建用户 sarah,创建主目录,指定主组为developers,附加组为designers和sudo,添加全名注释:sudo useradd -m -s /bin/bash -g developers -G designers,sudo -c "Sarah Connor" sarah - 确保 developers,designers,sudo这些组已经存在(可用groupadd创建)。
 
- 确保 
使用 adduser 脚本(Debian/Ubuntu 等 – 交互式、用户友好)
在 Debian、Ubuntu 及其衍生发行版中,adduser 是一个更高级、交互式的 Perl 脚本,它封装了 useradd 和其他命令(如 passwd, chfn),并提供了更友好的提示式界面,它自动执行了 useradd -m 的行为(创建主目录),并引导你设置密码和用户信息。
基本语法:
sudo adduser [选项] 用户名
常用选项:

- --system:创建一个系统用户(UID < 1000,无主目录,Shell 为- /usr/sbin/nologin或- /bin/false),适用于服务账户。
- --disabled-login:创建用户但不设置密码(密码字段在- /etc/shadow为 或 ),禁止密码登录,稍后可通过- passwd启用。
- --gecos "注释":同- useradd的- -c,非交互式设置注释信息。
- --ingroup 组名:指定主组(同- useradd的- -g)。
- --home /path/to/home:指定主目录路径(同- useradd的- -d)。
- --shell /path/to/shell:指定 Shell(同- useradd的- -s)。
- --uid UID:指定 UID(同- useradd的- -u)。
- --quiet:减少输出信息。
典型交互过程:
sudo adduser johndoe
执行后,脚本会提示你:
- 设置并确认新用户的密码(输入时不可见)。
- 输入用户的全名(GECOS 字段)和其他信息(房间号、工作电话、家庭电话),这些字段通常可以按 Enter 跳过。
- 最后确认信息是否正确(输入 Y)。
重要后续步骤:设置密码
无论使用 useradd 还是 adduser(除非使用了 --disabled-login 或 -p),为新用户设置一个安全的密码是必须的:
sudo passwd 用户名
系统会提示你输入并确认新密码,输入时密码不可见。
- 安全最佳实践: 
  - 使用强密码(长度、复杂度)。
- 定期要求用户更改密码(通过 /etc/login.defs的PASS_MAX_DAYS等配置)。
- 对于服务账户(使用 nologin/falseShell),不需要也不应该设置可登录的密码,账户状态应保持为锁定( 或 在/etc/shadow的密码字段),服务应通过其他机制(如密钥、服务管理器配置)运行。
 
验证用户创建

检查用户信息:
id 用户名 # 显示 UID, GID, 所属组 finger 用户名 # 显示用户信息(可能需要安装 `finger` 包) grep '^用户名' /etc/passwd # 查看 /etc/passwd 中的条目 ls -ld /home/用户名 # 检查主目录是否存在及权限 (如果创建了)
关键配置文件和目录
- /etc/passwd:存储用户账户信息(用户名、UID、GID、注释、主目录、Shell)。
- /etc/shadow:存储加密后的用户密码及密码策略(仅- root可读)。
- /etc/group:存储组信息。
- /etc/login.defs:定义用户创建的默认设置(如 UID/GID 范围、主目录权限模版- UMASK、密码策略默认值等),修改此文件会影响后续所有- useradd命令的行为。
- /etc/skel/:骨架目录,当使用- -m选项时,此目录下的文件和子目录会被复制到新用户的主目录中,管理员可以在此放置标准的配置文件(如- .bashrc,- .profile,- .vimrc)。
安全与最佳实践 (E-A-T 重点)
- 最小权限原则: 只赋予用户完成其工作所必需的最小权限,避免轻易将用户加入 sudo组,如果需要管理员权限,考虑更细粒度的sudo规则配置(使用visudo编辑/etc/sudoers)。
- 强密码策略: 强制执行密码长度、复杂度和有效期(配置 /etc/login.defs和/etc/pam.d/common-password)。
- 服务账户: 为运行应用程序或服务的进程创建专用用户(使用 -r/--system或-s /usr/sbin/nologin)。永远不要给服务账户设置可登录的 Shell 或密码。
- 禁用未使用账户: 对于不再需要的用户,使用 sudo usermod -L 用户名锁定账户(在/etc/shadow密码字段前加 ),或者使用sudo userdel 用户名删除账户(userdel -r 用户名会同时删除主目录和邮件假脱机文件)。
- 定期审计: 定期检查 /etc/passwd、/etc/shadow、/etc/group和sudo权限,确保没有未授权或配置错误的账户。
- 主目录权限: 确保用户主目录权限正确(通常应为 700或drwx------),使其仅对所有者可读、写、执行,检查/etc/login.defs中的UMASK设置(如UMASK 022会创建权限为755的目录)。
- 使用 sudo: 避免直接使用root账户进行日常操作和管理,使用sudo并配置好sudoers文件。
- 了解发行版差异: 不同发行版(如 RHEL/CentOS vs Debian/Ubuntu)在默认组、/etc/login.defs设置和adduser可用性上可能有细微差别,查阅你的发行版文档。
选择哪种方法?
- useradd: 通用、灵活、脚本友好,适合需要精确控制所有参数、编写自动化脚本或在所有发行版上工作的情况。务必记住- -m选项来创建主目录。
- adduser(Debian/Ubuntu): 交互式、用户友好、自动化了多个步骤(创建主目录、设置密码、提示信息),适合手动在 Debian/Ubuntu 系统上创建用户,简化了流程。
引用说明:
- Linux useradd手册页 (man useradd)
- Linux adduser手册页 (man adduser– 在支持它的系统上)
- Linux passwd手册页 (man passwd)
- Linux usermod手册页 (man usermod)
- Linux groupadd手册页 (man groupadd)
- Linux id手册页 (man id)
- Linux 文件格式手册页 (man 5 passwd,man 5 shadow,man 5 group,man 5 login.defs)
- Debian adduser文档
- Red Hat / CentOS 系统管理员指南中关于用户管理的章节
- Linux 基金会 (Linux Foundation) 和各大发行版官方文档中关于用户和组管理的权威指南。
 
  
			 
			 
			 
			 
			 
			 
			 
			