使用Pure-ftpd和Pure-ftpd-mysql进行FTP权限和磁盘配额管理
2014-05-27 17:01
513 查看
安装
Pure-ftpd是一个成熟的ftp工具,apt-get已经有打好的包了.我们直接通过apt-get就能很方便的安装.apt-get install pure-ftpd-mysql
配置
在数据库里边建一个库,这里用之前的hosting数据库.用以下语句创建一张表:CREATE TABLE users( User varchar(16) NOT NULL default '', status enum('0','1') NOT NULL default '0', Password varchar(64) NOT NULL default '', Uid varchar(11) NOT NULL default '-1', Gid varchar(11) NOT NULL default '-1', Dir varchar(128) NOT NULL default '', ULBandwidth smallint(5) NOT NULL default '0', DLBandwidth smallint(5) NOT NULL default '0', comment tinytext NOT NULL, ipaccess varchar(15) NOT NULL default '*', QuotaSize smallint(5) NOT NULL default '0', QuotaFiles int(11) NOT NULL default 0, PRIMARY KEY (User), UNIQUE KEY User (User) ) TYPE=MyISAM;
这张表将用来存放ftp用户的相关信息.
然后我们需要修改pure-ftpd-mysql的配置文件,告诉pure-ftpd数据库的相关信息.
这里假设大家已经配置好了mysql,并有一个可用的账号.
vim /etc/pure-ftpd/db/mysql.conf
放入以下配置
#账号信息 按自己情况修改 MYSQLServer 127.0.0.1 MYSQLPort 3306 MYSQLSocket /var/run/mysqld/mysqld.sock MYSQLUser easy MYSQLPassword ****** MYSQLDatabase hosting
#加密方式 MYSQLCrypt md5
#取得数据的SQL语句
#用户授权 MYSQLGetPW SELECT Password FROM users WHERE User="L" MYSQLGetUID SELECT Uid FROM users WHERE User="L" MYSQLGetGID SELECT Gid FROM users WHERE User="L" MYSQLGetDir SELECT Dir FROM users WHERE User="L"
#文件大小和个数限制
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="L"
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="L"
#上行和下行带宽限制 MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="L" MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="L"
这样pure-ftpd就知道如何从mysql里边取数据了.
为了得到上边出现的GID和UID,我们需要为ftp创建一个虚拟账号.FTP的全部用户共用这一个虚拟账号的UID和GID,而不需要为每个FTP用户创建系统用户.
groupadd -g 2001 ftpgroup useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
我们创建了GID为2001的ftpgroup组和UID为2001的ftpuser用户.现在可以往数据表中添加数据了.QuotaSize的单位是M,目录指向我们在mod-myvhost同样的路径.
然后我们将用户锁定在他自己的目录下,不允许他通过ftp访问到别人的目录:
echo yes > /etc/pure-ftpd/conf/ChrootEveryone
当指定目录不存在时,自动创建目录
echo yes > /etc/pure-ftpd/conf/CreateHomeDir
设置完成.重启pure-ftpd.
/etc/init.d/pure-ftpd-mysql restart
全部配置都完成了.我们上传文件试试.
登陆成功,上传文件提示没权限.这是因为/data0/myapphost的属性设定造成的.将整个目录改为ftpuser的就可以了
chown -R ftpuser:ftpgroup /data0/myapphost
修改属性后,已经可以上传文件了.试试配额限制:
错误:> [2010-1-27 22:47:12] 无法写入数据 socket。Socket 错误 = #10054。 [2010-1-27 22:47:12] 550-Quota exceeded: abc.zip won't be saved 550-6 files used (120%) - authorized: 5 files 550 6974 Kbytes used (681%) - authorized: 1024 Kb 错误:> [2010-1-27 22:47:12] 请求的操作未执行(如,文件或目录未找到,不能访问)。
错误:> [2010-1-27 22:47:43] 无法写入数据 socket。Socket 错误 = #10054。 [2010-1-27 22:47:43] 550-Quota exceeded: abc.zip won't be saved 550-4 files used (80%) - authorized: 5 files 550 3954 Kbytes used (386%) - authorized: 1024 Kb 错误:> [2010-1-27 22:47:43] 请求的操作未执行(如,文件或目录未找到,不能访问)。
从错误信息可以看出,配额已经生效了.当配置修改后,已经登录的ftp用户需要重新登陆后才会生效.
小结
到这里为止,我们已经完成了一个单服务器的应用管理平台的基本功能.再添加一个用于申请应用和开通账号的web管理前端,整个平台即可投入使用了.下次我们将讨论,对于作为这个平台上的服务的Mysql,如何进行配额的限制.
相关文章推荐
- 在FREEBSD 5.2中使用Pureftpd + MySQL + Pureftpd_php_manager架设FTP SERVER
- pure-ftpd + mysql + web搭建ftp服务器
- 使用pure-ftpd实现ftp功能
- 使用pure-ftpd搭建FTP服务
- 使用pure-ftpd搭建ftp服务
- Linux下使用pure-ftpd建立匿名ftp访问的方法
- xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务
- 使用pure-ftpd搭建FTP服务
- 【FTP搭建】xshell使用xftp传输文件和使用pure-ftpd搭建ftp服务
- PureFTPd 系列中文文档之 README.MySQL ---- 配合MySQL使用 Pure-FTPd
- 使用pure-ftpd搭建ftp服务
- 使用pure-ftpd搭建FTP服务
- 15.4 xshell使用xftp传输文件;15.5 使用pure-ftpd搭建ftp服务
- xshell使用xftp传输文件,使用pure-ftpd搭建ftp服务
- Red Hat Linux Enterprise 5 pure-ftp +Apache+Mysql+User manager for Pureftpd
- debian+pureftpd+mysql+ftpadmin
- Xshell使用xftp传输文件,使用pure-ftpd搭建ftp服务
- 使用pure-ftpd搭建ftp服务
- 15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务
- xftp、使用pure-ftpd搭建FTP服务