当前位置: 首页 > web >正文

Linux 用户与组管理及权限委派

Linux 用户与组管理及权限委派

一、用户与组的基本概念

1. 用户账号分类

Linux 系统中的用户账号分为三类,各自具有不同的权限和用途:

  • 管理员用户(root)
    • UID(用户 ID)固定为 0
    • 拥有系统最高权限,可执行所有操作
  • 普通用户
    • UID 范围为 1000+(CentOS 7 及以上默认从 1000 开始)
    • 仅拥有自身权限范围内的操作权限,用于日常工作
  • 程序用户(系统用户)
    • UID 范围为 1-999
    • 不用于登录系统,仅为系统服务或程序运行提供身份标识(如 nginx、mysql 用户)

2. 组账号分类

组账号用于将多个用户集合管理,便于权限统一分配:

  • 基本组:用户创建时默认所属的组,每个用户至少属于一个基本组
  • 附加组:用户除基本组外额外加入的组,一个用户可属于多个附加组
  • GID(组 ID)规则
    • 管理员组(root 组)的 GID 固定为 0
    • 普通组的 GID 范围为 1000-60000

二、用户与组的配置文件

1. 用户核心配置文件

文件名

作用

访问权限

/etc/passwd

存储所有用户的基本信息

所有用户可读取

/etc/shadow

存储用户密码及安全策略

仅 root 可读取

/etc/group

存储所有组的基本信息

所有用户可读取

/etc/gshadow

存储组密码及管理员信息

仅 root 可读取

2. 配置文件格式详解

(1)/etc/passwd 格式

每行代表一个用户,以冒号分隔 7 个字段:

用户名:密码占位符:UID:GID:用户描述:主目录:登录Shell
  • 示例:zhangsan:x:1001:1001:张三:/home/zhangsan:/bin/bash
  • 说明:x 表示密码存储在 /etc/shadow 中;/bin/bash 为可登录 Shell,/sbin/nologin 为禁止登录
(2)/etc/shadow 格式

每行对应 /etc/passwd 中的用户,以冒号分隔 9 个字段(密码安全相关):

用户名:加密密码:最近改密日期:密码不可改天数:密码有效期:警告天数:宽限天数:账号失效日期:保留字段
  • 关键字段说明:
    • 加密密码:采用 SHA-512 算法加密;* 或 !! 表示用户被锁定,无法登录;为空表示无需密码即可登录
    • 最近改密日期:从 1970-01-01 到最近修改密码的天数
    • 密码有效期:默认 99999(约 273 年),表示无强制过期
    • 账号失效日期:格式同 “最近改密日期”,为空表示永久有效
(3)/etc/group 格式

每行代表一个组,以冒号分隔 4 个字段:

组名:密码占位符:GID:组内用户列表(附加组用户)
  • 示例:dev:x:1005:zhangsan,lisi(dev 组的 GID 为 1005,附加用户为 zhangsan 和 lisi)
(4)/etc/gshadow 格式

每行对应 /etc/group 中的组,以冒号分隔 4 个字段:

组名:加密组密码:组管理员:组成员
  • 说明:组密码通常为空或 !(表示无密码);组管理员可管理组内成员

3. 用户相关目录

目录路径

作用

/home/<用户名>

普通用户的主目录,存储个人文件

/var/spool/mail/<用户名>

用户的系统邮箱,接收系统通知

三、用户与组的管理命令

1. 用户管理命令

(1)useradd:创建用户
useradd [选项] 用户名
  • 常用选项:
    • -u <UID>:指定 UID(需未被使用)
    • -d <目录>:指定主目录(默认 /home/用户名)
    • -g <组名/GID>:指定基本组
    • -G <组名/GID>:指定附加组(多个组用逗号分隔)
    • -s <Shell>:指定登录 Shell(如 /bin/bash、/sbin/nologin)
    • -c <描述>:添加用户描述信息
  • 示例:创建一个 UID 为 1008、基本组为 dev、附加组为 admin 的用户 wangwu
useradd -u 1008 -g dev -G admin -c "王五" wangwu
(2)passwd:设置用户密码
passwd [选项] 用户名 # root 可指定用户,普通用户只能修改自身密码
  • 常用选项:
    • -d:清空密码(用户可无密码登录)
    • -l:锁定用户账号(无法登录)
    • -u:解锁用户账号
    • -S:查看用户账号状态(是否锁定、密码过期信息等)
  • 示例:锁定用户 wangwu 并查看状态
passwd -l wangwupasswd -S wangwu
(3)usermod:修改用户属性
usermod [选项] 用户名
  • 常用选项(同 useradd,新增锁定相关):
    • -L:锁定用户(同 passwd -l)
    • -U:解锁用户(同 passwd -u)
  • 示例:将用户 wangwu 的主目录改为 /home/wangwu_new,并添加附加组 test
usermod -d /home/wangwu_new -aG test wangwu # -a 表示追加附加组,避免覆盖原有组
(4)userdel:删除用户
userdel [选项] 用户名
  • 常用选项:
    • -r:彻底删除用户(包括主目录 /home/用户名 和邮箱 /var/spool/mail/用户名)
  • 示例:彻底删除用户 wangwu
