最近一直在学习linux,对文件和目录的权限有了新的认识,感觉想要理清楚还是需要花点心思的。
注意:1.以下的情况只针对文件或目录的所有者(u)来说;2.只针对ext4文件系统
在了解之前先说一下新建、删除、修改文件在系统底层是如何运行的。磁盘分两部分来存放文件的,其中一部分存放的是文件的属性(元数据)比如:文件大小、修改日期、权限等,另一部分才是数据内容。当新建一个文件时会对应创建它的元数据,还会给文件分配一个节点号(inode)。当要查找这个文件时,是先找到对应的节点号,再通过节点表去数据存储区域找到数据反馈给用户。当执行删除文件时,其实是把数据块放到空闲列表中,数据不会马上被删除,但当另一个文件使用数据块时将被覆盖。
首先来说一下文件权限,相对来说比较简单易懂。
r:读权限,指文件的具体内容,比如说文本文件里面写了些什么。这里“读”的内容不包括文件的属性,比如大小、修改日期、权限等,也就是上面提到的元数据。因为那不属于文件内容。
w:写权限,编辑,修改或者新增文件的内容,但是不含删除该文件。(由父目录的w权限决定)
x:执行权限。但拥有了文件的执行权限并不意味着一定可以执行文件,还得看是否拥有父目录的x权限。
总之,对于文件的r、w、x来说,主要都是针对“文件的内容”,与文件名的存在与否没有关系。因为文件记录的是实际的数据(相对于目录)。
目录的权限:(目录也就是文件夹,也是一种特殊的文件)相对于文件来说记录的是实际数据,目录主要记录的内容是文件名列表。
r:读取目录结构列表。比如ls。可查看文件名,文件的属性就不一定可以看了,要想看文件属性还得文件的父目录有x权限。
w:修改目录结构列表的权限(而且无视列表文件的权限)。包括:新建文件、目录,删除文件、目录,重命名文件、目录,移动文件、目录。比如一个普通用户拥有一个目录的w权限(同时也要拥有目录的x权限),即便是该目录下有root的文件,也可以照删不误。
x:意为用户是否可以进入该目录,比如cd。以此目录作为工作目录。如果不具有某一目录的x权限,就无法切换到该目录下,该目录下的任何文件也不能被查看、修改、执行、删除。(最多只能看到文件名,前提是有父目录的r权限)。
转载于:https://blog.51cto.com/12630492/2151797