我正试图找到一种方法,为特定路径上的目录和子目录递归设置700权限,为文件递归设置600权限。我会使用以下命令:
find /path -type d -print0 | xargs -0 chmod 700
find /path -type f -print0 | xargs -0 chmod 600
但是用户没有权限运行";查找";命令作为一种变通方法,我尝试制作一个脚本,其中包含来自设置了setuid粘性位的root用户的上述命令,以便它可以使用root权限运行(就像普通用户使用root权限执行的passwd或sudo命令):
chmod 4755 script.sh
但我无法从有限的用户帐户执行脚本,它仍然表示我没有运行find命令的权限。
有人知道我如何在不使用find
命令的情况下实现这一点吗?
编辑:操作系统:Centos 6.5
显然这很容易实现。有两种方法:仅使用chmod,或在所需路径上设置ACL(访问控制列表):
- 使用chmod,我将运行:
chmod -R 600 /path # to remove executable permissions chmod -R u=rwX,g=,o= /path # to make directories transversable
对于用户所有者,我将给予资本";X〃;,因此它只适用于目录而不适用于文件。
-
使用ACL:
setfacl -Rm u::rwX,g::0,o::0 /path setfacl -Rm d:u::rwX,g::0,o::0 /path
再次使用大写X
,因此它仅适用于目录而不适用于文件。第一个命令应用ACL,第二个命令使其成为默认策略,这样新创建的文件将继承所需的权限。