随着用户权限的改变,多个目录更新

随着用户权限的改变,多个目录更新

我在一台装有 FreeBSD7.3 的机器上有多个用户。每个用户都有自己的站点(只有一个)。每个站点都是主站点的副本,略有不同(即数据库配置、模板文件)。
这就像一台机器上有多个 Wordpress,但用户不同。

问题是:
我为主站点制作了一个补丁。我如何才能一次性更新所有这些站点,正确地更改用户权限和所有权。

IE:我有类似的补丁:

/temp/patch/www/--index.php
--includes
/system.php

我有许多用户具有相同的目录结构和一些其他文件:

/home/mike/www/mikebestsite.com/
--index.php
--index2.php
--includes/system.php

/home/john/www/superjohnsite.com/
--index.php
--includes/system.php
--includes/break.php

/home/larry/www/larry-e-king.com/
--index.php
--includes/system.php
--css/larry.css

答案1

这是一个快速的 bash 代码片段,应该可以帮到您。

我假设其中的所有内容/home都是目录,并且匹配的*\.com是您想要替换index.php和的站点includes/system.php。如果此逻辑不合适,您可能需要自己进行一些修改。

我已经在有限的限制内对其进行了测试。确保ls -ldFreeBSD 中的输出在第三个字段中有用户,在第四个字段中有组。此外,--reply=yes是 GNUism。您可能必须使用-f或 BSD 等效项来强制替换现有文件而无需交互。

for D in `find /home -type d -name '*\.com'`
   do
     myuser=`ls -ld $D | awk '{print $3}'`
     mygroup=`ls -ld $D | awk '{print $4}'`

     echo "Updating ${D}..."
     cp ${D}/index.php ${D}/index.php.ORIG
     cp ${D}/includes/system.php ${D}/includes/system.php.ORIG
     cp --reply=yes /path/to/temp/patch/www/index.php ${D}
     cp --reply=yes /path/to/temp/patch/www/includes/system.php ${D}/includes
     chown $myuser:$mygroup ${D}/index.php
     chown $myuser:$mygroup ${D}/includes/system.php
     echo "--------------------------------"
     echo ""
done

相关内容