Linux 用户和组管理:核心概念、配置文件与命令全解析
Linux 用户和组管理一、用户和组概述1.1 用户帐户的作用用户帐户是系统安全的基础系统上的每个进程运行程序都以特定用户身份运行每个文件都有一个特定用户作为其所有者文件所有权帮助系统对用户实施访问控制正在运行的进程关联的用户决定了该进程可访问的文件和目录 用户使用username用户名标识便于人类记忆系统内部使用UID用户ID唯一编号来区分用户帐户。1.2 用户帐户的三种主要类型类型说明UID范围CentOS 7特点超级用户 (superuser)用户名rootUID 固定为00对系统具有完全访问权限可执行任何操作系统用户 (system users)由系统服务和守护进程使用1-999非特权帐户通常不用于交互式登录Shell 为/sbin/nologin普通用户 (regular users)供日常工作和交互式登录使用1000权限受限只能访问自己有权限的资源bash# 查看系统用户示例 [laomacentos7 ~]$ grep postfix /etc/passwd postfix:x:89:89::/var/spool/postfix:/sbin/nologin二、用户和组配置文件详解2.1/etc/passwd—— 用户帐户信息文件保存系统上所有登录用户的信息每行代表一个用户以冒号:分隔7 个字段。格式textname:password:UID:GID:GECOS:directory:shell示例bashlaoma:x:1000:1000:software admin:/home/laoma:/bin/bash字段详解字段字段名说明1name用户登录名用户名2password密码占位符x表示密码存储在/etc/shadow中更安全3UID用户IDUser ID系统唯一标识用户4GID用户主组IDGroup ID指向/etc/group中的组5GECOS用户描述信息通常为真实姓名、联系方式等6directory用户主目录登录后的默认工作目录通常为/home/username7shell用户登录后执行的程序通常是 Shell如/bin/bash2.2/etc/group—— 组信息文件保存系统上所有组的信息每行代表一个组以冒号:分隔4 个字段。格式textgroup_name:password:GID:user_list示例bashwheel:x:10:laoma字段详解字段字段名说明1group_name组名称2password组密码占位符x表示密码存储在/etc/gshadow中3GID组IDGroup ID系统唯一标识组4user_list该组的补充成员列表逗号分隔主组成员不在此列出2.3 组的类型类型说明存储位置主要组 (Primary Group)每个用户只有一个主要组。用户新建文件的所属组默认为其主要组。创建用户时默认会创建一个同名专用组作为主要组。/etc/passwd的 GID 字段补充组 (Supplementary Group)用户可以属于多个补充组。权限检查时会检查用户所属的所有组主要组 补充组。/etc/group的 user_list 字段2.4 查看用户信息bash# 查看当前用户的完整信息 [laomacentos7 ~]$ id uid1000(laoma) gid1000(laoma) groups1000(laoma),10(wheel) # 查看指定用户的 UID [laomacentos7 ~]$ id -u laoma 1000 # 查看指定用户的 GID主要组 [laomacentos7 ~]$ id -g laoma 1000 # 查看指定用户的所有组 ID [laomacentos7 ~]$ id -G laoma 1000 10三、查看登录用户信息3.1 命令对比命令作用示例输出whoami查看当前终端的登录用户名rootwho查看所有终端上登录的用户及登录时间、来源IProot pts/0 2024-12-22 08:43 (10.1.8.1)w查看登录用户及系统负载、运行进程等详细信息显示 USER、TTY、FROM、LOGIN、IDLE、JCPU、PCPU、WHATusers仅显示当前登录的所有用户名可重复laoma laoma root3.2 示例bash# who 示例 [laomacentos7 ~]$ who root pts/0 Dec 22 08:43 (10.1.8.1) laoma pts/1 Dec 22 09:23 (10.1.8.1) laoma pts/2 Dec 22 09:07 (10.1.8.1) # w 示例信息更丰富 [laomacentos7 ~]$ w 09:23:19 up 1:10, 3 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN IDLE JCPU PCPU WHAT root pts/0 10.1.8.1 08:43 39:27 0.06s 0.06s -bash laoma pts/1 10.1.8.1 09:23 2.00s 0.05s 0.01s w laoma pts/2 10.1.8.1 09:07 7.00s 0.05s 0.05s -bash # users 示例 [rootcentos7 ~]$ users laoma laoma root # whoami 示例 [rootcentos7 ~]$ whoami root四、用户管理命令4.1useradd—— 创建用户基本语法bashuseradd [选项] 用户名常用选项选项说明示例-u UID指定用户 ID-u 8888-d 目录指定家目录路径-d /opt/user02-c 描述设置 GECOS 描述信息-c software admin-g 组名指定主要组GID-g wheel-s Shell指定登录 Shell-s /sbin/nologin-p 密码设置密码明文不安全仅用于测试-p 123456-G 组列表指定补充组逗号分隔-G wheel,users-r创建系统用户UID 1000-r示例bash# 示例1创建默认用户自动分配 UID、GID创建同名组和家目录 [rootcentos7 ~]# useradd user01 [rootcentos7 ~]# grep user01 /etc/passwd user01:x:1003:1003::/home/user01:/bin/bash # 示例2指定各项属性创建用户 [rootcentos7 ~]# useradd -u 8888 -d /opt/user02 -c user for software manage -g wheel -s /sbin/nologin user02 [rootcentos7 ~]# grep user02 /etc/passwd user02:x:8888:10:user for software manager:/opt/user02:/sbin/nologin [rootcentos7 ~]# ls -d /opt/user02/ /opt/user02/ # 示例3创建无密码用户图形界面可直接登录 [rootcentos7 ~]# useradd -p tom4.2/etc/skel/—— 用户家目录模板创建新用户时系统会将/etc/skel/目录下的所有文件复制到用户的新家目录中。bash[rootcentos7 ~]# ls -a /etc/skel/ . .. .bash_logout .bash_profile .bashrc .mozilla [rootcentos7 ~]# ls -a ~tom . .. .bash_logout .bash_profile .bashrc .mozilla用途系统管理员可以在此目录放置全局配置文件如.bashrc、自定义环境变量、欢迎信息等使每个新用户都能继承这些配置。4.3usermod—— 修改用户属性基本语法bashusermod [选项] 用户名常用选项选项说明示例-u UID修改用户 ID-u 1008-d 目录修改家目录路径-d /home/user02-m将原家目录内容移动到新家目录常与-d联用-md /home/user02-c 描述修改 GECOS 描述信息-c new desc-g 组名修改主要组GID-g users-s Shell修改登录 Shell-s /bin/bash-G 组列表设置补充组列表覆盖原有补充组-G wheel,users-aG 组列表追加补充组保留原有补充组-aG docker-L锁定用户禁止登录-L-U解锁用户-U⚠️重要-G会覆盖原有的补充组列表如果要追加必须同时使用-aG。示例bash# 示例1修改 UID、家目录和 Shell [rootcentos7 ~]# usermod user02 -u 1008 -md /home/user02 -s /bin/bash # -u 1008: UID 改为 1008 # -md /home/user02: 家目录改为 /home/user02并迁移原有内容 # -s /bin/bash: Shell 改为 /bin/bash [rootcentos7 ~]# grep user02 /etc/passwd user02:x:1008:10:user for software manager:/home/user02:/bin/bash [rootcentos7 ~]# ls -d /home/user02/ /home/user02/ [rootcentos7 ~]# su - user02 # 验证可登录 Last login: Mon Nov 7 17:08:58 CST 2022 on pts/2 [user02centos7 ~]$ # 示例2添加补充组追加 [rootcentos7 ~]# usermod -aG user01 user02 [rootcentos7 ~]# id user02 uid1008(user02) gid10(wheel) groups10(wheel),1003(user01) # 原有补充组 wheel 保留新增 user01 # 示例3覆盖补充组危险 [rootcentos7 ~]# usermod -G user01 user02 # 会覆盖原有补充组4.4userdel—— 删除用户选项说明无选项删除用户但保留家目录和邮件池-r删除用户同时删除家目录和邮件池-f强制删除即使用户当前已登录bash# 正常删除 [rootcentos7 ~]# useradd user03 [rootcentos7 ~]# userdel user03 # 强制删除谨慎使用 [rootcentos7 ~]# userdel -f user02 userdel: user user02 is currently used by process 9071 [rootcentos7 ~]# id user02 id: user02: no such user⚠️注意删除用户前建议先备份家目录中的重要数据。如果用户当前已登录userdel会提示错误使用-f可强制删除但可能导致进程异常。正确的做法先kill掉该用户的所有进程再执行userdel -r。五、组管理命令5.1groupadd—— 创建组选项说明-g GID指定组 ID-r创建系统组GID 1000bash# 创建普通组 [rootcentos7 ~]# groupadd admin # 创建指定 GID 的组 [rootcentos7 ~]# groupadd sysadmin -g 2000 # 验证 [rootcentos7 ~]# grep admin /etc/group admin:x:1002: sysadmin:x:2000:5.2groupmod—— 修改组属性选项说明-n 新名称修改组名称-g 新GID修改组 IDbash# 修改组名 [rootcentos7 ~]# groupmod --new-name admins admin # 修改 GID [rootcentos7 ~]# groupmod -g 2002 admins # 验证 [rootcentos7 ~]# grep admins /etc/group admins:x:2002:5.3groupdel—— 删除组bash[rootcentos7 ~]# groupdel sysadmin [rootcentos7 ~]# grep sysadmin /etc/group # 无输出已删除⚠️ 如果组是某用户的主要组则不能删除需先删除用户或修改用户的主要组。5.4groupmems—— 管理组成员选项说明-g 组名指定要操作的组默认为当前用户的主要组-a 用户名将用户添加到组中-d 用户名从组中移除用户-l列出组中所有成员-p清空组中所有成员bash# 添加成员 [rootcentos7 ~]# groupmems -g admins -a laoma [rootcentos7 ~]# groupmems -g admins -l laoma # 验证 [rootcentos7 ~]# id laoma uid1000(laoma) gid1000(laoma) groups1000(laoma),10(wheel),2002(admins) # 删除成员 [rootcentos7 ~]# groupmems -g admins -d laoma [rootcentos7 ~]# groupmems -g admins -l # 清空组中所有成员 [rootcentos7 ~]# groupmems -g admins -a laoma [rootcentos7 ~]# groupmems -g admins -p六、默认配置文件6.1/etc/login.defs—— 用户创建默认参数bash[rootcentos7 ~]# vim /etc/login.defs配置项默认值说明MAIL_DIR/var/spool/mail用户邮件存储目录UMASK022新文件默认权限掩码目录755文件644HOME_MODE0700家目录权限仅所有者可读写执行PASS_MAX_DAYS99999密码最大有效期天PASS_MIN_DAYS0密码最小修改间隔天PASS_MIN_LEN5密码最小长度PASS_WARN_AGE7密码过期前警告天数UID_MIN1000普通用户 UID 最小值UID_MAX60000普通用户 UID 最大值SYS_UID_MIN201系统用户 UID 最小值SYS_UID_MAX999系统用户 UID 最大值CREATE_HOMEyes是否自动创建家目录USERGROUPS_ENAByes删除用户时如果其同名组无成员则自动删除6.2/etc/default/useradd—— useradd 额外默认值bash[rootcentos7 ~]# cat /etc/default/useradd # useradd defaults file GROUP100 HOME/home INACTIVE-1 EXPIRE SHELL/bin/bash SKEL/etc/skel CREATE_MAIL_SPOOLyes配置项默认值说明GROUP100100新用户的主要组100 users但 CentOS 默认创建同名组HOME/home/home家目录父路径INACTIVE-1-1密码过期后账户停用天数-1 表示永不停用EXPIRE空账户过期日期空表示永不过期SHELL/bin/bash/bin/bash默认登录 ShellSKEL/etc/skel/etc/skel模板目录路径CREATE_MAIL_SPOOLyesyes是否创建邮箱文件七、课后练习与作业7.1 课后选择题题目答案1. 哪一项表示在最基本的层面上标识用户的编号 A. 主要用户 B. UID C. GID D. 用户名B. UID2. 哪一项表示提供用户命令行提示符的程序 A. 主 shell B. 主目录 C. 登录 shell D. 命令名称C. 登录 shell3. 哪一项目或文件表示本地组信息的位置 A. 主目录 B. /etc/passwd C. /etc/GID D. /etc/groupD. /etc/group4. 哪一项目或文件表示用户个人文件的位置 A. 主目录 B. 登录 shell C. /etc/passwd D. /etc/groupA. 主目录5. 哪一项表示在最基本的层面上标识组的编号 A. 主要组 B. UID C. GID D. groupidC. GID6. 哪一项目或文件表示本地用户帐户信息的位置 A. 主目录 B. /etc/passwd C. /etc/UID D. /etc/groupB. /etc/passwd7./etc/passwd文件的第四个字段是什么 A. 主目录 B. UID C. 登录 shell D. 主要组D. 主要组第4字段为 GID7.2 课后作业bash# 1. 创建 operator1 用户 [rootcentos7 ~]# useradd operator1 # 2. 使用 id 验证 operator1 用户信息 [rootcentos7 ~]# id operator1 # 3. 查看 /etc/passwd 中对应条目 [rootcentos7 ~]# grep operator1 /etc/passwd # 4. 密码设置为 redhat [rootcentos7 ~]# echo redhat | passwd --stdin operator1 # 5. 修改 operator1 用户 uid 为 1088 [rootcentos7 ~]# usermod -u 1088 operator1 # 6. 修改 operator1 用户描述信息为 Operator One [rootcentos7 ~]# usermod -c Operator One operator1 # 7. 将 wheel 组作为补充组添加给 operator1 用户 [rootcentos7 ~]# usermod -aG wheel operator1 # 8. 查看 /etc/group 中对应条目 [rootcentos7 ~]# grep wheel /etc/group # 9. 删除 operator1 用户 [rootcentos7 ~]# userdel -r operator1八、命令速查表用户管理命令速查命令用途常用选项useradd创建用户-u,-d,-c,-g,-G,-s,-rusermod修改用户-u,-d,-m,-c,-g,-G,-aG,-s,-L,-Uuserdel删除用户-r删除家目录id查看用户信息-u,-g,-Gwhoami查看当前用户名—who/w查看登录用户—users查看登录用户名—组管理命令速查命令用途常用选项groupadd创建组-g,-rgroupmod修改组-n,-ggroupdel删除组—groupmems管理组成员-g,-a,-d,-l,-p九、补充说明9.1 密码管理命令补充命令用途常用选项passwd管理用户密码--stdin,-l,-u,-d,-e,-Schage密码过期策略-l,-m,-M,-W,-E,-d9.2 重要提醒/etc/passwd文件权限为644所有用户可读但只有 root 可写/etc/shadow文件权限为000或400只有 root 可读保护密码安全修改用户配置时优先使用命令如usermod而非直接编辑配置文件创建用户时同名组会自动创建作为用户的主要组root用户的 Shell不要轻易修改否则可能导致系统无法管理

