如何在linux中配置pureftpd为系统服务

参考在线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
--------------------------------------------------------------------------
此条目发表在 Linux 技术 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>