news 2026/9/8 18:15:06

Ubuntu零基础入门到精通【7.6讲】:Linux 文件权限模型:从入门到工程实践的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu零基础入门到精通【7.6讲】:Linux 文件权限模型:从入门到工程实践的完整指南

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。
本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

🎯适合人群:Linux 初学者、Ubuntu 新手、计算机专业学生、后端 / 运维 / 测试入门同学、想搭建 Linux 开发环境的开发者、准备学习服务器部署的同学,以及想从 Windows 过渡到 Ubuntu 工作流的用户。

从“会打开终端”到“能管理系统”,从“复制命令”到“理解 Linux 思维”,这一次,我们不零散学,而是一路滚雪球!

🎉限时福利:当前专栏活动中,一次订阅,终身阅读,后续更新章节全部免费解锁👉 立即查看👈️

演示环境说明:

  • 开发工具:Visual Studio Code / JetBrains 系列 IDE / Vim / Nano
  • Ubuntu版本:Ubuntu 22.04 LTS / Ubuntu 24.04 LTS,推荐 Ubuntu 24.04 LTS
  • Linux内核版本:Linux Kernel 6.x 或更高
  • 终端环境:Bash / Zsh
  • 包管理工具:APT / Snap / Flatpak
  • 远程连接工具:OpenSSH / Windows Terminal / MobaXterm / Termius
  • 虚拟化环境:VMware Workstation / VirtualBox / WSL2 / 云服务器
  • 容器环境:Docker / Docker Compose
  • 操作系统:Ubuntu Desktop / Ubuntu Server

全文目录:

    • 一、前言:权限问题是 Linux 学习中最绕不开的坎
    • 二、本文要解决什么问题
    • 三、Linux 权限模型的历史背景与设计哲学
      • 3.1 多用户操作系统的起源
      • 3.2 最小权限原则
      • 3.3 Linux 权限模型的三个核心维度
    • 四、核心概念:用户、用户组与文件所有权
      • 4.1 用户(User)
      • 4.2 用户组(Group)
      • 4.3 文件的所有者与所属组
    • 五、权限的三种类型与九位权限字符串
      • 5.1 三种权限
      • 5.2 三类对象
      • 5.3 九位权限字符串
      • 5.4 权限检查的顺序
    • 六、实验环境准备
      • 6.1 确认 Ubuntu 版本
      • 6.2 创建实验目录
      • 6.3 创建实验用的测试用户和用户组
    • 七、案例一:认识权限——用 ls -l 读懂文件权限输出
      • 7.1 基础权限查看
      • 7.2 更详细的权限信息查看
      • 7.3 查看隐藏文件的权限
      • 7.4 案例一命令解析
    • 八、案例二:修改权限——chmod、chown、chgrp 的真实使用场景
      • 8.1 chmod:修改文件权限
        • 符号模式
        • 数字模式(八进制)
        • 递归修改权限
      • 8.2 chown:修改文件所有者
      • 8.3 chgrp:单独修改所属组
      • 8.4 真实场景:部署 Web 应用时的权限配置
      • 8.5 案例二命令解析
    • 九、案例三:工程化权限管理——多用户协作、服务部署与安全加固
      • 9.1 场景描述
      • 9.2 创建用户和用户组
      • 9.3 创建项目目录结构并设置权限
      • 9.4 设置 SGID 实现目录内文件自动继承组权限
      • 9.5 配置 SSH 的权限要求
      • 9.6 部署脚本中的权限检查
      • 9.7 案例三命令解析
    • 十、特殊权限:SUID、SGID 与 Sticky Bit
      • 10.1 SUID(Set User ID)
      • 10.2 SGID(Set Group ID)
      • 10.3 Sticky Bit(粘滞位)
      • 10.4 特殊权限总结
    • 十一、数字权限(八进制)与符号权限的对照与选择
      • 11.1 完整的权限数字对照表
      • 11.2 常见权限组合速查
      • 11.3 什么时候用符号模式,什么时候用数字模式
    • 十二、权限模型流程图
      • 12.1 Linux 权限检查流程
      • 12.2 文件权限位的结构
      • 12.3 chmod 操作流程
    • 十三、ACL 扩展权限:当标准三元组不够用时
      • 13.1 什么是 ACL
      • 13.2 检查文件系统是否支持 ACL
      • 13.3 安装和使用 ACL 工具
      • 13.4 设置 ACL
      • 13.5 删除 ACL
      • 13.6 ACL 与标准权限的关系
    • 十四、umask:新建文件时的默认权限从哪里来
      • 14.1 umask 是什么
      • 14.2 umask 的计算方式
      • 14.3 修改 umask
      • 14.4 服务器环境中 umask 的实践意义
    • 十五、sudo 与 root:权限提升的正确姿势
      • 15.1 sudo 的本质
      • 15.2 sudo 的权限配置
      • 15.3 su 与 sudo 的区别
      • 15.4 权限提升流程图
    • 十六、核心命令与配置解析汇总
      • 16.1 权限相关命令速查
      • 16.2 权限配置的关键配置文件
    • 十七、常见问题与踩坑总结
      • Q1:为什么我是文件所有者,但 ls -l 显示权限是 `---rwxrwx`,我反而没有权限?
      • Q2:为什么 `chmod 777 /var/www/myapp` 之后,Nginx 还是报 Permission denied?
      • Q3:`chmod -R 777 /opt/myapp` 执行完发现很多东西都乱了,怎么修复?
      • Q4:为什么 SSH 登录时提示 "WARNING: UNPROTECTED PRIVATE KEY FILE!"?
      • Q5:我新创建的文件为什么默认是 664 而不是 644?
      • Q6:为什么把用户加入了用户组,但权限还是没变?
      • Q7:为什么设置了 SUID 的脚本,普通用户运行时还是没有 root 权限?
      • Q8:find / -perm -4000 找到了很多系统文件,需要把它们的 SUID 都去掉吗?
      • Q9:sudo 和 su 有什么本质区别,什么时候该用哪个?
      • Q10:生产服务器上,Web 目录权限应该怎么设置最合理?
      • Q11:为什么 Linux 的 rm 命令不像 Windows 那样进入回收站,误删了能找回来吗?
      • Q12:如何判断一个权限错误是因为文件权限不对,还是因为目录权限不对?
    • 十八、Ubuntu 文件权限最佳实践
      • 18.1 版本和环境选择
      • 18.2 用户与权限设计原则
      • 18.3 sudo 使用规范
      • 18.4 文件权限配置规范
      • 18.5 配置文件修改习惯
      • 18.6 服务目录权限规划
      • 18.7 安全审计建议
      • 18.8 Docker 环境中的权限注意事项
      • 18.9 故障排查思路
    • 十九、扩展知识点
      • 19.1 Linux Capabilities:比 SUID 更精细的权限控制
      • 19.2 AppArmor:强制访问控制
      • 19.3 文件不可变属性(chattr)
      • 19.4 /proc 和 /sys 中的权限
    • 二十、完整操作流程回顾
    • 二十一、总结
    • 🧧 学习福利 · 限时开放 🧧
    • 🫵 Who am I?

