当前位置:首页 > 技术 > 正文内容

Linux用户管理命令useradd详解

访客 技术 2026年7月2日 1

useradd [选项] 登录名

useradd -D

useradd -D [选项]

该命令用于创建新用户或修改默认用户创建行为。在大多数系统中,adduseruseradd 的符号链接,功能一致。若不带 -D 选项,useradd 将结合命令行参数与系统默认值来创建用户,并可能自动更新系统配置文件、生成主目录并复制初始文件。默认情况下,还会为新用户创建同名组(可通过 -N-U 控制)。

1. 用户类型分类

  • 超级用户:如 root,拥有最高权限,其 UID 通常为 0。
  • 系统账户:也称虚拟用户,用于支持服务运行(如 apacheftp),一般不可登录,且 UID 范围受限(例如在 CentOS 7 中为 1~999)。
  • 普通用户:受权限限制,新建用户默认属于此类,UID 从 1000 开始。

注:每个用户的 UID 必须唯一,相当于身份证号。尽管可手动修改 /etc/passwd,但应避免重复。

2. 常用参数说明

参数 含义
-d /path/to/home 指定用户的主目录路径,不指定时默认为 /home/用户名
-m 若主目录不存在,则创建它;同时将骨架目录内容(-k 指定)复制过去
-M 不创建主目录,即使系统默认开启创建
-g 组名或ID 设置用户的初始登录组,组必须存在
-G 组1,组2,... 添加用户到多个附加组,组间以逗号分隔,无空格
-s /path/to/shell 指定登录后使用的 shell,如 /sbin/nologin 可禁用登录
-r 创建系统账户,使用专用 UID 范围(SYS_UID_MIN ~ SYS_UID_MAX),不自动创建主目录

3. 高级选项

参数 说明
-b /base/dir 定义主目录的基路径,若未设 -d,则主目录为 /base/dir/用户名
-c "描述信息" 添加用户注释字段,常用于存储真实姓名
-e YYYY-MM-DD 设置账户过期日期,格式为年月日
-f 天数 密码过期后多少天内仍可登录,0 表示立即失效,-1 禁用此功能
-k /skel/dir 自定义骨架目录,用于复制到新用户的主目录中(仅在 -m 有效时生效)
-K KEY=VALUE 覆盖 /etc/login.defs 中的默认设置,如 -K PASS_MAX_DAYS=-1 表示密码永不过期
-u UID 手动指定用户 UID,需确保唯一性(除非配合 -o
-o 允许使用重复 UID,仅与 -u 一起使用才有意义
-p "加密密码" 提供加密后的密码字符串(不推荐,易泄露)
-U 为用户创建同名组,并将其加入该组
-Z SEL_USER 指定 SELinux 用户身份

注意:使用 -D 时不带其他参数,显示当前默认设置;搭配其他选项则用于修改默认值。有效可改项包括:-b-e-f-g-s

4. 核心配置文件

  • /etc/login.defs:定义用户创建规则,如 UID_MINPASS_MAX_DAYS
  • /etc/default/useradd:存放 useradd 默认参数,如 HOMESHELLSKEL
  • /etc/skel/:新用户主目录模板,所有文件将被复制至新用户主目录
  • /etc/passwd:用户基本信息
  • /etc/shadow:用户密码及安全策略
  • /etc/group:组信息
  • /etc/gshadow:组密码与管理员信息

5. 退出状态码

返回值 含义
0 成功执行
1 无法更新系统文件
2 命令语法错误
3 参数无效
4 UID 已被占用(未启用 -o
6 指定的组不存在
9 用户名已存在
10 无法写入组文件
12 主目录创建失败
14 SELinux 映射更新失败

6. 实际操作示例

  1. 创建用户并自动生成主目录和同名组
useradd alice
id alice
# 输出:uid=1002(alice) gid=1002(alice) 组=1002(alice)
  1. 指定 UID 并创建用户
useradd -u 1050 bob
tail -1 /etc/passwd
# bob:x:1050:1050::/home/bob:/bin/bash
  1. 自定义主目录路径
useradd -d /opt/data/john john
# 此时主目录为 /opt/data/john
  1. 添加用户并分配主组与附加组
useradd -g developers -G admin,ops jane
id jane
# uid=1051(jane) gid=1003(developers) 组=1003(developers),0(root),1004(ops)

7. 补充:删除用户命令

userdel [选项] 用户名

  • -r:移除用户主目录和邮件文件(位于 /var/mail/
userdel -r alice
# 移除用户 alice 及其主目录

注意:若用户所在组有其他成员,即使使用 -r 也无法删除该组。

标签: useraddLinux

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。