Linux系统如何添加新用户和用户组 useradd与groupadd

落雪吖_4109

落雪吖_4109

2026-04-10

810人浏览

原创

添加用户前必须确认三件事:是否需要登录(指定-s /bin/bash)、是否需要家目录(加-m)、是否设初始密码(用passwd或chpasswd);否则易创建无法登录、无家目录、shell为/bin/false的哑巴用户。

linux系统如何添加新用户和用户组 useradd与groupadd

添加用户前必须确认的三件事

直接运行 useradd 很可能创建出无法登录、家目录缺失、shell 为 /bin/false 的“哑巴用户”。这不是命令错了,而是没传关键参数。默认行为在不同发行版中也不一致:CentOS 默认不建家目录,Ubuntu 的 adduser(封装脚本)才自动处理,但 useradd 始终是裸命令。

  • 是否需要登录?→ 必须指定 -s /bin/bash(或其他有效 shell)
  • 是否需要家目录?→ 必须加 -m,否则用户主目录不会被创建
  • 是否要设初始密码?→ useradd 不设密码,必须后续用 passwd 或 chpasswd

正确添加一个可登录用户的完整步骤

假设要加用户 devuser,属于新组 devteam,家目录在 /home/devuser,登录 shell 为 /bin/bash:

groupadd devteam
useradd -m -g devteam -s /bin/bash devuser
echo 'devuser:MyPass123' | chpasswd

注意:-g 指定主组(primary group),不是附加组;如果想让该用户同时属于多个组(如 sudo 和 docker),得用 -G 参数,例如 -G sudo,docker。另外,chpasswd 接受 用户名:密码 格式输入,比交互式 passwd 更适合脚本化。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载

groupadd 常见陷阱与权限边界

groupadd 看似简单,但两个细节常被忽略:

  • 组名不能以数字开头,也不能含特殊字符(只允许字母、数字、下划线、短横线);尝试 groupadd 123group 会报错 groupadd: invalid group name
  • 普通用户无法执行 groupadd,即使加了 sudo,也需确保其在 sudoers 中有对应权限;更隐蔽的是,某些最小化系统(如 Alpine)默认不带 shadow 工具集,groupadd 可能根本不存在,得先装 shadow 包
  • 组 ID(GID)冲突时,groupadd 默认从 1000 起分配;若需指定 GID,用 -g 2000,但必须确保该 GID 未被占用,否则失败

验证用户和组是否真正生效

别只看 /etc/passwd 和 /etc/group 文件里有没有记录——那只是静态配置。真正要确认的是运行时状态:

  • 查用户归属:id devuser → 应显示 uid、gid、groups 全部信息
  • 查家目录权限:ls -ld /home/devuser → 所有者必须是 devuser,且权限通常为 700
  • 切到该用户测试:su - devuser -c 'echo $HOME' → 成功返回 /home/devuser 才算 shell 和家目录都正常
  • 如果用户仍无法 SSH 登录,检查 /var/log/auth.log 或 /var/log/secure,常见原因是 /etc/shadow 中密码字段为空或为 *(表示锁定)

最易被跳过的环节是 SELinux 或 AppArmor 上下文——在启用强制访问控制的系统上,新建家目录可能缺少正确标签,导致用户登录后无法读写自己的文件,此时需运行 restorecon -Rv /home/devuser。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux linux系统

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

705

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5199

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6177

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2353

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

259

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

451

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

400

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

305

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

425

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习