如何递归设置权限,700用于文件夹,600用于文件,而不使用find



我正试图找到一种方法,为特定路径上的目录和子目录递归设置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,第二个命令使其成为默认策略,这样新创建的文件将继承所需的权限。

最新更新