相关新闻

5分钟上手EllipticCurveKeyPair:iOS开发者必备的Secure Enclave密钥管理工具

5分钟上手EllipticCurveKeyPair:iOS开发者必备的Secure Enclave密钥管理工具

5分钟上手EllipticCurveKeyPair:iOS开发者必备的Secure Enclave密钥管理工具 【免费下载链接】EllipticCurveKeyPair Sign, verify, encrypt and decrypt using the Secure Enclave 项目地址: https://gitcode.com/gh_mirrors/el/EllipticCurveKeyPair 想要为…

2026/7/19 13:48:57阅读更多 →
【 C++ 】模板初阶 —— 函数模板、类模板

【 C++ 】模板初阶 —— 函数模板、类模板

1. 泛型编程泛型编程:不再是针对某种类型,能适应广泛的类型如下的交换函数:void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right) {double temp left;lef…

2026/7/19 13:48:57阅读更多 →
Aperture高级功能探索:动态流量控制与自适应限流终极指南

Aperture高级功能探索:动态流量控制与自适应限流终极指南

Aperture高级功能探索:动态流量控制与自适应限流终极指南 【免费下载链接】aperture Rate limiting, caching, and request prioritization for modern workloads 项目地址: https://gitcode.com/gh_mirrors/ape/aperture Aperture是一款强大的分布式负载管理…

2026/7/19 13:48:57阅读更多 →
Android线程通信:Handler机制与UI实时更新实战

Android线程通信:Handler机制与UI实时更新实战

1. 项目概述:实时显示内容的线程与消息机制 在Android开发中,实现实时内容显示是个经典场景。最近接手一个需要持续更新UI的数据监控项目,深刻体会到Thread和Handler这对黄金搭档的重要性。当后台线程需要频繁向前端推送数据时,直…

2026/7/19 21:06:32阅读更多 →
单片机高电平与低电平:电压范围、识别原理与电平兼容设计

单片机高电平与低电平:电压范围、识别原理与电平兼容设计

记得第一次用单片机点亮 LED 灯时,我盯着电路板看了半天——明明代码里写了 GPIO_SetBits() 设置高电平,灯就亮;写了 GPIO_ResetBits() 设置低电平,灯就灭。但用万用表一量,高电平不是 5V,低电平也不是…

2026/7/19 21:06:32阅读更多 →
Android代码混淆与优化:ProGuard/R8实战指南

Android代码混淆与优化:ProGuard/R8实战指南

1. Android ProGuard代码混淆与压缩核心解析 在Android应用开发中,代码安全与包体优化是发布前必须处理的两大关键问题。ProGuard作为Android官方推荐的代码优化工具链,通过压缩(Shrinking)、优化(Optimization&#x…

2026/7/19 21:06:32阅读更多 →
React性能优化与工程化实践指南

React性能优化与工程化实践指南

1. 项目背景解析 "day5 from 金角大王"这个标题看似简单,实则蕴含了丰富的技术实践内涵。作为一名长期跟踪前沿技术动态的从业者,我理解这类标题通常代表某个技术挑战或学习记录的第五天进展。金角大王这个称呼可能源自团队内部代号&#xff0…

2026/7/19 21:06:32阅读更多 →
TPL模板引擎实战:核心语法与性能优化解析

TPL模板引擎实战:核心语法与性能优化解析

1. TPL Demo项目概述 TPL(Template Programming Language)是一种轻量级模板引擎,广泛应用于前后端分离开发中的视图层渲染。这个demo项目展示了TPL在实际开发中的典型应用场景和实现方式。作为从业十年的全栈开发者,我经常在快速原…

2026/7/19 21:06:32阅读更多 →
Spring事件机制详解:原理、实现与实战应用

Spring事件机制详解:原理、实现与实战应用

1. Spring事件机制概述Spring事件机制是Spring框架基于观察者模式实现的核心功能之一,它通过事件发布与监听的方式实现组件间的解耦。在实际开发中,我们经常会遇到这样的场景:某个业务操作完成后需要触发多个后续处理,比如用户注册…

2026/7/19 21:04:31阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/19 14:50:26阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/19 18:50:36阅读更多 →