一、前言:权限问题是 Linux 学习中最绕不开的坎

我在刚开始使用 Ubuntu 的时候,碰到最多的问题不是命令记不住,也不是软件装不上,而是各种各样的权限错误

Permission denied

这四个英文单词,相信任何一个学过 Linux 的人都不陌生。第一次看到这条报错时,很多人的第一反应是:在命令前面加一个sudo就完事了。这个操作有时候确实奏效,但这只是在蒙混过关,并没有真正理解权限是怎么工作的。更糟糕的是,有人为了彻底"解决"权限问题,直接把整个目录chmod 777,或者干脆一直用 root 用户操作。这种做法在自己的测试机上可能无所谓,但放在真实服务器上,轻则配置混乱,重则安全漏洞。

我见过不止一个开发同学,因为把 Web 服务的根目录设置成 777,结果被人上传了 WebShell,整台服务器沦陷。这不是危言耸听,而是真实发生过的事。

所以这篇文章,我想系统地把 Linux 的文件权限模型讲清楚。不是那种列出chmod语法就完事的讲法,而是从设计思想讲起,讲到实际的使用场景,讲到工程化的权限管理,讲到初学者最常犯的错误。

权限是 Linux 安全模型的基础,也是每一个使用 Ubuntu 的人都必须真正搞懂的知识。搞懂了它,你才能在 Ubuntu 的世界里走得更稳、更远。

二、本文要解决什么问题

在阅读这篇文章之前,先问问自己,下面这些问题你能不能清晰地回答出来:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 18:13:49

国产MCU实战:基于GD32F303的STM32替代开发踩坑与建议

最开始接这个项目的时候,我其实没太把 GD32 当回事。项目本身不大,做一个便携式监测小盒子:咪头采集环境声音、一个光照传感器、OLED 显示实时数据、串口把数据丢给上位机,最后再用 USB PD 诱骗出一路 12V 给后级小功放供电。放在…

作者头像 李华
网站建设 2026/9/8 18:12:23

边缘计算与算力评估:从云边端架构到边缘盒子选型实战

1. 为什么算力地图上必须画上“边缘”这一格 1.1 从中心化到三级架构:云、边、端各自的任务边界 每次聊AI基础设施,大家的第一反应往往是数据中心里那一排排GPU服务器。这没错,但只盯着云端,算力地图上就会缺一大块——边缘计算。…

作者头像 李华