参考在线2004.11 P80--83
用Pure-ftpd+mysql架设全功能FTP服务器。
原文用RedHat Linux9 AS3,mysql 4.0.20
*****系统环境 RedHat Linux9 系统,自带的Mysql数据库********
安装前提:配置好Apache+cgi+php+perl+mysql
软件准备:
下载mysql并安装好(参考:5MySQL的安装配置)
修改mysql用户root的口令,本例口令为:123456
# mysqladmin -u root password 123456
软件包:
1、pure-ftpd-1.0.20.tar.gz
2、webpureftp0.1.rar
3、ZendOptimizer-2[1].5.7-linux-glibc21-i386.tar.gz
4、pureftpd_php_manager.tar————(可以选择不安装)
5、rarlinux-3.4.0.tar.gz (rar 压缩、解压缩软件)
www.rarlab.com/rar/rarlinux-3.4.0.tar.gz
首先安装压缩、解压缩软件Rar:rarlinux-3.4.0.tar.gz
# tar zxvf rarlinux-3.4.0.tar.gz (生成 rar目录)
# cd rar
# make install
---- ----- -------- -------------- -------------
下载Pure-ftpd,http://fresh.t-systems-sfr.com/unix/src/misc
/.warix/pure-ftpd-1.0.20.tar.gz.html
下载web管理工具: webpureftp0.1.rar http://www.lishiqin.cn/download.php
下载 ZendOptimizer (必须安装,用来给webpureftp0.1.rar解密)
*********************************开始安装***********************************
一、pure-ftpd的安装配置
1、解压缩:
# tar zxvf pure-ftpd-1.0.20.tar.gz
生成 pure-ftpd-1.0.20 目录
2、编译安装:
# cd pure-ftpd-1.0.20
# ./configure \ (编译,下面是要自己写的编译条件)
> --prefix=/usr/local/pureftpd \
--with-mysql \ --with-mysql=/usr/local/mysql \ 此处的 /usr/local/mysql
请改为你的mysql实际安装路径.
--with-virtualchroot \
--with-virtualhosts \
--with-virtualroot \
--with-diraliases \
--with-uploadscript \
--with-cookie \
--with-quotas \
--with-sysquotas \
--with-ratios \
--with-ftpwho \
--with-throttling \
--with-largefile \
--with-peruserlimits \
--with-paranoidmsg \
--with-welcomemsg \
----------------------------------------------------------------------------------
--with-puredb \ ---------->>这个可别忘记了,我就是因为忘记了这个,结果浪费了很多时间
--with-pam \
--with-shadow \ (需要参考是否增加这三行)
------------------------------------------------------------------------------------
--with-language=simplified-chinese (没有斜杠了,结束!)
traditional-chinese BIG5繁体中文
# make
# make install
MYSQL用RPM方式安装
./configure --prefix=/usr/local/pureftpd --with-mysql --with-virtualchroot --with-virtualhosts --with-virtualroot --with-diraliases --with-uploadscript --with-cookie --with-quotas --with-sysquotas --with-ratios --with-ftpwho --with-throttling --with-largefile --with-peruserlimits --with-paranoidmsg --with-welcomemsg --with-puredb --with-pam --with-shadow --with-language=simplified-chinese
MYSQL用编译方式安装(没有成功,建议用MYSQL用RPM方式安装)
./configure --prefix=/usr/local/pureftpd --with-mysql=/usr/local/mysql --with-virtualchroot --with-virtualhosts --with-virtualroot --with-diraliases --with-uploadscript --with-cookie --with-quotas --with-sysquotas --with-ratios --with-ftpwho --with-throttling --with-largefile --with-peruserlimits --with-paranoidmsg --with-welcomemsg --with-puredb --with-pam --with-shadow --with-language=simplified-chinese
--with-mysql=/usr/local/mysql \ 此处的 /usr/local/mysql 请改为你
的mysql实际安装路径.如果出现类似
configure: error: Your MySQL client libraries aren't properly installed 的错误,
请将mysql目录下的 include/mysql下的mysql.h文件以及lib/mysql下的全部文件,
连接(直接复制过去或许也可)到 /usr/lib 目录下
****************** **************** *****************
安装好以后:
# cd configuration-file (进入configuration-file目录)
// 将pure-config.pl文件复制到/usr/local/pureftpd/sbin/下面
# cp pure-config.pl /usr/local/pureftpd/sbin/
// 更改pure-config.pl文件权限,变成可执行文件
# chmod u+x /usr/local/pureftpd/sbin/pure-config.pl
----------------------------------------------------------------------------
二、生成pure-ftpd服务管理脚本
1、编辑文件 :redhat.init 目录,注意寻找文件的位置
一般就在pure-ftpd-1.0.20的安装目录下面:
# cd contrib
# vi redhat.init
找到:fullpath=/usr/local/sbin/$prog
改成:fullpath=/usr/local/pureftpd/sbin/$prog
找到:pureftpwho=/usr/local/sbin/pure-ftpwho
改成:pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho
2、将文件redhat.init复制到/etc/init.d目录,并重命名为:pure-ftpd
# cp redhat.init /etc/init.d/pure-ftpd
然后设置文件可以执行
# chmod +x /etc/init.d/pure-ftpd
添加pure-ftpd服务到系统中,使可以和系统同时启动
# chkconfig --add pure-ftpd
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
****建立FTP目录****
如在根目录下面建立 ftproot 目录
# mkdir /ftproot
______________________________________________________
三、WebPureftpd的安装和使用
首先安装ZendOptimizer,先将ZendOptimizer-2[1].5.7-linux-glibc21-i386.tar.gz
# tar zxvf ZendOptimizer-2[1].5.7-linux-glibc21-i386.tar.gz
生成 :ZendOptimizer-2.5.7-linux-glibc21-i386 目录
# cd ZendOptimizer-2.5.7-linux-glibc21-i386
# ./install.sh (安装)
———————————————出现安装界面————————————————————
安装过程很简单,只要根据自己的系统实际情况回答问题就可以了。
1、确定接受安装协议
2、****Spscify the location where to install Zend Optimizer(指定安装路径)
/usr/local/Zend
# 可以使用Zend给出的默认安装路径,或按自己需要修改
3、****Confirm the location of your php.ini file
/etc
# 如果不是默认路径,那按实际情况修改
****Spscify the full path to the Apache binary(给出完整的Apache执行文件路径)
/usr/sbin/httpd # 系统默认Apache的执行文件路径:
# 如果不是默认路径,那按实际情况修改
安装完成后要重启 Web Server,使配置生效!
# service httpd restart
------------------------------------------------------------------------------
1、生成MYSQL 数据库
解压安装WebPureftpd (已经安装了RAR解压缩软件)
# unrar x webpureftp0.1.rar ./ ---表示解压到当前目录(用RAR解压缩)
生成----- pureftp 目录
然后从别的地方拷贝docs.tar.gz 和SQL.tar.gz到pureftp目录,并解压缩。
# cp docs.tar.gz /root/ftptools/pureftp
# cp SQL.tar.gz /root/ftptools/pureftp
# cd pureftp
# tar zxvf docs.tar.gz
# tar zxvf SQL.tar.gz
原来在RedHat 9 环境中,没有找到 SQL 目录,
# cd SQL
# vi pureftp_db_0.1.sql
找到语句 DROP TABLE IF EXISTS `depart_info;
在该语句前加入下面两条语句
CREATE DATABASE pureftp;
USE pureftp;
——————————————————------------------------——————
执行下面的命令生成MYSQL数据库
# cd pureftp
# service mysqld restart
# mysql -u root -p < SQL/pureftp_db_0.1.sql
/usr/local/mysql/bin/mysql -u root -p < SQL/pureftp_db_0.1.sql
输入mysql的root用户口令后,即可自动生成pure-ftpd使用的数据库。
用Webmin查看生成了pureftp数据库。生成了4个数据表。
———————————————————————————————————
2、生成pure-ftpd的配置文件
进入Webpureftpd的解压目录,编辑配置文件:docs/pureftpd-mysql.conf
奇怪找不到doc目录
# cd /root/ftptools/pureftp/docs
# vi pureftpd-mysql.conf
找到:MYSQLUser network
改成:MYSQLUser root
找到:MYSQLPassword 123456
改成:MYSQLPassword 123456 (23072941是MYSQL的口令)
--------------------------------------------
在RedHat 9 环境中,没有找到 docs 目录
将pure-ftpd.conf和pureftpd-mysql.conf复制到/etc目录下面#######
# cp pure-ftpd.conf /etc
# cp pureftpd-mysql.conf /etc
-------------------------------------------------------------------------
3、配置pure-ftpd的参数
# cd config
# vi config.inc.php 编辑文件
找到:$default_ftp_root="/data/ftp";将其修改成FTP的实际目录,即自己建立的FTP目录
改成:$default_ftp_root="/ftproot/";------在前面已经建立了。
mkdir /ftptools
注意必须在目录后面加:"/"。
找到:$obj_db=new db("localhost","root","","pureftp");
改成:$obj_db=new db("localhost","root","123456","pureftp");
"root"后面的" "填入数据库口令
-----------------------------------------------------------------------------
4、将pureftp目录放置在Apache的主目录中,才能通过Web方式配置pure-ftpd服务器。
默认Apache的主目录在:/var/www/html
# cp -r -f pureftp /var/www/html (移动pureftp目录到/var/www/html)
# cp -r -f pureftp /usr/local/apache/htdocs
------------------------------------------------------------------------------
5、使用WebPureftpd配置pure-ftpd服务器
启动pure-ftpd服务器:# /etc/init.d/pure-ftpd start
注意文件路径:/var/www/html/pureftp/index.php
http://www.homelinux.com/pureftp/index.php (用浏览器测试)
http://192.168.1.80/pureftp/index.php
进入登录界面
使用帐号:admin,口令:admin 进行登录
--------------------------------------------------------------------
建议:
系统管理:默认有三个管理员帐号,建议只留下admin帐号,并立即更改口令。
FTP管理:比较多内容,需要时间掌握。
系统管理原,和单位管理原的帐号不能用来登录,需要FTP----帐号管理,建立
用户帐号
—————————————————————————————————---
四、控制和测试pure-ftpd服务器
启动:# /etc/rc.d/init.d/pure-ftpd start
停止:# /etc/rc.d/init.d/pure-ftpd stop
重启:# /etc/rc.d/init.d/pure-ftpd restart
测试-pure-ftpd服务器启动后,如果在客户端能用在WebPureftpd建立的用户登录,
表明pure-ftpd服务器正常工作。
————————————————————————————————————————
五、pure-ftpd的基本配置(通过修改主配置文件实现)
pure-ftpd的主配置文件pure-ftpd.conf,通常存放在/etc目录下面
*************修改后需要重新启动pure-ftpd后,才会生效
# cd /etc
# vi pure-ftpd.conf
重启:# /etc/rc.d/init.d/pure-ftpd restart
配置文件中文说明
注意:设置了匿名登录,必须先建立匿名用户主目录 # mkdir /var/ftp
需要配置成匿名登录 /var/ftp目录,只可以下栽,不可以上传和删除,严格管理。
认证用户依旧用 ftp://用户@IP地址 的方法登录
1、# 不允许认证用户 - 仅作为一个公共的匿名FTP。需要建立匿名用户主目录 # mkdir /var/ftp
AnonymousOnly no(默认)-------- 改 yes 允许匿名连接,那么认证功能失去作用??
2、# 不允许匿名连接,仅允许认证用户使用。
NoAnonymous no
3、是否允许匿名用户上传文件?改为no 允许,并执行 # chown ftp:ftp /var/ftp
AnonymousCantUpload yes(默认)-------匿名用户只能上传文件,不能删除文件。
4、是否允许匿名用户建立目录?------------改为 yes 允许
AnonymousCanCreateDirs no(默认)
5、是否允许下载匿名用户上传文件?改为no 允许
AntiWarez yes
6、是否将锁定用户主目录,提高系统安全性?----------改为 yes 允许
ChrootEveryone yes
(怎么设置匿名用户的硬盘限额????)
配置文件中文说明
############################################################
# 如果你想要使用配置文件代替命令行选项来运行 Pure-FTPd ,请运行下面的命令:
#
# /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
#
# RPM 缺省使用另外一个配置文件:
# /etc/sysconfig/pure-ftpd
#
# 限制所有用户在其主目录中,可以提高系统的安全性。
ChrootEveryone yes
# 如果前一个指令被设置为了 "no",下面组的成员(GID)就不受主目录的限制了。
# 而其他的用户还是 会被限制在自己的主目录里。如果你不想把任何用户限制在
#自己的主目录里,只要注释掉 ChrootEveryone 和 TrustedGID 就可以了。
#是否允许匿名用户登录 no--允许,不许先手工建立 /var/ftp 目录
#NoAnonymous no
# TrustedGID 100
# 兼容ie等比较非正规化的ftp客户端
BrokenClientsCompatibility no
# 服务器总共允许同时连接的最大用户数
MaxClientsNumber 50
# 做为守护(doemon)进程运行(Fork in background)
Daemonize yes
# 同一IP允许同时连接的用户数
MaxClientsPerIP 8
# 如果你要记录所有的客户命令,设置这个指令为 "yes"。
VerboseLog no
# 即使客户端没有发送 '-a' 选项也列出隐藏文件( dot-files )。
DisplayDotFiles yes
# 不允许认证用户 - 仅作为一个公共的匿名FTP。
AnonymousOnly no
# 不允许匿名连接,仅允许认证用户使用。
NoAnonymous no
# Syslog facility (auth, authpriv, daemon, ftp, security, user, local*)
# 缺省的功能( facility )是 "ftp"。 "none" 将禁止日志。
SyslogFacility ftp
# 设置登录欢迎信息的位置,如果需要为每个用户定义不同的欢迎信息,可以
#将欢迎信息存放在用户主目录名为.banner的文件里面。
# FortunesFile /etc/ftpmsg
# 在日志文件中不解析主机名。日志没那么详细的话,就使用更少的带宽。在一个
# 访问量很大的站点中,设置这个指令为 "yes" ,如果你没有一个能工作的DNS的话。
DontResolve yes
# 客户端允许的最大的空闲时间(分钟,缺省15分钟)
MaxIdleTime 15
# LDAP 配置文件 (参考 README.LDAP)
# LDAPConfigFile /etc/pureftpd-ldap.conf
# MySQL 配置文件 (参考 README.MySQL)
# MySQLConfigFile /etc/pureftpd-mysql.conf
# Postgres 配置文件 (参考 README.PGSQL)
# PGSQLConfigFile /etc/pureftpd-pgsql.conf
# PureDB 用户数据库 (参考 README.Virtual-Users)
# PureDB /etc/pureftpd.pdb
# pure-authd 的socket 路径(参考 README.Authentication-Modules)
# ExtAuth /var/run/ftpd.sock
# 如果你要启用 PAM 认证方式, 去掉下面行的注释。
# PAMAuthentication yes
# 如果你要启用 简单的 Unix系统 认证方式(/etc/passwd), 去掉下面行的注释。
# UnixAuthentication yes
# 请注意,LDAPConfigFile, MySQLConfigFile, PAMAuthentication 和
# UnixAuthentication 这些指令只能被使用一次,不过,他们能被混合在一起用。
# 例如:如果你使用了 MySQLConfigFile 和 UnixAuthentication,那么 SQL 服务器
#将被访问。如果因为用户名未找 到而使 SQL 认证失败的话,就会在/etc/passwd 和
# /etc/shadow 中尝试另外一种认证,如果因 为密码错误而使 SQL 认证失败的话,认
#证就会在此结束了。认证方式由它们被给出来的顺序而被链接了起来。
# 'ls' 命令的递归限制。第一个参数给出文件显示的最大数目。第二个参数给出最大
#的子目录深度。
LimitRecursion 2000 8
# 允许匿名用户创建新目录?
AnonymousCanCreateDirs no
# 如果系统被 loaded 超过下面的值,匿名用户会被禁止下载。
MaxLoad 4
# 被动连接响应的端口范围。- for firewalling.
# PassivePortRange 30000 50000
# 强制一个IP地址使用被动响应( PASV/EPSV/SPSV replies)。 - for NAT.
# Symbolic host names are also accepted for gateways with dynamic IP
# addresses.
# ForcePassiveIP 192.168.0.1
# 匿名用户的上传/下载的比率。
# AnonymousRatio 1 10
# 所有用户的上传/下载的比率。
# UserRatio 1 10
# 是否允许下载匿名用户上传的文件?NO 为允许下载。否则会出现这个
#文件没有被管理员核准下载的提示。
AntiWarez yes
# 设置服务器绑定的IP地址和端口(缺省是所有IP地址和21端口)
# Bind 127.0.0.1,21
# 匿名用户的最大带宽(KB/s)。
# AnonymousBandwidth 8
# 所有用户的最大带宽(KB/s),包括匿名用户。
# UserBandwidth 8
# 新建目录及文件的属性掩码值。<文件掩码>:<目录掩码> .
# 177:077 if you feel paranoid.
Umask 133:022
# 认证用户允许登陆的最小组ID(UID) 。
MinUID 100
# 仅允许认证用户进行 FXP 传输。
AllowUserFXP yes
# 对匿名用户和非匿名用户允许进行匿名 FXP 传输。
AllowAnonymousFXP no
# 用户不能删除和写点文件(文件名以 '.' 开头的文件),即使用户是文件的所有者也不行。
# 如果 TrustedGID 指令是 enabled ,文件所属组用户能够访问点文件(dot-files)。
ProhibitDotFilesWrite no
# 禁止读点文件(文件名以 '.' 开头的文件) (.history, .ssh...)
ProhibitDotFilesRead no
# 永不覆盖文件。当上传的文件,其文件名已经存在时,自动重命名,如: file.1,
# file.2, file.3, ...
AutoRename no
# 是否接受匿名用户上传新文件( no = 允许上传)
# 首先要设置写入权限,可以通过以下命令设置FTP拥护的主目录的所有这和所有组为FTP
# chown ftp:ftp /var/ftp
AnonymousCantUpload no
# 仅允许来自以下IP地址的非匿名用户连接。你可以使用这个指令来打开几个公网IP来
#提供匿名FTP, 而保留一个私有的防火墙保护的IP来进行远程管理。你还可以只允一内
#网地址进行认证,而在另外 一个IP上提供纯匿名的FTP服务。
#TrustedIP 10.1.1.1
# 如果你要为日志每一行添加 PID 去掉下面行的注释。
# LogPID yes
# 设置日志文件的格式和存放位置。可以是clf,stats和w3c格式。
# 冒号后面是存放位置。
# AltLog clf:/var/log/pureftpd.log
# 使用优化过的格式为统计报告创建一个额外的日志文件。
# AltLog stats:/var/log/pureftpd.log
# 使用标准的W3C格式创建一个额外的日志文件。(与大部分的商业日志分析器兼容)
# AltLog w3c:/var/log/pureftpd.log
# 不接受 CHMOD 命令。用户不能更改他们文件的属性。
# NoChmod yes
# 允许用户恢复和上传文件,却不允许删除他们。
# KeepAllFiles yes
# 用户主目录不存在的话,自动创建,使用虚拟用户应设为YES
# CreateHomeDir yes
# 启用虚拟的磁盘限额。第一个数字是最大的文件数。
# 第二个数字是最大的总的文件大小(单位:Mb)。
# 所以,1000:10 就限制每一个用户只能使用 1000 个文件,共10Mb。
# Quota 1000:10
# 如果你的 pure-ftpd 编译时加入了独立服务器( standalone )支持,你能够改
#变 pid 文件 的位置。缺省位置是 /var/run/pure-ftpd.pid 。
# PIDFile /var/run/pure-ftpd.pid
# 如果你的 pure-ftpd 编译时加入了 pure-uploadscript 支持,这个指令将会
#使 pure-ftpd 发送关于新上传的情况信息到 /var/run/pure-ftpd.upload.pipe,这
#样 pure-uploadscript 就能读然后调用一个脚本去处理新的上传。
# CallUploadScript yes
# 这个选项对允许匿名上传的服务器是有用的。当 /var/ftp 在 /var 里时,需要保留
#一定磁盘空间 来保护日志文件。当所在磁盘分区使用超过百分之 X 时,将不在接受
#新的上传。
MaxDiskUsage 99
# 如果你不想要你的用户重命名文件的话,就设置为 'yes' 。
# NoRename yes
# 如果你确信你所有的用户都有基本的Unix知识的话,这个特性将没什么用了。
#不过,如果你是一个主机提供商的话,启用它。
CustomerProof yes
# 设置用户最大并发连接数。只有在添加了 --with-peruserlimits 编译选项进行编译后,
#这个指令才起 作用。格式是 : <每一个用户最大允许的进程>:<最大的匿名用户进程>
# 例如: 3:20 意思是同一个认证用户最大可以有3个同时活动的进程。而且同时最多
#只能有20个匿名用户进程。
# PerUserLimits 3:20
--------------------------------------------------------------------------