递归移除目录写入权限后子目录图标无挂锁的问题咨询
这问题挺有意思的,我之前也碰到过类似的情况,咱们来拆解一下Nautilus显示锁图标的逻辑和你用chmod命令后的权限变化:
Nautilus的锁图标不是单纯看目录自身的权限,而是结合当前用户对目录的实际操作限制,以及它所在父目录的权限来判断的。锁图标的核心作用是提示你:「你能看到这个目录,但没法在里面创建/删除文件,或者没法重命名、删除这个目录本身」。
当你执行
chmod --recursive a-w myDirectory后,myDirectory本身的权限被移除了所有用户的写入权限(权限位变成r-xr-xr-x)。这时候你作为普通用户,既没法在myDirectory里添加、删除任何内容,也没法重命名或删除myDirectory本身,所以Nautilus给它加上了锁图标,直观提示这个限制。而对于
myDirectory里的子目录,情况就不同了:虽然子目录自身也被移除了写入权限,但你要修改这些子目录的「存在」(比如重命名、删除它们),需要的是父目录myDirectory的写入权限——而你已经没有这个权限了。也就是说,不管子目录自身权限如何,你都没法对它们做重命名、删除操作,Nautilus觉得不需要在子目录图标上重复显示锁图标,因为父目录的锁已经说明了整个目录结构的操作限制。还有个小细节:如果你进入某个子目录,会发现子目录的窗口或者侧边栏的目录项上会显示锁图标,因为这时候Nautilus判断的是你对当前所在目录的写入权限——你没法在这个子目录里创建或删除文件,所以会给出锁的提示。但在父目录里查看子目录图标时,Nautilus优先参考的是父目录的权限限制。
备注:内容来源于stack exchange,提问作者H2ONaCl

