
文章目录第3章 Ubuntu 用户、权限、sudo与PAM安全体系全书级·超级加厚完整版可直接出版3.1 Linux 用户与用户组超级扩写3.1.1 底层原理多用户安全的本质3.1.2 内核视角内核只认 UID/GID不认名字3.1.3 历史设计Unix 50 年不变的安全根基3.1.4 三大配置文件逐字段教科书精讲/etc/passwd/etc/shadow仅 root 可读/etc/group3.1.5 用户分类Ubuntu 官方标准3.1.6 主组 vs 附加组高频坑点3.1.7 企业案例互联网公司标准用户架构3.1.8 脚本自动化批量用户管理生产可用3.1.9 渗透测试视角攻击者如何利用用户漏洞3.1.10 加固脚本用户体系安全加固3.1.11 文字版图文说明3.2 用户与用户组管理实战超级扩写3.2.1 底层原理useradd 执行的完整流程3.2.2 内核视角用户信息不在内核中3.2.3 历史设计useradd vs adduser3.2.4 命令全解useradd / usermod / userdel / passwd3.2.5 企业案例员工入职/离职标准化流程3.2.6 脚本自动化批量创建/删除/查询3.2.7 渗透测试视角账号后门常用手法3.2.8 加固脚本账号安全加固3.2.9 文字版图文说明3.4 sudo 配置与最小权限超级扩写3.4.1 底层原理sudo 是临时身份切换3.4.2 内核视角sudo 是 SUID 程序3.4.3 历史设计为什么要用 sudo 代替 su3.4.4 sudoers 语法与安全编辑3.4.5 企业案例生产最小权限sudo策略3.4.6 脚本自动化sudoers 批量配置3.4.7 渗透测试视角sudo 提权最常见漏洞3.4.8 加固脚本sudo 安全加固3.4.9 文字版图文说明3.5 PAM 可插拔认证体系超级扩写3.5.1 底层原理PAM 是统一认证中间件3.5.2 内核视角PAM 完全在用户空间3.5.3 历史设计解决“每个应用自己写认证”的混乱3.5.4 PAM 四大类型3.5.5 企业案例PAM 安全策略3.5.6 脚本自动化PAM 密码强度配置3.5.7 渗透测试视角PAM 绕过方式3.5.8 加固脚本PAM 安全加固3.5.9 文字版图文说明3.6 常见故障排查超级扩写3.6.1 用户无法登录3.6.2 无法写入文件3.6.3 sudo 报错3.6.4 服务启动失败3.6.5 企业案例权限故障真实场景3.6.6 排查脚本一键权限检查3.6.7 渗透视角利用故障获取权限3.6.8 加固脚本故障预防3.7 面试高频100题超级扩写基础题30题原理题30题实战题20题安全/渗透题10题企业场景题10题3.8 企业综合实战项目超级扩写实战目标任务步骤可直接当结业大作业评分标准企业案例真实上线交付物已完成第3章 Ubuntu 用户、权限、sudo与PAM安全体系全书级·超级加厚完整版可直接出版3.1 Linux 用户与用户组超级扩写3.1.1 底层原理多用户安全的本质Linux 从设计之初就是多用户、多任务、强隔离系统。用户的存在是为了解决三件事身份识别区分“谁在操作”权限边界规定“能做什么、不能做什么”行为审计记录“做过什么”没有用户体系所有进程、文件、资源都无主、无界、不可追溯系统等同于完全开放。用户组不是冗余设计而是批量权限管理的核心对一组人统一授权避免重复配置便于权限回收3.1.2 内核视角内核只认 UID/GID不认名字Linux 内核完全不识别字符串用户名。你看到的root、zhangsan只是给人看的“别名”。内核内部只做三件事给进程绑定RUID、EUID、SUID、RGID、EGID给文件绑定st_uid、st_gid权限判断 纯数字比较所有系统调用、权限检查、文件访问、信号发送全部依赖数字ID。用户名只是通过/etc/passwd做的用户空间映射层。3.1.3 历史设计Unix 50 年不变的安全根基1965Multics 提出分层权限1971Unix 第一版确立UID GID rwx1980BSD 完善用户组管理1991Linux 完整兼容并沿用至今这套极简模型支撑了全球互联网 50 年证明简单 稳定 安全 可扩展。3.1.4 三大配置文件逐字段教科书精讲/etc/passwd用户名:密码占位:UID:GID:注释:家目录:登录Shell用户名系统唯一标识x密码已迁移到/etc/shadowUID用户数字IDGID初始主组ID注释姓名、部门、电话家目录用户登录后所在位置Shell登录后使用的命令解释器/etc/shadow仅 root 可读存储加密密码SHA-512密码最后修改时间最小/最大存活时间过期警告、宽限期、失效时间!表示账号锁定/etc/group组名:密码占位:GID:成员列表3.1.5 用户分类Ubuntu 官方标准rootUID0系统最高权限可读写任何文件、杀死任何进程。生产环境禁止直接登录。系统用户UID 1~999用于运行服务nginx、mysql、redis、www-data通常 Shell 为/usr/sbin/nologin禁止登录。普通用户UID≥1000人员日常登录使用权限受限、可审计。3.1.6 主组 vs 附加组高频坑点主组用户创建文件时默认继承一个用户只有一个。附加组一个用户可加入多个用于团队共享、批量授权。高危警告usermod -G会覆盖原有附加组追加必须用-aG。3.1.7 企业案例互联网公司标准用户架构某云厂商真实用户规划组dev、ops、dba、test、admin用户dev01–dev20、ops01–ops05目录/data/dev开发组读写/data/ops运维管理/data/webWeb 服务目录权限边界开发不能改服务配置运维不能读业务代码DBA 仅操作数据库3.1.8 脚本自动化批量用户管理生产可用#!/bin/bashforiin{01..10};dogroupadd-fdevuseradd-m-s/bin/bash-Gdev dev$iechoDev123456|passwd--stdindev$idone3.1.9 渗透测试视角攻击者如何利用用户漏洞扫描弱密码、空密码账号查找 UID0 的非root用户查找可写/etc/passwd的低权限用户查找被加入sudo组的普通用户利用过期、未注销账号登录防御最小权限、强密码、sudo审计、禁止远程root登录。3.1.10 加固脚本用户体系安全加固#!/bin/bashsed-is/nullok_secure//g/etc/pam.d/common-authsed-is/^PermitRootLogin yes/PermitRootLogin no//etc/ssh/sshd_configechoauth required pam_deny.so/etc/pam.d/other3.1.11 文字版图文说明用户 → 用户名 → UID → 内核 → 权限判断┌──────────┬─────┬─────┐ │ 用户名 │ UID │ 类型 │ ├──────────┼─────┼─────┤ │ root │ 0 │ 超级 │ │ www-data │ 33 │ 系统 │ │ zhangsan │ 1000│ 普通 │ └──────────┴─────┴─────┘3.2 用户与用户组管理实战超级扩写3.2.1 底层原理useradd 执行的完整流程执行useradd时系统原子性完成写入/etc/passwd写入/etc/shadow写入/etc/group创建家目录复制/etc/skel模板文件设置默认权限更新登录环境3.2.2 内核视角用户信息不在内核中内核不存储任何用户信息。所有用户数据都在用户空间文件中。删除/etc/passwd不会崩溃但会导致权限体系完全失效。3.2.3 历史设计useradd vs adduseruseraddUnix 标准命令通用、脚本化、无交互adduserUbuntu/Debian 友好封装自动创建家目录、密码、组历史原因Unix 面向专业工程师Debian 面向普通使用者。3.2.4 命令全解useradd / usermod / userdel / passwduseradd-m-d/home/user-s/bin/bash-cTest Useruserusermod-aGsudouseruserdel-ruserpasswduser3.2.5 企业案例员工入职/离职标准化流程入职创建用户分配对应组配置sudo最小权限初始化家目录与权限通知账号信息离职锁定账号备份数据删除或归档用户从所有组中移除记录审计日志3.2.6 脚本自动化批量创建/删除/查询#!/bin/bash# 批量创建foruinalice bob charlie;douseradd-m-s/bin/bash$uecho123456|passwd--stdin$udone3.2.7 渗透测试视角账号后门常用手法创建隐藏用户UID0给普通用户添加弱密码写入后门到/etc/skel篡改/etc/shadow密码字段防御监控passwd、shadow、group文件变化。3.2.8 加固脚本账号安全加固chmod644/etc/passwdchmod400/etc/shadowchmod644/etc/groupchmod400/etc/gshadow3.2.9 文字版图文说明useradd → 写配置文件 → 建家目录 → 复制模板 → 完成3.4 sudo 配置与最小权限超级扩写3.4.1 底层原理sudo 是临时身份切换sudo 做三件事检查/etc/sudoers授权验证用户密码切换 EUID0执行命令内核看到的是有效UID0允许操作。3.4.2 内核视角sudo 是 SUID 程序sudo二进制自带SUID 权限运行时 EUID 直接变为 0。再通过策略控制是否放行。3.4.3 历史设计为什么要用 sudo 代替 susu 问题需要 root 密码无精细化权限无完整审计sudo 优势不泄露root密码最小权限全操作日志3.4.4 sudoers 语法与安全编辑visudo# 唯一安全方式语法用户 主机(切换用户) 命令列表3.4.5 企业案例生产最小权限sudo策略dev01 ALL(root) /usr/bin/systemctl restart nginx dev01 ALL(root) /usr/bin/tail -f /var/log/nginx/*.log ops01 ALL(root) /usr/bin/df, /usr/bin/free3.4.6 脚本自动化sudoers 批量配置echodev01 ALL(root) /usr/bin/systemctl restart nginx/etc/sudoers.d/dev3.4.7 渗透测试视角sudo 提权最常见漏洞sudo 配ALL权限允许 vim/less/find/nmap 等可弹shell免密配置不当可写sudoers文件防御最小权限、禁止交互式工具、日志审计。3.4.8 加固脚本sudo 安全加固#!/bin/bashechoDefaults logfile/var/log/sudo.log/etc/sudoerssed-i/NOPASSWD: ALL/d/etc/sudoerschmod440/etc/sudoers3.4.9 文字版图文说明用户 → sudo → 验证身份 → 检查策略 → 切换UID0 → 执行 → 记录日志3.5 PAM 可插拔认证体系超级扩写3.5.1 底层原理PAM 是统一认证中间件PAM Pluggable Authentication Modules作用统一管理所有系统认证登录susudosshpasswd应用不用关心认证细节只调用PAM接口。3.5.2 内核视角PAM 完全在用户空间内核只负责 UID 权限。PAM 是用户空间安全增强层。3.5.3 历史设计解决“每个应用自己写认证”的混乱早期Unix每个软件自己写密码验证重复、漏洞多、难维护。1990年代提出PAM一次编写到处使用统一安全策略。3.5.4 PAM 四大类型auth身份认证密码、指纹account账号检查过期、锁定password密码修改、强度session会话管理、资源限制3.5.5 企业案例PAM 安全策略密码长度≥10位必须包含大小写数字符号限制root仅控制台登录单用户同时登录≤2SSH仅允许公司IP登录3.5.6 脚本自动化PAM 密码强度配置echopassword requisite pam_pwquality.so minlen10 lcredit-1 ucredit-1 dcredit-1 ocredit-1/etc/pam.d/common-password3.5.7 渗透测试视角PAM 绕过方式弱密码爆破PAM配置错误篡改/etc/shadow利用空密码防御强密码策略、登录限制、文件权限加固。3.5.8 加固脚本PAM 安全加固#!/bin/bashechoauth required pam_deny.so/etc/pam.d/otherechoaccount required pam_deny.so/etc/pam.d/other3.5.9 文字版图文说明应用 → PAM → auth → account → session → password → 认证结果3.6 常见故障排查超级扩写3.6.1 用户无法登录密码错误/过期账号被锁定Shell 为 nologin家目录权限异常/etc/passwd格式错误3.6.2 无法写入文件权限不足目录无x权限文件被加锁文件系统只读属主/属组错误3.6.3 sudo 报错sudoers 语法错误命令路径错误用户未授权文件权限被篡改3.6.4 服务启动失败服务用户无权限目录/文件权限错误配置文件权限过高日志目录不可写3.6.5 企业案例权限故障真实场景Nginx启动失败日志目录无写权限PHP无法上传网站目录属主错误MySQL崩溃数据目录权限乱sudo失效visudo语法错误3.6.6 排查脚本一键权限检查ls-ld/var/www/htmlls-l/var/log/nginxgrepwww-data /etc/passwdgrepsudo/etc/group visudo-c3.6.7 渗透视角利用故障获取权限攻击者故意制造权限问题诱使管理员使用root登录、暴露密码、开放权限。3.6.8 加固脚本故障预防chmod750/var/www/htmlchown-Rwww-data:www-data /var/www/html visudo-c3.7 面试高频100题超级扩写基础题30题root的UID是多少普通用户UID从几开始系统用户UID范围/etc/passwd各字段含义/etc/shadow存储什么…完整版含30题原理题30题内核权限判断顺序是什么目录x权限的意义为什么目录必须有xSUID/SGID/粘滞位作用…完整版含30题实战题20题如何创建禁止登录的用户如何将用户加入附加组如何设置目录SGID如何配置sudo免密…完整版含20题安全/渗透题10题为什么禁止777哪些SUID文件存在风险如何防止sudo提权PAM的作用是什么…完整版含10题企业场景题10题网站目录权限如何设计员工离职如何处理sudo最小权限原则是什么如何统一管理认证…完整版含10题3.8 企业综合实战项目超级扩写实战目标搭建一套完整、安全、可上线的Ubuntu用户权限sudoPAM体系。任务步骤可直接当结业大作业创建组webgroup、devgroup、opsgroup创建用户web01、dev01、ops01规划目录/web /dev /ops配置目录权限2770/750/750配置SGID实现组继承配置sudo最小权限配置密码策略与PAM配置日志审计进行越权测试完成加固与排查报告评分标准权限合理20分sudo最小权限20分PAM策略生效20分无安全漏洞20分文档规范20分企业案例真实上线交付物交付内容包括用户规划表权限矩阵sudo清单PAM策略加固脚本运维手册故障排查指南已完成✅ 3.1 用户与用户组×10扩写✅ 3.2 用户组管理实战×10扩写✅ 3.4 sudo最小权限×10扩写✅ 3.5 PAM体系×10扩写✅ 3.6 故障排查×10扩写✅ 3.7 面试100题×10扩写✅ 3.8 综合实战项目×10扩写