接近半夜了还为公司搭建FTP,虽然有点繁忙但是感觉很高兴,因为把linux当做了一种生活的乐趣,越玩越有意思,玩linux有几个月,刚用proftp 有点麻烦 搭建了感觉效果不喜欢就又该成了pureftp,在这里献丑了。
_________________________________________________________________________________________________
安装pure-ftp
#tar -zxvf
#cd /usr/local/src/pure-ftpd-1.0.22
# ./configure
注:记得加上--with-puredb 虚拟用户必+。
# make && make install
# cp configuration-file/pure-config.pl /usr/local/pureftpd/sbin/
#mkdir -p /usr/local/pureftpd/etc/
# cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/
# cd /usr/local/pureftpd/sbin/
# chmod 755 pure-config.pl
# cp
#chmod 755 /etc/init.d/pureftpd
#chown root:root /etc/init.d/pureftpd
#chkconfig --add pureftpd
#
# vi pure-ftpd.conf
修改
修改端口的话# Bind
这样你 service pureftpd start 脚本肯定报错 。。
启动脚本的变量你需要手动修改下:
根据报错修改变量位置即可。。。。。
正常的启动方式 /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
1、建立一个ftp用户与组:
# groupadd ftpgroup
# useradd -g ftpgroup -M -s /etc ftpuser
2、添加虚拟用户
# pure-pw useradd ftpu -u ftpuser -g ftpgroup -d /usr/local/testRoot -m
说明:ftpu是用户名,-u ftpuser是其实际的linux用户,-d指定起始目录,并锁定于该目录。如果不锁定,则用-D
如果需要不同的权限,可以建立新的linux用户与组
3、建立用户数据库:
# pure-pw mkdb /usr/local/pureftpd/pureftpd.pdb
说明:今后每添加或修改用户数据库都应该执行一次mkdb.
变量自己导出下:echo PATH=$PATH:/usr/local/pureftpd/bin/ >>/etc/profile
pure-pw show xywymb
pure-pw list
pure-pw passwd xywymb -m
pure-pw mkdb /usr/local/pureftpd/etc/pureftpd.pdb
pure-pw usermod
改了什么都要执行一下
pure-pw mkdb /usr/local/pureftpd/etc/pureftpd.pdb
下面做、用户操作日志记录:
Pure-ftpd日志记录设置过程
………………………………………………………………………………………
日志文件由系统日志和内核日志监控程序syslogd 与klogd 控制, 在/etc/syslog.conf 文件中配置这两个监控程序默认活动。
………………………………………………………………………………………
touch /var/log/pureftpd.log 为ftp建立一个文件,把message里的ftp日志分离出来
vim /etc/syslog.conf
*.info;mail.none;authpriv.none;cron.none;ftp.none /var/log/message
ftp.* -/var/log/pureftpd.log ……………………………………………………………………………………
#cron.none;后边添加ftp.none
#在最后一行添加ftp* -/var/log/pureftpd.log
注:不要去掉/var/前面的-,否则日志会在/var/log/message与/var/log/pureftpd.log里各记录一份,添加-,只会记录在/var/log/pureftpd.log内
……………………………………………………………………………………
service syslog restart 重新启动使其生效
重新重启pureftpd服务
现在设置完毕,客户端登陆ftp试下,日志会记录到/var/log/pureftpd.log
pureftp的一些常见问题:
1.默认安装时允许匿名用户和系统非root用户登录
系统认证方式有
LDAPConfigFile MySQLConfigFile PGSQLConfigFile PureDB ExtAuth PAMAuthentication UnixAuthentication等。
启用其中一个认证时,就只能使用该认证了。原有系统用户就无法登陆了,但如果允许匿名用户登录,匿名的是可以登录的。
2.上传下载速度的限制不是很准确,浮动较大,比vsftp要差一些。
3.磁盘配额不是实时的。
4.常见错误
./pure-config.py pure-ftpd.conf
Running: ['/usr/local/pureftpd/sbin/pure-ftpd', '-A', '-c', '50', '-B', '-C', '8', '-D', '-f', 'ftp', '-H',
'-I', '15', '-l', 'puredb:/usr/local/pureftpd/etc/pureftpd.pdb', '-L', '10000:8', '-m', '4', '-s', '-U',
'133:022', '-u', '100', '-k', '99', '-Z']
421 Unknown authentication method: puredb:/usr/local/pureftpd/etc/pureftpd.pdb
或者是:421 Unknown authentication method: mysql :/usr/local/etc/pureftpd-mysql.conf
这是由于在编译时没有加入相关选项造成的。
重新编译
./configure –prefix=/usr/local/pureftpd/ –with-puredb
实践证明–with-everything并不一定会把所有东西加进去的。
5.pureftp的编码问题
pureftp支持RFC2640,可以有效解决Windows和Linux下的编码问题
使用方法:
重新编译加入RFC2640支持
./configure –prefix=/usr/local/pureftpd/ –with-puredb –with-everything –with-rfc2640
vi pure-ftpd.conf
ClientCharset gb2312
重新启动服务器即可,常见的IE浏览器,FlashFXP可以正常使用GB2312,utf-8编码。
而Linux系统自带的ftp和Windows系统自带的ftp客户端,仍然存在乱码现象。
6.关于pureftp的被动模式
服务器默认开启主动模式和被动模式,由客户端选择。
服务器可以设置被动模式端口范围,主要是为了防火墙的设置。
PassivePortRange 50001 50006
注意此处千万不可写成50001:50006 ,否则配置文件脚本无法读取,中间是空格。
我们做了几个实验:
PassivePortRange 设置成如下值,客户端登陆提示如下:
PassivePortRange 50001 50006 登录时显示You are user number 1 of 3 allowed.
PassivePortRange 50001 50004 登录时显示You are user number 1 of 2 allowed
PassivePortRange 50001 50003 登录时显示You are user number 1 of 1 allowed
这恰好印证了官方文档中的说明:
So, open some ports TO the FTP server. These ports should be > 1023. It’s
recommended to use at least twice the max number of clients you are
expecting. So, if you accept 200 concurrent sessions, opening ports 50000 to
50400 is ok.
每个连接至少需要两个端口。
另外官方文档说,端口范围开放的越大,越安全。
Unlike some popular belief, the MORE opened ports you have for passive FTP,
the MORE your FTP server will be secure, because the LESS you are vulnerable
to data hijacking.
本文转自 houzaicunsky 51CTO博客,原文链接:http://blog.51cto.com/hzcsky/475625