学习Unix环境编程遇到的问题2: 删除一个目录下的特定文件,最少需要哪些权限?
其实,我对目录文件权限一直不太明白。
我是这样理解,如有不对,希望指正。
目录就是就是文件,里面存放这一些条目, 每条条目记录该目录下文件或目录的名字和一个地址(指向描述文件的信息)。
在Unix下应该是可以用od -cb
命令来查看目录的内容,会看到一些名字或其他一些不能解释为ASCII码的东西 (应该就是地址信息)。但是,我在Linux上尝试,却不能执行了。
当前目录为test
, 文件test/text
根据以上的描述,删除 test/text 文件,只需要test目录有w
权限即可,执行命令rm test/text
, 但是事实上却不可以。
通常来说,删除文件需要你拥有文件所属文件夹的所有权限,等价于读r写w执行x。
首先是进入这个文件夹需要x权限,然后读取文件夹内容需要r权限,最后是删除文件,由于文件属于上级文件夹的一部分,所以需要对文件夹有w权限。删除过程是会进入文件夹,只是在系统内部执行的,而自己默认是看不见的,所以还是需要x权限。