2

我正在寻找一些帮助,以在 Linux 中创建 shell 脚本以在所有者:组为 apache:apache 的 Plesk 环境中对某些文件夹执行批量所有权更改。

我想将所有者:组更改为:psacln。

可以通过查看 httpdocs 文件夹的所有者来确定 FTP 用户。^这是我遇到问题的部分。

如果我要将所有所有者设置为相同,我可以做一行:

find /var/www/vhosts/*/httpdocs -user apache -group apache -exec chown user:psacln {} \;

任何人都可以帮助将用户插入此命令吗?

谢谢

4

2 回答 2

1

想通了……对于那些将来可能想使用它的人:

    for dir in /var/www/vhosts/*
    do
        dir=${dir%*/}
        permissions=`stat -c '%U' ${dir##*/}/httpdocs`
        find ${dir##*/}/httpdocs -user apache -group apache -exec chown $permissions {} \;
    done
于 2013-05-17T21:50:43.197 回答
0

由于stat不能以相同的方式在 al unices 上工作,我想我会分享我的脚本以将所有网站的所有权设置给 Plesk 中的正确所有者(在 Plesk 11、11.5、12 和 12.5 上测试):

cd /var/www/vhosts/
for f in *; do
    if [[ -d "$f" && ! -L "$f" ]]; then

        # Get necessary variables
        FOLDERROOT="/var/www/vhosts/"
        FOLDERPATH="/var/www/vhosts/$f/"
        FTPUSER="$(ls -ld /var/www/vhosts/$f/ | awk '{print $3}')"

        # Set correct rights for current website, if website has hosting!
        cd $FOLDERPATH
        if [ -d "$FOLDERPATH/httpdocs" ]; then
            chown -R $FTPUSER:psacln httpdocs
            chmod -R g+w httpdocs
            find httpdocs -type d -exec chmod g+s {} \;

            # Print success message
            echo "Done... $FTPUSER is now correct owner of $FOLDERPATH."
        fi

        # Make sure we are back at the root, so we can continue looping
        cd $FOLDERROOT
    fi
done

\\\

代码说明:

  1. 转到虚拟主机文件夹
  2. 循环浏览网站
  3. 存储 vhosts 路径,因为我们cd在循环中使用
  4. 如果httpdocs当前网站存在文件夹,则
  5. 设置 httpdocs 的正确权限和
  6. 所有底层文件夹
  7. 显示成功消息
  8. cd回到 vhosts 文件夹,所以我们可以继续循环

\\\

于 2015-11-05T10:59:42.987 回答