如何递归设置权限,文件夹为700,文件为600,不使用查找

时间:2016-04-11 16:01:37

标签: linux permissions find chmod setuid

我正试图找出一种方法来为特定路径上的dirs和subdirs递归设置权限700,为文件设置600。我会使用这些命令:

find / path -type d -print0 | xargs -0 chmod 700

find / path -type f -print0 | xargs -0 chmod 600

但是用户没有权限运行“find”命令。 作为一种解决方法,我尝试使用setuid sticky bit设置包含来自root用户的上述命令的脚本,以便它将以root权限运行(例如普通用户以root权限运行的passwd或sudo命令):

chmod 4755 script.sh

但是我无法从受限用户帐户执行脚本,它仍然说我没有运行find命令的权限。

有没有人知道如何在不使用“find”命令的情况下完成此任务?

编辑: 操作系统:Centos 6.5

1 个答案:

答案 0 :(得分:6)

显然这很容易实现。有两种方法:仅使用chmod,或在所需路径上设置ACL(访问控制列表):

  • 使用chmod我会运行:

    chmod -R u = rwX,g =,o = / path

对于用户所有者我提供资金" X",因此它仅适用于目录而非文件。

  • 使用ACL:

    setfacl -Rm u :: rwX,g :: 0,o :: 0 / path

    setfacl -Rm d:u :: rwX,g :: 0,o :: 0 / path

再次使用资本" X"所以它只适用于目录而不适用于文件。第一个命令应用ACL,第二个命令使其成为默认策略,因此新创建的文件将继承所需的权限。