授予目录执行权限但不授予文件执行权限

Dan*_*iel 10 linux bash chmod file-permissions

我有一个包含文件和目录的目录结构,我喜欢分配权限,因此所有文件和目录都具有用户的读写权限和组的读取权限,此外还有目录的执行权限。

我想实现这样的目标:

$ ls -l
total 16
-rw-r----- 1 daniel daniel    0  5? 23 16:20 1
-rw-r----- 1 daniel daniel    0  5? 23 16:20 2
-rw-r----- 1 daniel daniel    0  5? 23 16:20 3
-rw-r----- 1 daniel daniel    0  5? 23 16:20 4
-rw-r----- 1 daniel daniel    0  5? 23 16:20 5
drwxr-x--- 2 daniel daniel 4096  5? 23 16:00 a
drwxr-x--- 2 daniel daniel 4096  5? 23 16:00 b
drwxr-x--- 2 daniel daniel 4096  5? 23 15:59 c
drwxr-x--- 2 daniel daniel 4096  5? 23 15:59 d
Run Code Online (Sandbox Code Playgroud)

Cri*_*itu 19

要授予目录执行(搜索)权限,但不授予文件执行(搜索)权限,请使用:

chmod -R +X .
Run Code Online (Sandbox Code Playgroud)

要按照示例分配所有权限,请使用:

chmod -R u=rwX,g=rX,o= .
Run Code Online (Sandbox Code Playgroud)

-R递归更改文件和目录,而+X仅当文件是目录或已对某些用户具有执行权限时才设置执行/搜索。rw当然分别用于阅读和写作。

模式X x)记录在传统手册页1信息文档2 中

它也应该适用于其他类 Unix 系统,例如FreeBSDNetBSDOpenBSD。引用来自The Open Group Base Specifications Issue 7, 2018 版的chmod(1)手册页:

X,因为它提供在做递归(当通常期望的功能性烫发符号是从基于BSD的系统采用-R选项)修饰。find实用程序不提供类似的功能。然而,历史 BSD 版本的chmod仅支持带有op + 的X;它已在 POSIX.1-2017 的这一卷中进行了扩展,因为它对op =也很有用。(它也已添加到op - 即使它重复了x,在这种情况下,因为它直观且易于解释。)


1 man 1 chmod
2 info '(coreutils)Conditional Executability'