我应该对文件夹应用什么权限,以便每个人都可以看到层次结构和其中的所有文件,但他们不能读取和写入它们。该文件夹可以包含多个包含文件的其他文件夹。
答案1
列出目录使用可执行位,我认为读取实际上根本不会影响目录。您必须设置每个文件的权限,以防止读取或写入它们。以下命令将为您完成所有这些操作,从您希望从中开始的文件夹执行它们:
find . -type d | xargs chmod o=rx
find . -type f | xargs chmod o=
find
将以递归方式查找文件 ( -type f
) 和目录 ( -type d
) 并打印它们的名称(缺少其他指定的操作),然后通过管道传输到xargs
,后者使用从管道读取的文件执行其参数。 chmod
将其他人的权限( ,意味着您或拥有该文件的组中的其他人都没有)更改为文件夹的权限o
完全为 ( =
) 读取/列出 ( rx
),而对普通文件没有任何权限。
正如 grumbel 在评论中指出的那样,这只适用于表现良好的名称。要获得所有这些名称,请使用他的解决方案:
find . -type d -print0 | xargs -0 chmod o=rx
find . -type f -print0 | xargs -0 chmod o=
或者 find 的内置函数-exec
:
find . -type d -exec chmod o=rx '{}' ';'
find . -type f -exec chmod o= \{\} \;
请注意,您可以像第一行一样引用括号和分号,也可以像第二行一样将它们转义,但它们必须放在单独的参数中。此外,-exec
将为每个文件执行一次 chmod,而 xargs 将使用尽可能少的命令执行此操作(基于最大命令行长度)。这就是我通常更喜欢 xargs 的原因。
答案2
sudo chown -R username:root "/directory you want"
-R
表示其所有子目录和文件的递归。
用户名-当前用户
它有助于读/写/执行权限