ftpd配置Mysql虚拟ftp账号
摘要Mysql实现pureftp虚拟账号的认证与存储
pureftpmysql
1. Mysql的连接
[root@localhost ~]# mysql -uroot -pxxxxxx(your mysql password)
2. 建立mysql认证数据库
mysql>create database pureftpd;mysql>grant privileges all on pureftpd.* to pureftpuser@localhost identified by 'pureftpuser';mysql>flush privileges;mysql>use pureftpd;Mysql> create table if not exists `users`(`user` varchar(16) not null default '',`password` varchar(32) not null default '',`uid` int(11) not null,`gid` int (11) not null,`dir` varchar(128) not null default '',`quotafiles` int(10) not null default '500',`quotasize` int(10) not null default '30',`ulbandwidth` int(10) not null default '80',`dlbandwidth` int(10) not null default '80',`ipaddress` varchar(15) not null default '*',`comment` tinytext,`status` enum('0','1') not null default '1',`ulratio` smallint(5) not null default '1',`dlratio` smallint(5) not null default '1',primary key (`user`),unique key `user` (`user`))engine=innodb default charset=utf8;mysql> show tables;+--------------------+| Tables_in_pureftpd |+--------------------+| users|+--------------------+1 row in set (0.00 sec)mysql> desc users;+-------------+---------------+------+-----+---------+-------+| Field| Type| Null | Key | Default | Extra |+-------------+---------------+------+-----+---------+-------+| user| varchar(16) | NO | PRI |||| password | varchar(32) | NO ||||| uid| int(11)| NO || NULL ||| gid| int(11)| NO || NULL ||| dir| varchar(128) | NO ||||| quotafiles | int(10)| NO || 500||| quotasize | int(10)| NO || 30||| ulbandwidth | int(10)| NO || 80||| dlbandwidth | int(10)| NO || 80||| ipaddress | varchar(15) | NO || *||| comment| tinytext| YES || NULL ||| status| enum('0','1') | NO || 1||| ulratio| smallint(5) | NO || 1||| dlratio| smallint(5) | NO || 1||+-------------+---------------+------+-----+---------+-------+14 rows in set (0.15 sec)
3 创建pureftp虚拟用户
mysql> insert into users values ('bev','pureftpuser','2000','2000','/var/pureftp/bev','500','30','30','50','*','','1','1','1');mysql> select * from users\G;*************************** 1. row ***************************user: bev password: 5bc915d575ad9c57aa0fc6e1fd719615uid: 2000gid: 2000dir: /var/pureftp/bev quotafiles: 500 quotasize: 30ulbandwidth: 30dlbandwidth: 50 ipaddress: *comment:status: 1ulratio: 1dlratio: 11 row in set (0.11 sec)ERROR: No query specified
4. 注意mysql账户密码的加密方式需要与pureftp支持的机密方式相吻合,不然会出现530错误
mysql> update users set password=md5('pureftpuser') where user='bev';
我在这里选择的MD5加密方式,那么在下面配置pureftp的加密方式时一定选择MD5。
5. 修改pureftp关于mysql模块的配置文档
[root@localhost ~]# vi /usr/local/pure-ftpd/etc/pure-ftpd.conf # MySQL configuration file (see README.MySQL)MySQLConfigFile/usr/local/pure-ftpd/etc/pureftpd-mysql.conf保存退出[root@localhost ~]# vi /usr/local/pure-ftpd/etc/pureftpd-mysql.conf # Optional : define the location of mysql.sock if the server runs on this host.MYSQLSocket/var/lib/mysql/mysql.sock(设置成你的mysql.sock路径)# Mandatory : user to bind the server as.MYSQLUserpureftpuser# Mandatory : user password. You must have a password.MYSQLPassword pureftpuser# Mandatory : database to open.MYSQLDatabase pureftpd# Mandatory : how passwords are stored# Valid values are : "cleartext", "crypt", "sha1", "md5" and "password"# ("password" = MySQL password() function)# You can also use "any" to try "crypt", "sha1", "md5" *and* "password"MYSQLCryptmd5MYSQLGetPWSELECT Password FROM users WHERE User='\L'MYSQLGetUIDSELECT Uid FROM users WHERE User='\L'MYSQLGetGIDSELECT Gid FROM users WHERE User='\L'MYSQLGetDirSELECT Dir FROM users WHERE User='\L'MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User='\L'MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User='\L'MySQLGetRatioUL SELECT ULRatio FROM users WHERE User='\L'MySQLGetRatioDL SELECT DLRatio FROM users WHERE User='\L'MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User='\L'MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User='\L'
6. 重启pureftp,测试刚刚建立的bev是否生效了。
好了,下篇博客,将简单总结下pureftp搭建过程中遇见的问题,及其解决办法。
- 上一篇:ftpd常见问题及解决方法
- 下一篇:NAT模式下静态IP设置