ubuntu pure-ftpd + mysql 配置详情

上一篇文章是使用PureDB来存储虚拟用户信息,本篇文章将会使用mysql来存储ftp用户数据信息

一 下载安装

编译安装
./configure --with-mysql --with-rfc2640 --with-everything --with-puredb
在安装的时候出现了一个小问题:ubuntu configure: error: libmysqlclient is needed for MySQL support
解决方法:安装libmysqlclient-dev包

二 配置

ChrootEveryone               yes
BrokenClientsCompatibility   no
MaxClientsNumber             50
Daemonize                    yes
MaxClientsPerIP              8
VerboseLog                   no
DisplayDotFiles              yes
AnonymousOnly                no
NoAnonymous                  yes  #禁止匿名用户登陆
SyslogFacility               auth
DontResolve                  yes
MaxIdleTime                  15
MySQLConfigFile              /etc/pureftpd-mysql.conf    #mysql验证
PureDB                       /etc/pureftpd.pdb
LimitRecursion               10000 8
AnonymousCanCreateDirs       no
MaxLoad                      4
PassivePortRange             30000 50000  #被动模式
ForcePassiveIP              172.30.51.200 
AntiWarez                    yes
Umask                        133:022
MinUID                       100
AllowUserFXP                 no
AllowAnonymousFXP            no
ProhibitDotFilesWrite        no
ProhibitDotFilesRead         no
AutoRename                   no
AnonymousCantUpload          no
MaxDiskUsage                   99
CustomerProof                yes

三 创建用户

建立mysql认证数据库

