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

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

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

我想实现这样的目标:

$ 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

答案1

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

chmod -R +X .

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

chmod -R u=rwX,g=rX,o= .

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

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

它也应该可以在其他类 Unix 系统上运行,例如FreeBSD网络BSD或者OpenBSD. 引自chmod(1)The Open Group Base Specifications 第 7 期,2018 年版的手册页:

Xperm 符号是从基于 BSD 的系统中采用的,因为它在执行递归时提供了通常需要的功能(-R选项)修改。寻找实用程序。历史 BSD 版本修改模式然而,仅支持X操作+;它已在 POSIX.1-2017 卷中得到扩展,因为它也适用于操作=。(还添加了操作- 即使它重复X,在这种情况下,因为它更直观并且更容易解释。)


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

答案2

如果你想以递归方式执行此操作,IE,对于目录中的目录内的目录,要使用的命令是:

 find /path/to/starting/directory -type d -exec chmod +x {} \;

这将定位所有且仅定位子目录(类型 d目录 /path/to/starting/directory 的 _path_to_starting_directory_path 标志,然后对每个目录执行所需的执行权限更改。\;是强制性的。

答案3

您是否尝试过类似这样的事情:

chmod +x $(ls -p | grep /),这将添加仅目录的执行权限

如果您想授予文件和目录执行权限,只需执行以下操作:

chmod +x *并删除文件执行的权限,请尝试以下命令:

chmod -x *.*

希望有帮助

答案4

chmod -R u=rwX,g=rX,o= .

大写X表示只有在其他地方已经设置时才会设置。由于所有目录对于用户来说都是可执行的,因此它们对于组来说也是可执行的。由于文件对于用户来说不是可执行的,因此它们对于组来说也不是可执行的。

使用chmod +X将产生大致相同的效果,只是当它授予执行权限时,它会授予用户、组和其他人执行权限。

相关内容