使所有文件夹对“其他人”不可读 - 但保持其关于“写入”和“执行”的原始状态

使所有文件夹对“其他人”不可读 - 但保持其关于“写入”和“执行”的原始状态

结论:如何更改计算机中所有文件夹的权限,以便对于“其他”文件夹,这些文件夹仅失去可读性?换句话说,它们保留其“写入”和“执行”状态,但失去“读取”的可能性(如果它们一开始就有这种可能性的话)?

长版本:首次配置服务器(用户可以通过 SSH 访问)时,我的第一个想法是尝试找出如何创建仅允许访问自己的home/username文件夹和子文件夹的新用户。

不过,我找到了一些参考资料(例如这个问题/答案) 在线解释说这可能不是一个好主意,因为用户当然需要仍然访问一些系统文件夹,如usr/binusr/lib,并写入文件夹,如tmp。当然,这确实有道理。然后,我试图实现的是让用户能够使用系统文件夹中有但不存在的内容它们的内容。

更具体地说,这意味着将系统中的所有文件夹设置为“其他人”无法读取,但在可写性和可执行性方面仍保持其原始状态为“其他人”。例如,具有权限的文件夹754将变为750,具有 的文件夹756将变为752,具有 的文件夹755将变为,等等,而具有、或的751文件夹将保持不变。等等。753752751750

这样,除了根用户之外的任何人都无法看到除其home/username文件夹和子文件夹之外的任何文件夹内的内容,但她仍然可以在最初允许的所有系统文件夹中正常执行和写入。

我如何才能对所有文件夹执行此操作?当然也欢迎对这个想法可能存在的缺陷提出评论。

答案1

find /path/to/directory/ -type d -exec chmod o-r {} \;

应该可以工作。对于每个文件夹,find执行chmodchmod然后删除其他文件夹的读取位。

答案2

只有内核本身打开的二进制对象才可以标记为可执行但不可读。任何类型的脚本(bash、python 等)都必须先读取才能执行。请参阅:

相关内容