Linux文件系统设计思想_目录与权限结构解析【教程】
发布时间 - 2025-12-30 00:00:00 点击率:次Linux文件系统设计基于进程视角、最小权限原则和跨设备一致性,/、/usr、/var 分离以支持只读根、升级隔离与共享;权限检查是全链路的,目录x权限决定路径可达性,删除由父目录w/x控制而非文件自身权限。
Linux 文件系统不是靠“目录树好看”或“权限好记”设计的,而是围绕进程视角、最小权限原则和跨设备一致性这三件事展开的。理解这点,才能看懂为什么 /bin 和 /usr/bin 要分开,为什么 root 用户删不掉某些普通文件,以及为什么 chmod 777 常常解决不了问题反而引发新问题。
为什么目录结构要分 /、/usr、/var 而不是全塞进一个大目录?
这是为了支持只读根文件系统、系统升级隔离和多主机共享。早期 Unix 就把“不变的”(如内核模块、命令二进制)和“可变的”(如日志、缓存、用户数据)物理分离。
-
/下只保留启动必需项:/bin(基础命令)、/sbin(系统管理命令)、/etc(本地配置)、/dev(设备节点)——这些必须在 rootfs 挂载时就可用 -
/usr是“shareable, read-only”的代名词:它本意是 “Unix System Resources”,现在存放绝大多数命令(/usr/bin)、库(/usr/lib)、头文件(/usr/include),可被多个机器 NFS 共享且挂为只读 -
/var专管运行时变化:日志(/var/log)、包管理数据库(/var/lib/dpkg或/var/lib/rpm)、邮件队列(/var/spool)——这些必须可写,且不能放在/usr里破坏其只读语义
现代发行版(如 systemd 的 initramfs)仍依赖这种划分:如果把 systemctl 放进 /usr/bin,而 /usr 是延迟挂载的,就得靠 initramfs 提前把它 bind-mount 进来,否则系统起不来。
ls -l 输出里那串 drwxr-xr-x 到底控制什么?
这不是“读/写/执行”三个权限的简单叠加,而是三组独立判断逻辑,每组对应一类主体(owner/group/others),且对目录和文件含义不同。
- 对文件:
r表示能否用cat/open()读内容;w表示能否write()修改内容;x表示能否被execve()执行(与文件后缀无关) - 对目录:
r表示能否readdir()(即ls列出文件名);w表示能否在该目录下unlink()/mkdir()(即增删改文件名);x表示能否chdir()进入或通过该目录访问子路径(没有x就算有r也ls不出内容) - 删除文件实际由父目录的
w和x决定,跟文件自身的权限完全无关 —— 这就是为什么普通用户能删自己创建的文件,但删不掉别人chmod 000的文件(只要父目录没给w)
为什么 chmod 777 经常不管用,甚至让服务起不来?
因为 Linux 权限检查是“全链路生效”,任意一级缺失都会中断。常见失效场景根本不在目标文件本身。
- Web 服务器访问
/var/www/html/index.html失败?先检查/、/var、/var/www、/var/www/html每一级的x权限 —— 缺一个,路径就走不通 - SSH 登录提示
Authentication refused: bad ownership or modes?是因为~/.ssh/authorized_keys所在目录(~/.ssh)或用户家目录(~)的权限太宽松(比如group或others有w),OpenSSH 主动拒绝加载 - 容器里挂载宿主机目录后程序报
Permission denied?很可能是挂载时用了noexec或nosuid选项,或者 SELinux/AppArmor 策略拦截,此时改chmod完全无效
ls -ld / /var /var/www /var/www/html # 必须每一级都有 x(对其他用户至少是 --x 或 -x-) # 如果某一级是 drw-r--r--,那后面全白搭
真正难的不是记住权限数字,而是意识到:Linux 的权限模型里,路径是资源,目录是接口,文件是数据,三者权限职责完全不同。错把目录当容器、把文件当入口,是绝大多数权限问题的根源。
# linux
# html
# app
# unix
# 系统升级
# 为什么
# include
# 接口
# var
# 数据库
# ssh
# 文件系统
# 链路
# 这是
# 起不来
# 都有
# 是因为
# 专管
# 放在
# 多个
# 删不掉
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
HTML 中如何正确使用模板变量为元素的 name 属性赋值
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
怎么用AI帮你为初创公司进行市场定位分析?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
装修招标网站设计制作流程,装修招标流程?
详解Huffman编码算法之Java实现
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
如何在景安云服务器上绑定域名并配置虚拟主机?
如何在新浪SAE免费搭建个人博客?
Laravel如何使用Blade组件和插槽?(Component代码示例)
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
企业网站制作这些问题要关注
java获取注册ip实例
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何快速搭建高效服务器建站系统?
如何在局域网内绑定自建网站域名?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
javascript如何操作浏览器历史记录_怎样实现无刷新导航
Laravel如何处理文件下载请求?(Response示例)
Swift开发中switch语句值绑定模式
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
Laravel中的withCount方法怎么高效统计关联模型数量
如何快速生成橙子建站落地页链接?
如何确保西部建站助手FTP传输的安全性?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
大连 网站制作,大连天途有线官网?
C#如何调用原生C++ COM对象详解
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
Laravel集合Collection怎么用_Laravel集合常用函数详解
Python文件流缓冲机制_IO性能解析【教程】
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
网站页面设计需要考虑到这些问题
Mybatis 中的insertOrUpdate操作
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
详解vue.js组件化开发实践
在线制作视频的网站有哪些,电脑如何制作视频短片?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程


ar/www/html
# 必须每一级都有 x(对其他用户至少是 --x 或 -x-)
# 如果某一级是 drw-r--r--,那后面全白搭