ftpd配置及错误解决

使用yum安装pure-ftpd

Pure-FTPd是Linux上的一个开源的FTP服务程序,在易用性、配置性上比vsftp较方便,下面我们使用CentOS 6演示安装和配置pure-ftpd。

安装epel源 # yum install epel-release 使用yum命令安装Pure-ftpd # yum install pure-ftpd 配置Pure-ftpd # vim /etc/pure-ftpd/pure-ftpd.conf # 1. 修改 PAMAuthentication no # 2. 使用PureDB存储账号信息,除去前面的注释# PureDB /etc/pure-ftpd/pureftpd.pdb # 3. 打开ftp被动模式的端口范围,并确认改端口范围没有被防火墙拦截 PassivePortRange 30000 31000 ForcePassiveIP PASV的外网IP地址 # 4. 关闭匿名访问权限 AnonymousOnly no # 5. 打开日志记录功能 AltLog clf:/var/log/pureftpd.log # 6. 限制每个用户只能在自己的目录中 ChrootEveryone yes 添加FTP用户

ftptest是虚拟用户,不需要在系统中进行新建
-u -g后是系统用户账号或者id号,一般使用运行的nginx或apache的账号id
-d是默认的家目录

# pure-pw useradd ftptest -u apache -g apache -d /var/www/blog/ftp -m 输入密码... 保存Pure-FTPD用户数据库 # pure-pw mkdb 使添加的用户生效 # service pure-ftpd start 配置mysql管理pure-ftpd用户 # vim /etc/pure-ftpd/pure-ftpd.conf # 修改pure-ftpd.conf配置文件,去除MySQLConfigFile前# MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf #PureDB /etc/pure-ftpd/pureftpd.pdb # vim /etc/pure-ftpd/pureftpd-mysql.conf MYSQLServer 你服务器的ip或域名,注意防火墙 MYSQLPort mysql服务器的端口

创建pureftpd数据库,并创建表,表结构如下,我只使用了账号密码功能,如果需要使用带宽限制、访问限制可使用其他字段,同时要修改pureftpd-mysql.conf的相应配置。

CREATE DATABASE ftpdb; 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) ); INSERT INTO `tp` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('ftpuser', '1', MD5('secret'), '2001', '2001', '/home/ftpdir', '0', '0', '', '*', '0', '0'); 日志文件配置

1)建立文件/var/log/pureftpd.log(由于安全机制问题,log文件只能放在/var/log目录下,放到其它地方不能正常记录)

2)修改/etc/rsyslog.conf

1.在这行的cron.none后面添加;ftp.none 使ftp的日志信息成私有
*.info;mail.none;authpriv.none;cron.none /var/log/messages

*.info;mail.none;authpriv.none;cron.none;ftp.none /var/log/messages

2.在/etc/rsyslog.conf文件最后加上
3.重启syslogd服务 service rsyslog restart

到现在设置完毕,重启下pure-ftpd,现在在客户端登陆ftp就可以看到日志记录了

rsyslog服务了解 :

另外:pure-ftpd的配置文件中有对日志选项进配置项。

=============[pure-ftpd.conf日志选项]==========================

If you want to log all client commands, set this to "yes".
This directive can be duplicated to also log server responses.
如果你想记录所有的操作记录,如刷新列表,进入目录的日志等,将值设为yes

VerboseLog no

If you want to add the PID to every logged line, uncomment the following
line.
如果你想在日志的每一行都添加当前的pure-ftpd的pid,将值设为yes,否则就注释掉

LogPID yes

不启用AltLog选项,保持所有的AltLog的注释状态
AltLog clf:/var/log/pureftpd.log

pureftp日志

ftp.* -/var/log/pureftpd.log

注意: 不要去掉/var前面的-号,否则日志会在/var/log/messages 与 /var/log/purefpd.log里各记录一份. 添加了-号,就只会记录在/var/log/purefptd.log内

常见错误及解决办法

登录返回 530错误

tail -f /var/log/message查看错误日志后发现为Authentication failed for user。

该错误是因为账号认证失败导致的,你你没有打开PureDB功能,我使用的是PureDB存储账号密码,你也可以配置mysql存储,打开后需要重启服务器。

使用ftp软件连接成功后,目录读取失败

第一步:pure-ftpd是支持被动模式连接的,被动模式连接方式需要服务端打开一个随机端口,先试试用主动模式是否可以连接,我使用的Filezilla软件(一般客户端软件都支持),如果可以连接一般原因就是服务端的随机端口被防火墙给阻拦掉了。

第二步:cat /proc/sys/net/ipv4/ip_local_port_range该文件,该文件是tcp的预留端口配置,查看你设置的端口范围是否在该范围之内,如果在设置成其他的

查看配置PassivePortRange的端口范围并配置防火墙通过即可。

日志查看

pure-ftpd的访问日志都在/var/log/pureftpd.log下,上传、下载、删除了某个文件都会记录在该日志里。

ftp主动模式(port)与被动模式(pasv) 主动模式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/52733139f3ecb4ae92b21da0f433e5cc.html