Linux 文件权限介绍。在 Web 开发中,我们的很多服务需要部署到服务器上,而服务器几乎都是 Linux 系统。如果对 Linux 的文件系统没有清晰地认识,在遇到使用 Web 服务器(如 Nginx)时在搜索引擎上检索找到解决方法,但却不知道具体的原理,那么下一次依旧是花费大量的时间去解决类似的问题。如果你对 Linux 文件权限有一定的了解,那你完全能在几秒内解决遇到的绝大多数配置问题。
Linux 是一款开源的类 UNIX 操作系统。因为它是免费的、可以获得和修改源码、稳定性很好、且有着良好的软件生态,几乎所有服务器都会首选。本文将深入分析 Linux 的文件权限的细节,尝试让读者能够快速理解 Linux 的不同权限设置下的效果,如何更细粒度地进行权限控制。
本文不讲解侧重命令的使用,聚焦于概念的深挖。
文件权限

文件权限会分给三类角色,分别是用户、用户组和其他人。用户和用户组由文件的元信息指定,通过 ls -l filename 可以知道文件的拥有者和文件所属用户组。而其他人则是既不是用户也不再用户组的其他角色。每类角色都会提供 rwx 三个细粒度的权限。下面来说明一下 rwx 的内容。
使用 ls -l 命令可以查看目录下文件的元信息。其中第一栏为文件权限、第三栏拥有者、第四栏为所属用户组
按类型分类
文件的 rwx:
- r:读取文件的内容
- w:编辑文件的内容
- x:执行文件的权限,拥有这。(Linux 中文件是否可执行与后缀名无关)。Linux 的全局命令,其实就是运行特定目录下的同名可执行文件。
目录的 rwx:
- r:可以查看目录下的文件名数据,其他数据(比如其下文件的权限数据)无法获得
- w:改动该目录结构列表的权限。如修改其下文件的名字、删除其下文件或目录。其实就是调整目录树的权限
- x:能否将当前目录设置当前目录。如果没有这个权限,你就无法查看其下文件内容,也无法新增或删除(w)其下的文件。如果没有 x 权限,w 权限也就无法使用
目录的权限有点复杂,或许我们可以试试用类比的方式来理解它。--- 是一个盖上了黑布的上了锁的玻璃盒子,你看得到它,但你什么都不能做。你想看看里面有什么东西,于是你拿掉了黑布(+r,变成 r--),然后你看到了里面有一些笔记本,上面写了笔记本的名字,此外还有一些其他的盒子。为了看看其中一本笔记本写了什么东西,你用钥匙打开了锁(+x,变成 r-x),然后看看那本笔记本。发现它只是用完的草稿本,你决定将它丢掉,但你发现笔记本上挂了条绳子,连在盒子上,你丢不掉。于是你把它和其他笔记本的绳子都顺手用剪刀剪掉了(+w,获得调整目录树结构权限,变成 rwx),然后你成功地将那本草稿纸丢进碎纸机里被粉碎掉。
一些容易犯错的点
(1) 文件有 w 权限,说明可以修改文件名
错。文件的 w 只代表可以修改文件的内容,要修改文件名,需要用户对文件所在目录有 w 和 x 权限。
(2) 目录有 w 和 x 权限,说明可以删除其下的任何文件和子目录
可以删除任意文件,但子目录不一定可以。因为要删除子目录,首先要删除子目录的下的文件和目录。首先你需要对子目录有 w 和 x 的权限才行。