[root@localhost ~]# mysql -uroot -p
mysql>create database pureftpd;
mysql>grant all privileges on pureftpd.* to 'pureftpuser'@'%' 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 default '1000',
	`gid` int (11) not null default '1000',
	`dir` varchar(128) not null default '',
	`quotafiles` int(10) not null default '0',
	`quotasize` int(10) not null default '0',
	`ulbandwidth` int(10) not null default '0',
	`dlbandwidth` int(10) not null default '0',
	`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   |     | 0       |       |
| quotasize   | int(10)       | NO   |     | 0       |       |
| ulbandwidth | int(10)       | NO   |     | 0       |       |
| dlbandwidth | int(10)       | NO   |     | 0       |       |
| ipaddress   | varchar(15)   | NO   |     | *       |       |
| comment     | tinytext      | YES  |     | NULL    |       |
| status      | enum('0','1') | NO   |     | 1       |       |
| ulratio     | smallint(5)   | NO   |     | 1       |       |
| dlratio     | smallint(5)   | NO   |     | 1       |       |
+-------------+---------------+------+-----+---------+-------+

User:帐号名;
Password:密码,使用MD5加密;
Uid:前面创建的ftpuser帐户号;
Gid:前面创建的ftpgroup组号;
Dir:虚拟用户的个人目录路径;
ULBandwidth:上传文件限制速度,KB/s,0为不限制;
DLBandwidth:下载文件限制速度,KB/s,0为不限制;
comment:备注信息;
ipaccess:* 表示任意IP都可以访问此ftp服务器,输入具体IP地址可以只允许此IP连接服务器;
QuotaSize:用户磁盘空间分配,单位:MB,0表示不加限制;
QuotaFiles:用户可以保存的文件数量限制,0表示不加限制。
status:0 表示帐号被禁用,无法登录服务器;

在数据库中创建pureftp虚拟用户

mysql> insert into users values ('xixi','password','7777','7777','/ftp','500','30','30','50','*','','1','1','1');
mysql> select * from users\G;
*************************** 1. row ***************************
       user: bev
   password: 5bc915d575ad9c57aa0fc6e1fd719615
        uid: 7777
        gid: 7777
        dir: /ftp
 quotafiles: 500
  quotasize: 30
ulbandwidth: 30
dlbandwidth: 50
  ipaddress: *
    comment: 
     status: 1
     ulratio: 1
    dlratio: 1
1 row in set (0.11 sec)

ERROR: 
No query specified

注意mysql账户密码的加密方式需要与pureftp支持的机密方式相吻合,不然会出现530错误

mysql> update users set password=md5('pureftpuser') where user='bev';
   我在这里选择的MD5加密方式,那么在下面配置pureftp的加密方式时一定选择MD5。

修改pureftp关于mysql模块的配置文档 /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文件
MYSQLUser       pureftpuser                    # mysql用户名
MYSQLPassword   pureftpuser                    # mysql密码
MYSQLDatabase   pureftpd                       # mysql数据库名
MYSQLCrypt      md5                            #加密方式,这里用md5加密

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'
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'

这里重点说下;这个配置文件是你数据库的对应的数据库和表的内容,不要按照网上的复制,根据自己数据库建立的数据库和表做相应的配置。
表中必须的内容有 用户名,密码,Uid,Gid,Dir,其余皆可省略。请注意与你的配置文件相对应。

重启pureftp,测试刚刚建立的xixi是否生效了
在这里,我提醒大家出现错误先去vi /var/log/messages 看下ftp标签所报错误,对症下药。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,以下是配置 pure-ftpd 支持 FTPES 协议的详细步骤和命令: 1. 安装 OpenSSL 和 TLS 库 sudo apt-get install openssl libssl-dev libssl-doc libssl1.. libssl1..-dbg libssl1..-doc libssl1..-udeb libssl1.1 libssl1.1-dbg libssl1.1-doc libssl1.1-udeb libtls-dev libtls1.6 libtls1.6-dbg libtls1.6-doc libtls1.6-udeb 2. 安装 pure-ftpd sudo apt-get install pure-ftpd 3. 生成 SSL 证书 sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem -days 365 4. 配置 pure-ftpd sudo nano /etc/pure-ftpd/conf/TLS 修改以下参数: TLS 1 TLSLog /var/log/pure-ftpd/tls.log TLSRSACertificateFile /etc/ssl/private/pure-ftpd.pem TLSVerifyClient off TLSRequired yes TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3 5. 重启 pure-ftpd sudo service pure-ftpd restart 至此,pure-ftpd 已经配置支持 FTPES 协议了。 ### 回答2: pure-ftpd是一种开源的FTP服务器软件,在配置FTPES(FTP over explicit SSL/TLS)协议时,你需要执行以下详细步骤和命令: 1. 首先,确保你已经安装了pure-ftpd软件。 2. 打开pure-ftpd配置文件。常见的位置是/etc/pure-ftpd.conf。你可以使用任何文本编辑器打开该文件。 3. 在配置文件中,找到并确保以下行的设置符合以下规定: - TLS 1 # 开启TLS支持 - # CertFile /etc/ssl/private/pure-ftpd.pem # 证书文件路径 - TLSOptions NoCertRequest # 不要求客户端提供证书 - TLSProtocol SSLv23 # 协议使用SSLv3和TLSv1.0及更高版本 - TLSCipherSuite HIGH # 加密套件设置 4. 自行生成或购买一个TLS/SSL证书,并将其命名为pure-ftpd.pem(也可以使用既有的证书)。确保将对应的证书文件放置在上一步配置中注释掉的位置(默认为/etc/ssl/private/pure-ftpd.pem)。 5. 重新启动pure-ftpd服务,使配置生效。你可以使用以下命令重启服务: - sudo systemctl restart pure-ftpd 6. 配置防火墙以允许FTPES流量。FTPES使用的默认端口是21。如果你的防火墙已经启用,你需要确保该端口已打开。 以上步骤可以帮助你配置pure-ftpd以支持FTPES协议。请注意,这只是基本的配置,请根据你的特定需求和系统环境进行适当的调整。 ### 回答3: 要配置pure-ftpd使用FTPES协议,你需要按照以下步骤进行操作: 1. 首先,确保你的系统已经安装了pure-ftpd软件。如果没有安装,你可以使用包管理器来安装它,例如使用apt-get命令: ``` sudo apt-get install pure-ftpd ``` 2. 接下来,你需要生成一个SSL证书,用于加密FTP连接。你可以使用openssl命令来生成自签名证书: ``` sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem ``` 这个命令将生成一个位于`/etc/ssl/private/pure-ftpd.pem`路径下的自签名证书。 3. 然后,打开pure-ftpd配置文件`/etc/pure-ftpd/conf/TLS`,确保以下配置设置为yes: ``` TLSENABLE yes ``` 此外,你也可以在此文件中调整其他FTPES相关的配置选项。 4. 接下来,打开pure-ftpd的主配置文件`/etc/pure-ftpd/pure-ftpd.conf`,将以下配置添加到文件末尾: ``` # 使用TLS/SSL加密 TLS 1 # 使用专用的SSL证书 TLSCertificateFile /etc/ssl/private/pure-ftpd.pem ``` 你也可以根据需要设置其他pure-ftpd配置选项。 5. 保存并关闭配置文件,然后重启pure-ftpd服务以使配置生效: ``` sudo service pure-ftpd restart ``` 现在,你的pure-ftpd服务器已经配置为使用FTPES协议,并且所有的FTP连接将会通过SSL加密。你可以使用FTPES客户端来连接到服务器,并且在连接时将会收到SSL证书的验证提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值