文件和目录的权限表面看很简单,但真正弄懂还是得花点心思。
此文部分语句来自《鸟哥的Linux私房菜 第三版》,可能有理解不对的地方,还请各位路过的神仙指正。
文件权限比较简单,但有几点也需要特别注意:
r:读权限,指文件的具体内容,比如说文本文件里面写了些什么。这里“读”的内容不包括文件的属性,比如大小、修改日期、权限等。因为那不属于文件内容。
看具体例子,以test.pl为例:
有文件的读权限,但是无法查看其属性:
没有文件的读权限,照样可以查看其属性:
由此可见,文件属性的查看并不是由文件自身的权限设置决定的。具体由什么决定,仔细看上面两张图的对比就可以看出来了,看不出来就看下文。
w:写权限,编辑,修改或者新增文件的内容,但是不含删除该文件。(由父目录的w权限决定)
x:执行权限。但拥有了文件的执行权限并不意味着一定可以执行文件,还得看是否拥有父目录的x权限
总之,对于文件的r、w、x来说,主要都是针对“文件的内容”,与文件名的存在与否没有关系。因为文件记录的是实际的数据(相对于目录)。
目录的权限:
相对于文件是记录的实际数据,目录主要记录的内容是文件名列表。
r(read contents in directory):读取目录结构列表。比如ls、find之类。可查看文件名,文件的属性就不一定可以看了,还得得看目录的x权限。
w(modify contents of directory):修改目录结构列表的权限。包括:新建文件、目录,删除文件、目录(而且无视其权限),重命名文件、目录,移动文件、目录。
比如一个普通用户拥有一个目录的w权限(同时也要拥有目录的x权限),即便是该目录下有root的文件,也可以照删不误:
x(access directory):意为用户是否可以进入该目录,以此目录作为工作目录。不具有某一目录的x权限,就无法切换到该目录下,该目录下的任何文件也不能被查看、修改、执行、删除。(最多只能看到文件名,前提是有父目录的r权限)。《鸟》书是这样说的。但我自己做实验时发现,只要没有目录的x权限,除了可以看该目录下的文件名(仅文件名而已),其他的所有操作就甭想了。不举例了,有疑惑自己做实验证实。
嗯,目录的x权限还是有待深究,今天有点晚了,周末研究一下,补充上来