当前位置: > Linux服务器 > ftp >

FTP服务器之pure-ftpd源码编译及参数配置

时间:2016-04-01 21:38来源:linux.it.net.cn 作者:IT
pure-ftp虚拟用户登陆



1. Pure-ftpd介绍

PureFTPd是一款免费、安全、符合国际标准的FTP 服务器软件,具备高效性和易用性。虚拟账户、系统账户及匿名账户登陆支持,多种认证方式支持,磁盘配额支持,上传下载速率限制支持,访问IP限制支持,Mysql数据结合使用存储ftp虚拟账户支持等等,独特的实用功能为个人用户和托管服务提供商提供优质的定制化ftp配置选择。


2. 源码下载及安装

a. libiconv库安装---用户编码转换(为后面的with-rfc2640参数准备)


              cd /usr/local/src            

             wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

             tar -jxvf libiconv-1.14.tar.gz

             cd libiconv-1.14

             ./configure --prefix=/usr

            make&&make check

            make install

        b. pure-ftpd源码安装

            cd /usr/local/src

            wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz

            cd /usr/local/src/pure-ftpd-1.0.36

            ./configure --prefix=/usr/local/pure-ftpd/ --with-everything --with-altlog --with-puredb  --with-ftpwho --with-mysql –with-throttling –with-ratios –with-quotas –with-virtualhosts  –with-virtualchroot –with-sysquotas –with-cookie --with-rfc2640  --with-language=simplified-chinese

            其中config参数表如下,供参考:

             –prefix=PREFIX         指定安装目录
             –with-sysquotas        使用系统磁盘配额 (非虚拟)
              –with-altlog               支持选择日志格式(类似Apache)
              –with-puredb             支持虚拟用户 (FTP登陆用户而非系统用户)
              –with-extauth              支持扩展验证模块
             –with-pam                  启用PAM验证支持 (默认=禁用)
              –with-cookie               启用Cookie支持 (-F 选项)
              –with-throttling           支持带宽控制 (默认=禁用)
              –with-ratios                   支持 上传/下载 速度控制
             –with-quotas               支持 .ftpquota 文件(指定磁盘配额使用)
             –with-ftpwho               支持pure-ftpwho(查看在线用户的程序)
             –with-largefile              支持大于2G的文件
             –with-welcomemsg      支持 welcome.msg 向后兼容(已经过时)
             –with-uploadscript       上传后允许执行外部脚本 (测试阶段)
              –with-virtualhosts         在不同的IP地址提供虚拟服务器功能
             –with-virtualchroot        允许在chroot的环境下通过符合连接跳转到外部
             –with-diraliases               启用目录别名
             –with-nonroot                  普通模式或者说是限制模式. 如果你在该服务器上没有root权限那只有启用该项
             –with-peruserlimits            支持每个用户的并发限制
             –with-language=            语言支持< english | traditional-chinese | simplified-chinese>
              –with-ldap                     在LDAP目录中提供用户数据库
             –with-mysql                    在MySQL数据库中存放用户数据
             –with-pgsql                    在PostgreSQL数据库中存放用户数据
             –with-privsep                 启用权限分离
             –with-tls                      启用 SSL/TLS 支持 (测试阶段, 需要安装 OpenSSL)
              –with-certfile=            证书文件 (默认目录: /etc/ssl/private/pure-ftpd.pem)
              –with-rfc2640              启用兼容 RFC 2640 支持(UTF-8 编码的文件名,需要安装iconv)
              –with-everything       启用大多数选项,编译完功能版本的服务器端。

             make&&make check
             make install

            注意:这里在编译的时候,如果你在这操作之前尚未安装mysql,那么会报错,错误及解决办法如下:

             错误: configure: error: libmysqlclient is needed for MySQL support
              解决方法:  yum install mysql-devel

              拷贝pure-ftpd配置文件
              mkdir /usr/local/pure-ftpd/etc
              cp /usr/local/src/pure-ftpd-1.0.36/configuration-file/pure-ftpd.conf /usr/local/pure-ftpd/etc/        # 配置文件拷贝到/etc目录下

             cp /usr/local/src/pure-ftpd-1.0.36/purepureftpd-mysql.conf /usr/local/pure-ftpd/etc
              cp /usr/local/src/pure-ftpd-1.0.36/configuration-file/pure-config.pl /usr/local/pure-ftpd/sbin/
              似乎make install忘记了将这个文件复制到相应的目录了,我们只有手动自己做了
             chmod 755 /usr/local/pure-ftpd/sbin/pure-config.pl # 设置相应的权限

             系统集成

              cd /usr/local/bin/
               ln -s /usr/local/pure-ftpd/bin/* .
               ln -s /usr/local/pure-ftpd/sbin/* /usr/local/sbin/
               ln -s /usr/local/pure-ftpd/man/man8/* /usr/local/share/man/man8/

          c. Mysql YUM安装(我这偷懒,害怕解决依赖问题,直接YUM)

             rpm -aq |grep mysql

             rpm -e --nodeps mysql 或者 yum remove 上面列出来的系统老的mysql安装文件,比如 yum remove mysql mysql-server mysql-libs mysql-devel

            rpm qa|grep mysql 查看老的mysql是否已经卸载完全,若无,则采用find / -name "mysql"  找到关联文件用 rm强制删除

            yum install mysql mysql-server mysql-devel mysql-libs;

    3.    建立用于pureftpd认证用户的系统信息
           虚拟用户则能够更好的控制访问权限,虚拟用户是和Linux系统用户关联的独立的账户系统。所以在创建虚拟用户之前最好先创建一个系统的账户和组。
           [root@localhost  /]# groupadd -g 2000 pureftp
            [root@localhost  /]# useradd -u 2000 -g pureftp -d /var/pureftp -s/sbin/nologin pureftp

    4.    修改pure-ftp.conf

             ChrootEveryone              yes         # 启用chroot
              BrokenClientsCompatibility  yes         # 兼容不同客户端
             Daemonize                   yes            # 后台运行

             MaxClientsNumber            50      #服务器并发连接数
             MaxClientsPerIP               5          # 每个ip最大连接数
             VerboseLog                  yes          # 记录日志
             DisplayDotFiles             no          # 显示隐藏文件
             AnonymousOnly               no          # 只允许匿名用户访问
             NoAnonymous                 yes         # 不允许匿名用户连接
             SyslogFacility              ftp            # 将日志在syslog日志中显示
             DontResolve                 yes         # 不进行客户端DNS解析
             MaxIdleTime                 15          # 最大空闲时间

             #MySQLConfigFile              /usr/local/pure-ftpd/etc/pureftpd-mysql.conf      #Mysql虚拟用户配置档,在尚未弄好Mysql虚拟账户时先注销,稍后开启
             PureDB                     /usr/local/pure-ftpd/etc/pureftpd.pdb        # 用户数据库文件

             LimitRecursion              10000 8      # 浏览限制,文件10000,目录8层
             AnonymousCanCreateDirs      no          # 匿名用户可以创建目录
             MaxLoad                     4           # 超出负载后禁止下载
             PassivePortRange          50000 51000   # 被动模式端口范围
             #AnonymousRatio                1 10     # 匿名用户上传/下载比率
             UserRatio                 1 10          # 所有用户上传/下载比率
             AntiWarez                   yes         # 禁止下载匿名用户上传但未经验证的文件
             #AnonymousBandwidth            200      # 匿名用户带宽限制(KB)
             UserBandwidth               8           # 所有用户最大带宽(KB)
             Umask                       133:022     # 创建文件/目录默认掩码
             MinUID                      100         # 最大UID限制
             AllowUserFXP               yes        # 用户进行FXP传输
             AllowAnonymousFXP           no          # 对匿名用户和非匿名用户允许进行匿名 FXP 传输
             ProhibitDotFilesWrite       no          # 不能删除/写入隐藏文件
             ProhibitDotFilesRead        no          # 禁止读取隐藏文件
             AutoRename                  yes         # 有同名文件时自动重新命名
             AnonymousCantUpload         yes         # 不允许匿名用户上传文件
             AltLog                     clf:/var/log/pureftpd.log                # clf格式日志文件位置
             MaxDiskUsage               99           # 当磁盘使用量打到99%时禁止上传

             PIDFile                     /var/run/pure-ftpd.pid     #pureftp的PID
              CreateHomeDir              yes          # 如果虚拟用户的目录不存在则自动创建
             CustomerProof              yes          # 防止命令误操作

             FileSystemCharset      UTF-8         #服务器以UTF-8格式
             ClientCharset          gb2312          #客户端gb2312

未完待续.....
(责任编辑:IT)
------分隔线----------------------------