linux文件权限
无规矩不成方圆
前期网络中,各种数据的传递、协议的交互都存在规矩。
操作系统内,对文件的操作权限同样有着井然有序的规矩。
linux系统内,root 拥有操作系统层面的最高控制权。
一、普通文件权限
二、目录/文件夹权限
三、linux内文件权限表示方法
四、权限的十进制表示方法
五、实战
六、实战翻车
在linux里,读-r 写-w 执行-x 是针对普通文件和目录的三种不同权限。

一、普通文件权限
1)读 (r - Read)
含义:允许你查看文件的内容。
能做什么:你可以用 cat、less、more 等命令查看,或者用编辑器打开读取。
不能做什么:你不能修改它,也不能运行它(除非也有执行权限)。
2)写 (w - Write)
含义:允许你修改、删除文件的内容。
能做什么:你可以用编辑器(如 vim)修改并保存,或者用 echo "内容" > 文件 覆盖内容,也可以用 rm 删除该文件。(像windows用txt文本工具编辑文件)
注意:只要拥有写权限,哪怕文件里没有内容,你也可以把它清空。
3)执行 (x - Execute)
含义:允许你把该文件当作一个程序或脚本来运行。
能做什么:如果是一个脚本(如 .sh)或二进制程序(如 .exe 的 Linux 对应版),你可以直接在终端输入路径来运行它(例如 ./script.sh)。
注意:对于普通的文本文档(如 .txt),给执行权限通常没有实际意义。
误区一:能写一定能读
linux有个工具echo,可将内容直接写入到普通文件内,而不需要打开文件,不需要知道里边的内容。
误区二:能执行一定能读
个人理解,文件的各种权限都是针对使用者(系统内的用户),而不是针对底层的各种硬件。
像windows的system内很多文件,随系统运行,但我们无权查看文件内的数据或代码。
linux内同理,可运用各种工具把可执行文件加载到内容供cpu执行,但我们不知道它执行的啥代码。
事实上,能执行的基本都能读,毕竟linux是开源的。不能读的反而出了问题(见-六、实战翻车)
二、目录/文件夹权限
上次讲过,目录本身其实也是一个文件,只是文件内又含其他文件。
1)读 (r - Read)
含义:允许你查看目录里有哪些文件(即列出目录清单)。
能做什么:你可以使用 ls 命令看到目录下的文件名列表。
限制:如果你只有 r 而没有 x,你只能看到文件名,但无法进入该目录,也无法查看文件的详细信息(如文件大小、权限等)。
2)写 (w - Write)
含义:允许你在该目录下创建、删除、重命名文件。
能做什么:你可以使用 touch 新建文件,mkdir 新建文件夹,rm 删除里面的文件,mv 重命名文件。
关键点:只要你对目录有写权限,哪怕你对目录里的某个文件没有写权限,你依然可以删除那个文件!(因为删除文件是修改了目录的结构,而不是修改文件本身的内容)。
依赖:通常需要配合 x 权限才能生效。
3)执行 (x - Execute)
含义:允许你进入该目录(也叫搜索权限)。
能做什么:你可以使用 cd 命令进入该目录。更重要的是,它是你访问目录下具体文件信息的“通行证”。
限制:如果你只有 x 而没有 r,你可以 cd 进去,也可以访问里面已知名字的文件(比如 cat /dir/file.txt),但你无法使用 ls 列出里面到底有哪些文件(因为你不知道名字)。
三、linux内文件权限表示方法

①文件类型。-普通文件,d目录,l链接文件,b、c设备文件
②所有者权限
③所属组权限
④other其他人权限
⑤链接数。普通文件表示硬链接数量,目录表示子目录个数
⑥所有者
⑦所属组
⑧目录文件本身占用大小,通常4096
⑨最后一次修改时间
⑩文件名&目录名
四、权限的十进制表示方法
为了省略一连串的r、w、x,方便表示,通常用十进制数字代替表示用户权限。

如果一个文件对应的用户只有读r和执行x的权限,那么可以简写“5”(4+1的结果)。
十进制数字相互加的结果只能有 7、6、5、4、3、2、1、0。权限对同一文件只能赋予一次,结果相互之间也不会有重复。(没有任何权限用0表示)

对应到第三节示例中第一行,所有者权限、所属组权限、other其他人权限可以表示成775。
第二行可以表示成700。
700这个权限,反映出了文件权限匹配的流程。
(类似网络ACL中,当一条流量同时符合多条规则时,系统会优先选择 IP 掩码最长(最精确)的那条规则来执行)。
linux检查权限时,是按照 “用户(User) -> 用户组(Group) -> 其他人(Others)” 的顺序。
通常,文件所有者拥有绝对权限,所有者所属的用户组却没有任何权限。
五、实战
实践是检验真理的唯一标准
①用户有读、写权限,没有执行权限。默认用文本编辑器打开。

②用户有读、写权限,有执行权限。
(有读,没有写,有执行,也可以作为程序正常运行)
右键>>作为程序运行


六、实战翻车
只有执行权限,没有读写,却无法执行,为什么呢?
AI也是明显的胡说八道……



学习嘛,就是要不断发现问题和探索未知…………