2016-04-11 32 views
5

我试图找出一种方法设置特定路径和600文件的目录和子目录递归权限700。我会使用这些命令:如何递归地设置权限,700文件夹和600文件,而不使用查找

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

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

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

chmod 4755 script.sh

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

有没有人有任何想法我可以做到这一点,而无需使用“查找”命令?

编辑: OS:Centos的6.5

回答

6

显然,这是很容易实现。有2种方式:仅使用chmod,或所期望的路径上设置的ACL(接入控制列表):

  • 使用chmod我将运行:

    搭配chmod -R U = RWX,G =,邻= /路径

为用户所有者我给大写“X”,所以它只适用于目录,而不是文件。

  • 使用ACL:

    setfacl的-Rmü:: RWX,克:: 0,邻:: 0 /路径

    setfacl的-Rm d:U :: RWX,克:: 0,o :: 0 /路径

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

+0

'chmod'版本不能正常工作,'X'是一个特殊的执行,如果其他模式中至少有一个执行了,它将授予执行权限。这意味着如果文件在用户组或其他文件中已经有'x',那么它将保持用户的执行设置。要仅使用chmod执行此操作,我们必须首先清除所有执行设置,然后运行chmod命令。例如'chmod -R a-x/path; chmod -R u = rwX,g =,o =/path'。 – CMCDragonkai

相关问题