我正在寻找一些帮助,在Linux中创建一个shell脚本,以便在Plesk环境中对某些文件夹执行批量所有权更改,其中所有者:group是apache:apache。
我想将所有者:group更改为:psacln。
可以通过查看httpdocs文件夹的所有者来确定FTP用户。 ^这是我遇到麻烦的部分。
如果我要让所有的主人都一样,我可以做一行:
find /var/www/vhosts/*/httpdocs -user apache -group apache -exec chown user:psacln {} \;
任何人都可以帮助用户插入此命令吗?
由于
答案 0 :(得分: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
答案 1 :(得分: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
\\\
代码说明:
cd
httpdocs
个文件夹,则cd
回到vhosts文件夹,我们可以继续循环\\\