userdel -r wangwu

2. 组管理命令

(1)groupadd:创建组
groupadd [选项] 组名
  • 常用选项:-g <GID> 指定组的 GID(需未被使用)
  • 示例:创建 GID 为 1006 的组 test
groupadd -g 1006 test
(2)groupdel:删除组
groupdel 组名 # 需确保组不是任何用户的基本组,否则删除失败
(3)gpasswd:管理组成员及密码
gpasswd [选项] 组名
  • 常用选项:
    • -a <用户>:添加用户到组(附加组)
    • -d <用户>:从组中移除用户
    • 直接执行 gpasswd 组名:设置组密码(不推荐,通常不用组密码)
  • 示例:将用户 zhangsan 添加到 dev 组,再移除
gpasswd -a zhangsan devgpasswd -d zhangsan dev
(4)groups:查看用户所属组
groups [用户名] # 不指定用户则查看当前用户所属组
  • 示例:查看 zhangsan 所属的组
groups zhangsan

3. 密码策略管理(chage)

用于修改 /etc/shadow 中的密码过期相关设置:

chage [选项] 用户名# 直接执行 chage 用户名:进入交互式设置
  • 常用选项:
    • -M <天数>:设置密码最长有效期
    • -m <天数>:设置密码最短修改间隔
    • -E <日期>:设置账号失效日期(格式 YYYY-MM-DD)
  • 示例:设置 zhangsan 的密码 90 天过期,过期前 10 天警告
chage -M 90 -W 10 zhangsan

四、权限委派(sudo)

sudo 允许普通用户以 root 或其他用户身份执行特定命令,实现权限精细化管理。

1. 配置文件

  • 主配置文件:/etc/sudoers(需通过 visudo 编辑,自动语法检查)
  • 子配置目录:/etc/sudoers.d/(推荐在此目录创建文件,无需修改主配置)

2. 配置格式

基本格式:

用户/组 主机=(身份) 可执行命令列表
  • 示例:允许 admin 用户在所有主机以 root 身份执行用户管理命令
admin ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel

3. 配置步骤

(1)通过 /etc/sudoers.d/ 配置(推荐)
visudo -f /etc/sudoers.d/user-admin # 创建并编辑配置文件

添加内容:

admin ALL=(ALL) /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel

保存退出(visudo 会自动验证语法)。

(2)使用命令别名(简化配置)

在 sudoers 中定义命令别名,便于批量管理:

visudo # 编辑主配置文件

添加内容:

Cmnd_Alias USER_MANAGE = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdeladmin ALL=(ALL) USER_MANAGE

4. 使用方法

普通用户执行授权命令时,需在命令前加 sudo:

sudo useradd tom # admin 用户创建 tom 用户

首次执行会要求输入当前用户的密码(验证身份)。

总结

  • 用户与组:通过 UID/GID 区分身份,核心配置文件集中在 /etc 目录,管理命令包括 useradd、groupadd 等。
  • 权限委派:通过 sudo 实现普通用户对特定命令的临时授权,配置灵活且安全,推荐使用 /etc/sudoers.d/ 目录管理子配置。

掌握用户与组的管理,是 Linux 系统权限控制和安全运维的基础。

http://www.xdnf.cn/news/16923.html

相关文章:

  • Blender 智能模型库 | 人物·建筑·场景·机械等 近万高精度模型
  • 嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)
  • AG-UI 协议全面解析--下一代 AI Agent 交互框架医疗应用分析(上)
  • k8s云原生rook-ceph pvc快照与恢复(上)
  • NLP 和 LLM 区别、对比 和关系
  • 四、基于SpringBoot,MVC后端开发笔记
  • 【Mysql】联合索引生效分析案例
  • 【Electron】打包后图标不变问题,图标问题
  • JavaWeb笔记2-JavaScriptVueAjax
  • PyTorch分布式训练:从入门到精通
  • AG-UI 协议全面解析--下一代 AI Agent 交互框架医疗应用分析(下)
  • Js引用数据类型和ES6新特性
  • Python调用C++动态库
  • k8s云原生rook-ceph pvc快照与恢复(下)
  • 【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?
  • iPhone 恢复出厂设置是否会删除所有内容?
  • 流式输出阻塞原因及解决办法
  • Pydantic模块学习
  • vivado扫盲:dcp(腾讯元宝)
  • QT6 源,十章绘图(2)画刷 QBrush:刷子只涉及填充颜色,线型,填充图片,以及变换矩阵这几个属性,附源代码带注释。
  • 从零到一:Linux内核MMU启动与虚拟内存体系建立全流程详解
  • gitlab+jenkins的ci/cd部署
  • win11 命令禁用客户体验改善计划
  • 区块链概述
  • 云计算k8s集群部署配置问题总结
  • ARM Cortex-M 处理器的应用
  • Hive SQL (HQL) 编辑指南
  • vscode cursor配置php的debug,docker里面debug
  • 20250801在Ubuntu24.04.2LTS下编译firefly_itx_3588j的Android12时解决boot.img过大的问题
  • django的数据库原生操作sql