网络上介绍的FTP空间限额方案,一般采用proftpd-mod-quotatab+mysql来实现,其实并不能限制目前主流的FTP空间增长方式,通过PHP来上传文件可以轻松绕过这个限制。与这种方式配套的方案一般来说会把所有虚拟主机用户虚拟成一个UNIX系统用户,实际上使得PHP的safe_mode形同虚设,对安全性也有一定影响。
比较纯粹的系统级方案是使用UNIX系统帐号来作为FTP帐号,然后搭配Suexec特性,使PHP真正可以做到UID检测,同时web服务器生成的文件也是真正的用户属主,彻底避免权限问题。
这个方案在UNIX环境实现时候需要启动Disk Quota特性,之前的日志FreeBSD内核维护日志[三] 增加QUOTA支持已经有过实践,增加了Quota特性后,使用edquota来给每个用户设定限额。
然后增加一个脚本来实现客户端的quota值汇报,这个跟我的方案有关,假设每个用户的FTP根目录位于/var/www/$username,那么脚本可以是这样。
然后在proftpd.conf中启用DisplayLogin welcome.msg就可以看到登陆FTP时候的提示语。
- #!/bin/sh
- IF=/tmp/quotas
- CDir=/var/www/user
- /bin/date > $IF && /usr/sbin/repquota -au >> $IF
- for i in $(ls $CDir); do
- DDir=$CDir/$i/ftp/welcome.msg
- cat $IF | awk /$i/'{printf "FTP \xca\xb9\xd3\xc3\xc7\xe9\xbf\xf6: %s \xca\xb9\xd3\xc3\xc1\xcb %d MB \xd7\xdc\xb9\xb2 %d MB \xca\xb9\xd3\xc3\xc1\xcb %d%%\n", $1,$3/1024,$5/1024,100*$3/$5}' > $DDir
- done
- FTP 使用情况: leo.leoneo.com 使用了 8 MB 总共 200 MB 使用了 4%

最近评论