Vsftpd配合脚本实现目录配额
vsftpd以配置好虚拟用户
用户名:
www.t1.com
虚拟用户配置文件位置
# pwd
/etc/vsftpd/user_conf
web目录位置:
/data/htdocs/www.t1.com
vsftpd两个用户模版
位置
# pwd
/etc/vsftpd/user_temp
(1)所有权限
# cat user_all
write_enable=YES
anonymous_enable=NO
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022
download_enable=Yes
local_root=/data/htdocs/domain
(2)不能写入,只能删除
# cat user_del
virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES
local_umask=022
download_enable=Yes
local_root=/data/htdocs/domain
脚本内容:
(1)针对单个web目录检测
#!/bin/bash
DIR=/data/htdocs
i=www.t1.com
MAX=200
size=$(/usr/bin/du -sm $DIR/$i |/bin/cut -f1)
if [ "$MAX" -lt "$size" ]
then
echo "`date`" >> /data/sh/check_waring.txt
echo "$i Exceed maximum $MAX"M"" >> /data/sh/check_waring.txt
cp /etc/vsftpd/user_temp/user_del /etc/vsftpd/user_conf/$i
sed -i "s/domain/$i/g" /etc/vsftpd/user_conf/$i
else
cp /etc/vsftpd/user_temp/user_all /etc/vsftpd/user_conf/$i
sed -i "s/domain/$i/g" /etc/vsftpd/user_conf/$i
fi
(2)针对多个web目录检测,ftp用户名与web目录名一致
#!/bin/bash
DIR=/data/htdocs
CHECK=/data/sh/check_dir.txt
ls -1 $DIR > $CHECK
MAX=200
for i in `cat $CHECK`;
do
size=$(/usr/bin/du -sm $DIR/$i |/bin/cut -f1)
if [ "$MAX" -lt "$size" ]
then
echo "`date`" >> /data/sh/check_waring.txt
sed -i "s/domain/$i/g" /etc/vsftpd/user_conf/$i
else
cp /etc/vsftpd/user_temp/user_all /etc/vsftpd/user_conf/$i
sed -i "s/domain/$i/g" /etc/vsftpd/user_conf/$i
fi
done
用户名:
www.t1.com
虚拟用户配置文件位置
# pwd
/etc/vsftpd/user_conf
web目录位置:
/data/htdocs/www.t1.com
vsftpd两个用户模版
位置
# pwd
/etc/vsftpd/user_temp
(1)所有权限
# cat user_all
write_enable=YES
anonymous_enable=NO
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022
download_enable=Yes
local_root=/data/htdocs/domain
(2)不能写入,只能删除
# cat user_del
virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES
local_umask=022
download_enable=Yes
local_root=/data/htdocs/domain
脚本内容:
(1)针对单个web目录检测
#!/bin/bash
DIR=/data/htdocs
i=www.t1.com
MAX=200
size=$(/usr/bin/du -sm $DIR/$i |/bin/cut -f1)
if [ "$MAX" -lt "$size" ]
then
echo "`date`" >> /data/sh/check_waring.txt
echo "$i Exceed maximum $MAX"M"" >> /data/sh/check_waring.txt
cp /etc/vsftpd/user_temp/user_del /etc/vsftpd/user_conf/$i
sed -i "s/domain/$i/g" /etc/vsftpd/user_conf/$i
else
cp /etc/vsftpd/user_temp/user_all /etc/vsftpd/user_conf/$i
sed -i "s/domain/$i/g" /etc/vsftpd/user_conf/$i
fi
(2)针对多个web目录检测,ftp用户名与web目录名一致
#!/bin/bash
DIR=/data/htdocs
CHECK=/data/sh/check_dir.txt
ls -1 $DIR > $CHECK
MAX=200
for i in `cat $CHECK`;
do
size=$(/usr/bin/du -sm $DIR/$i |/bin/cut -f1)
if [ "$MAX" -lt "$size" ]
then
echo "`date`" >> /data/sh/check_waring.txt
echo "$i Exceed maximum $MAX"M"" >> /data/sh/check_waring.txt
sed -i "s/domain/$i/g" /etc/vsftpd/user_conf/$i
else
cp /etc/vsftpd/user_temp/user_all /etc/vsftpd/user_conf/$i
sed -i "s/domain/$i/g" /etc/vsftpd/user_conf/$i
fi
done

浙公网安备 33010602011771号