参考在线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 --------------------------------------------------------------------------