当我尝试在Linux下模拟权限系统时,出现了一些奇怪的事情。
我通过用户'normal'创建了一个目录'main',并使用root创建了目录'aha',其权限为700。
所以'main'的所有者是'正常',如果权限是755,我可以删除'aha'只是使用'普通'用户,虽然它的所有者是root。
但是当我把文件放在'aha'中时,一切都改变了。由于其中仍有文件,我无法删除'aha'。
所以,我的问题是,既然'aha'是700根,那么'正常'怎么能知道它是空的呢?
我的进一步问题是:目录的读取权限究竟是什么意思?
答案 0 :(得分:2)
将UNIX目录视为库目录中索引卡的抽屉。
为了了解哪些书籍,您需要阅读“抽屉”的许可。为了创建或删除新的“书籍”,您需要写入权限(这使您能够放置新卡或从抽屉中删除现有卡)。为了将目录“遍历”到较低级别的“子抽屉”,您需要对抽屉本身具有执行权限。
如果您已经知道book / foo / bar / baz存在,则不需要/
,/foo
或/foo/bar
的读取权限,但您确实需要执行权限所有这些。
给定的书可以在相同或单独的“抽屉”(即硬链接)中由多个“卡片”引用。
“卡片”可以引用另一张卡片(即符号链接)。符号链接可能变成“悬空”(如果另一张卡被删除)。
当任何抽屉中的任何卡片都没有引用某本书时,它会从图书馆“蒸发”。
因为'aha'是root的700,所以'正常'怎么能知道它是空的
嗯,一种方法是尝试删除它。如果你成功了,那一定是空的。如果它不是空的,“正常”不能再找出,因为“正常”无法读取目录,因此无法找到该“抽屉”中有多少张卡,或者它们被称为什么
更新
为什么需要执行权限来遍历目录。
因为这是目录的eXecutable位的定义。由于您无法合理地执行目录,否则会浪费该位。不,.
和..
文件与执行位没有任何关系。
答案 1 :(得分:1)
基本上700的文件/目录权限不是七百但实际上是
这些数字属于权限级别
您添加权限级别以分配多个权限,例如
$ chmod 754 foo
给予所有者完全访问权限(1 + 2 + 4),执行'n'读取组(1 + 4),并读给大家(4)看看
了解更多信息