记录学习笔记、分享资源工具、交流技术思想、提升工作效率

centos6.3安装pureftpd+mysql

运维 xiaomudk 6年前 (2015-08-01) 6395次浏览 0个评论

centos6.3安装pureftpd+mysql

一、pureftpd简介

Pure-FTPd 是一款免费(BSD开源协议)的,安全的,高质量和符合标准的FTP服务器。 侧重于运行效率和易用性。最重要的是可以支持设置客户端默认编码,这样windows和linux之间用这个ftp就解决了乱码的问题。

自从 0.99.2 版本开始, pure-ftpd 就开始支持虚拟用户。虚拟用户方式十分类似 /etc/passwd ,将用户的相关信息,如口令、姓名、 uid 、目录等,存入文件。但是该文件只适用于 FTP 。
这意味着,可以为 FTP 设置虚拟用户,而不需要在系统中添加系统用户。同时,可以为这些用户单独设置磁盘配额、带宽等限制。很多虚拟用户可以共享同一个系统用户的属性,因此建议为这些虚拟用户单独创建一个系统用户,从而方便管理。

二、系统环境及软件版本

操作系统 centos6.3
pureftpd版本 pure-ftpd-1.0.36
mysql版本 mysq5.1.73-3
apache版本 httpd2.2.15-39
php版本 php5.3.3-40

为了防止影响测试效果,已关闭系统的selinux和iptables

三、安装mysql

1..yum安装mysql

[root@localhost ~]# yum install mysql-server mysql-devel

mysql-server : mysql服务端
mysql-devel : mysql的开发包,包含所需的库和包含文件,安装pureftpd的时候需要。

2.启动mysql

[root@localhost ~]# /etc/init.d/mysqld start

3.修改mysql密码

[root@localhost ~]# /usr/bin/mysqladmin -u root -h localhost password '123456'

因为是测试环境,我这里密码设置的比较简单。线上的话,密码要设置复杂一点!

4.登陆测试

[root@localhost ~]# mysql -uroot -p
Enter password:              #在这里输入密码
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

退出的话,输入quit。

四、pureftpd的安装与配置

1.安装pureftpd

1).编译配置

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz
[root@localhost src]# tar xf pure-ftpd-1.0.36.tar.gz
[root@localhost src]# cd pure-ftpd-1.0.36
[root@localhost pure-ftpd-1.0.36]# ./configure --prefix=/usr/local/pureftpd  --with-mysql --with-quotas --with-cookie  --with-altlog  --with-shadow  --with-throttling --with-ratios

编译配置选项详解:

--prefix=/usr/local/pureftpd # 改变安装路径前缀,默认是"/usr/local"
--with-mysql                 # 使用本地MySQL来支持用户数据库.如果MySQL安装在自定义的地方,你可以使用--with-mysql=<directory>
--with-quotas                # 激活虚拟配额
--with-cookie                # 当用户记录进来时,显示一个fortune或者自定义的标题
--with-altlog                # 支持用可选择的格式江日志写到特别的文件中
--with-throttling            # 支持带宽限制
--with-ratios                #支持上传/下载比例,比如说ratios设为2:5,用户必须上传至少2MB的资源,才能下载5MB

pureftpd 其它的编译参数选项可以查看本文的附录

2).安装

[root@localhost pure-ftpd-1.0.36]# make && make install

3).复制配置文件及启动文件
复制pureftpd配置文件

[root@localhost pure-ftpd-1.0.36]# cp configuration-file/pure-config.pl /usr/local/pureftpd/sbin/   #使用这个启动pureftpd,使用配置文件代替命令行选项来运行pureftpd
[root@localhost pure-ftpd-1.0.36]# chmod +x /usr/local/pureftpd/sbin/pure-config.pl
[root@localhost pure-ftpd-1.0.36]# mkdir /usr/local/pureftpd/etc                        #创建pureftp配置文件目录
[root@localhost pure-ftpd-1.0.36]# cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/  #pureftpd的主配置文件
[root@localhost pure-ftpd-1.0.36]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/      #pureftpd和mysql结合的配置文件

4).把/usr/local/pureftpd/etc/ 做个软链接到/etc/pureftpd下方便管理:

[root@localhost pure-ftpd-1.0.36]# ln -s /usr/local/pureftpd/etc/ /etc/pureftpd

5).复制修改pureftpd的启动文件

[root@localhost pure-ftpd-1.0.36]# cp contrib/redhat.init /etc/init.d/pureftpd       #pureftpd的启动脚本
[root@localhost pure-ftpd-1.0.36]# chmod +x /etc/init.d/pureftpd 
[root@localhost pure-ftpd-1.0.36]# sed -i 's#/usr/local/sbin#/usr/local/pureftpd/sbin#' /etc/init.d/pureftpd    #修改pureftpd所在目录
[root@localhost pure-ftpd-1.0.36]# sed -i 's#/etc/pure-ftpd.conf#/usr/local/pureftpd/etc/pure-ftpd.conf#' /etc/init.d/pureftpd #修改配置文件目录

2.配置pureftpd

编辑/etc/pureftpd/pure-ftpd.conf文件,确保 ChrootEveryone, MySQLConfigFile, 和 CreateHomeDir这三个处于启动状态

[root@localhost ~]# cp /etc/pureftpd/pure-ftpd.conf{,_bak}     #修改之前先备份,养成好习惯
[root@localhost ~]# vi /etc/pureftpd/pure-ftpd.conf
[...]
ChrootEveryone              yes
[...]
MySQLConfigFile               /etc/pureftpd/pureftpd-mysql.conf       #这行路径要修改下
[...]
CreateHomeDir               yes
[...]

ChrootEveryone是确保每个虚拟用户限制在其根目录,不能浏览其它目录。
CreateHomeDir是确保pureftpd自动建立相应目录

pureftpd 配置文件详解可以查看本文的附录

四、pureftpd结合mysql的配置

1.添加ftp虚拟用户

添加ftp组(ftpgroup)和用户名(ftpuser),为所有虚拟ftp用户映射。可以自己定义ftp用户组和用户名(gid和uid为1000)。

[root@localhost ~]# groupadd -g 1000 ftpgroup        
[root@localhost ~]# useradd  -u 1000 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

2.在mysql数据库中创建pureftpd库和相应的用户

1).创建pureftpd库及库管理用户
这里密码为123456,可以自行修改

[root@localhost ~]# mysql -uroot -p
Enter password:
[...]
mysql> CREATE DATABASE pureftpd;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;       #使添加的用户生效

2).在pureftpd库里添加ftpd表,用于保存ftp用户

mysql>  USE pureftpd;
mysql>  CREATE TABLE `users` (
        `User` varchar(16) NOT NULL default '',
        `Password` varchar(32) binary NOT NULL default '',
        `Uid` int(11) NOT NULL default '1000',
        `Gid` int(11) NOT NULL default '1000',
        `Dir` varchar(128) NOT NULL default '',
        `QuotaFiles` int(10) NOT NULL default '0',
        `QuotaSize` int(10) NOT NULL default '0',
        `ULBandwidth` int(10) NOT NULL default '0',
        `DLBandwidth` int(10) NOT NULL default '0',
        `Ipaddress` varchar(15) NOT NULL default '*',
        `Comment` tinytext,
        `Status` enum('0','1') NOT NULL default '1',
        `ULRatio` smallint(5) NOT NULL default '1',
        `DLRatio` smallint(5) NOT NULL default '1',
        PRIMARY KEY  (`User`),
        UNIQUE KEY `User` (`User`)
        ) ENGINE=MyISAM;

users数据表解释如下:

  • User:虚拟pureftpd用户名。
  • Password:虚拟用户密码,确保把密码转成MD5再插入。
  • UID:ftp用户的ID。
  • GID:ftp用户组的ID。
  • Dir:ftp用户对应的根目录。
  • QuotaFiles:最大建立的文件数量。“0”表示不限制。
  • QuotaSize:最大存储空间,单位为MB。“0”表示不限制。
  • ULBandwidth:上传最大速度,单位为KB/s。
  • DLBandwidth:下载最大速度,单位为KB/s。
  • ipaccess:可以连接ftp服务器的IP。“*”表示任何IP可以连接。
  • comment:备注。
  • status:0或1,0表示用户禁用。
  • ULRatio 上传/下载比例中的上传比
  • DLRatio 上传/下载比例中的下传比

3).在pureftpd库里添加admin表,用于登陆web界面,管理ftp用户

mysql>  CREATE TABLE admin (
        Username varchar(35) NOT NULL default '',
        Password char(32) binary NOT NULL default '',
        PRIMARY KEY  (Username)
        ) ENGINE=MyISAM;

4).创建一个管理员,方便后面登陆web界面(用户名为admin,密码为ftpadmin)

mysql> INSERT INTO admin VALUES ('admin',MD5('ftpadmin'));

5).修改完退出mysql:

mysql>  quit

3.编辑pureftpd-mysql.conf

1).备份并清空pureftpd-mysql.conf:

[root@localhost ~]# cp /etc/pureftpd/pureftpd-mysql.conf{,_bak}
[root@localhost ~]# :>/etc/pureftpd/pureftpd-mysql.conf

2).往pureftpd-mysql.conf文件里添加以下内容:

MYSQLServer     localhost
MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   123456
MYSQLSocket      /var/lib/mysql/mysql.sock
MYSQLDatabase   pureftpd

#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt      md5
MYSQLGetPW      SELECT Password FROM users WHERE User="\L" AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MYSQLGetUID     SELECT Uid FROM users WHERE User="\L" AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MYSQLGetGID     SELECT Gid FROM users WHERE User="\L"AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MYSQLGetDir     SELECT Dir FROM users WHERE User="\L"AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetQTASZ   SELECT QuotaSize FROM users WHERE User="\L"AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetQTAFS   SELECT QuotaFiles FROM users WHERE User="\L"AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetRatioUL SELECT ULRatio FROM users WHERE User='\L' AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User='\L' AND status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")

前面6行为mysql的配置信息(主机名、端口、数据库用户、密码、mysql的socket文件路径、数据库名称);MYSQLCrypt为对用户密码的加密方式;后面的配置是告诉pureftpd怎么从mysql中取出用户相应信息,前面已做介绍。
后面sql语句里面的"\L"等信息的含义:

  • \L is replaced by the login of the user trying to authenticate. #通过认证的用户名
  • \I is replaced by the IP address the user connected to. #用户访问的IP地址(如ftp服务器在不同的ip地址上开放多个ftp服务,这个就能判断用户访问的是哪个ftp服务)
  • \P is replaced by the port number the user connected to. #用户访问的端口号(作用同上)
  • \R is replaced by the IP address the user connected from. #访问者的IP地址
  • \D is replaced by the remote IP address, as a long decimal number. #访问者的以十进制表示的ip地址(我们平时用的ip为点分十进制)

4.启动pureftpd,并添加开机启动

[root@localhost ~]# /etc/init.d/pureftpd start
[root@localhost ~]# chkconfig pureftpd on

五、使用web界面来管理pureftpd

使用"user manager for PureFTPd"这个php写的web来管理pureftpd

1.安装apache和php

[root@localhost ~]# yum install httpd httpd-devel php* -y
[root@localhost ~]# sed -i 's/^short_open_tag =.*/short_open_tag = On/' /etc/php.ini  #开启以后可以使用PHP的短标签:(<? ?>)

安装php的时候使用php*,是把php和php的扩展都装上,防止少装了扩展影响使用效果(生产环境慎用)

2.下载user manager for PureFTPd,并安装

1).下载并放到web目录中

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz
[root@localhost src]# tar xf ftp_v2.1.tar.gz -C /var/www/html/          #解压至apache的web目录

2).修改user manager for PureFTPd里的mysql配置

[root@localhost ~]# sed -i 's/$LANG =.*;/$LANG = "chinese";/' /var/www/html/ftp/config.php        #修改页面语言
[root@localhost ~]# sed -i 's/$DBHost =.*;/$DBHost = "localhost";/' /var/www/html/ftp/config.php   #修改连接mysql的主机名
[root@localhost ~]# sed -i 's/$DBLogin =.*;/$DBLogin = "pureftpd";/' /var/www/html/ftp/config.php   #修改连接mysql的用户名
[root@localhost ~]# sed -i 's/$DBPassword =.*;/$DBPassword = "123456";/' /var/www/html/ftp/config.php #修改连接mysql的密码
[root@localhost ~]# sed -i 's/$DBDatabase =.*;/$DBDatabase = "pureftpd";/' /var/www/html/ftp/config.php #修改连接mysql的库名
[root@localhost ~]# sed -i 's/$FTPAddress =.*;/$FTPAddress = "localhost:21";/' /var/www/html/ftp/config.php #修改ftp地址及端口
[root@localhost ~]# sed -i 's/$DEFUserID =.*;/$DEFUserID = "1000";/' /var/www/html/ftp/config.php    #修改默认映射ftp系统用户的UID
[root@localhost ~]# sed -i 's/$DEFGroupID =.*;/$DEFGroupID = "1000";/' /var/www/html/ftp/config.php   #修改默认映射ftp系统用户的GID
[root@localhost ~]# sed -i 's/$EnableQuota =.*;/$EnableQuota = 1;/' /var/www/html/ftp/config.php   #开启磁盘限额
[root@localhost ~]# sed -i 's/$EnableRatio =.*;/$EnableRatio = 1;/' /var/www/html/ftp/config.php   #上传/下载比例限制

3).把user manager for PureFTPd自带的安装文件重命名(这个安装文件就是修改mysql配置的,处于安全考虑,重命名)

[root@localhost ~]# mv /var/www/html/ftp/install.php /var/www/html/ftp/install.php_bak

六.测试

1.启动apache

[root@localhost ~]# /etc/init.d/httpd start

2.创建ftp目录及新建个文件,方便查看测试效果

[root@localhost ~]# mkdir -p /var/ftp/public
[root@localhost ~]# echo 11111 > /var/ftp/public/1.txt

3.使用ip/web从本地访问ftp管理界面

Alt text

使用上面添加的管理员用户名和密码登陆(用户名admin,密码ftpadmin),登陆后的界面:
Alt text

4.添加一个ftp用户

Alt text

添加过用户:
Alt text

5.本地登陆测试

我使用的是ftp客户端是filezilla:
Alt text
出现下图,就证明ftp已登陆成功:
Alt text

附录1.pureftpd编译参数中文详解

"./configure"脚本允许你在编译前添加一些参数。

/------------------------------

"--with-"开关

--with-altlog:除了在系统控制台输出之外,支持用可选择的格式江日志写到特别的文件中。现在能实现CLF、Stats、W3C和xferlog。

CLF(常见日志格式)是Apche、WebFS、Roxen以及很多Web服务器所使用的基本格式。这些日志文件仅仅记载文件传输并且他们能使网络统计软件(Analog、Webalizer等)不要去解析你的FTP服务器的装载。数据格式是一种为日志解析软件设计的特殊的输出格式。W3C格式是很多商业日志分析器所使用的标准语法解析格式(所有由IIS支持的分析器都应该能处理这个)。xferlog是由wu-ftpd创造的传统格式。查看这篇文档后面的-O选项来获得更多信息。

--with-brokenrealpath:一些Solaris的版本实现了a broken realpath如果altlog或者pure-uploadscript在你的系统上不能正常工作,尝试使用这个开关重新编译。

--with-certfile=<file>:有SSL证书的文件。默认是/etc/ssl/private/pure-ftpd.pem。

--with-cookie:当用户记录进来时,显示一个fortune或者自定义的标题。(查看'-F'选项)

--with-diraliases:支持目录别名("cd"命令的"shortcuts")。请查看关于这个的适当部分(文档的后续部分)。

--with-everything:建立一个大的包含了所有细节都打开的服务,altlog、cookies、throttling、ratios、ftpwho、upload script、virtual users

(puredb)、quotas、virtual hosts、directory aliases、external authentication 和 Bonjour。

--with-extauth:编译支持外部用户验证模块。在激活这个功能之前请阅读README.Authentication-Modules和pure-authd的man。大多数用户用户并不需要它。

--with-ftpwho:支持'pure-ftpwho'命令。激活这个功能需要更多的内存。当服务器以独立启动模式运行的时候最好使用,这会比inetd模式慢。

--with-language=english
--with-language=german
--with-language=romanian
--with-language=french
--with-language=polish
--with-language=spanish
--with-language=danish
--with-language=italian
--with-language=brazilian-portuguese
--with-language=slovak
--with-language=dutch
--with-language=korean
--with-language=swedish
--with-language=norwegian
--with-language=russian
--with-language=traditional-chinese
--with-language=simplified-chinese
--with-language=hungarian
--with-language=catalan
--with-language=czech: 改变服务消息的语言。
默认是英语。如果你想提供一个翻译,请翻译'src/message_en.h'文件并发送到<j@pureftpd.org>

--with-largefile:支持在32位系统框架内下载大于2G的文件。通过FTP传输这么大的文件是一个奇怪的想法,并且你的文件系统必须支持,同样还有内核以及libc。当然FTP客户端对大文件同样是安全的。如果该功能被激活了,下载会慢一点(或者占用更多的CPU资源),这是由于目前Linux内核的限制。提醒一下,别激活这个功能玩儿,除非你真的想下载大于2G的文件。

--with-ldap:支持使用本地LDAP目录,当这个选项被激活,系统帐户将被忽略。你需要OpenLDAP来使用这个功能。如果OpenLDAP安装在了自定义的地方,你可以使用--with-ldap=<directory>。查看README.LDAP文件获得更多关于LDAP和Pure-FTPd的有关信息。

--with-minimal:为了有效地使用先进FTP客户端的功能,Pure-FTPd实现了FTP协议的最基本要求,还加了很多扩展(SITE IDLE,SITE CHMOD, MLSD, ...)。使用--with-minimal开关,这些扩展功能将不会被编译。因此没有独立启动模式服务,查询用户、用户组,humor以及ASCII支持。但是可执行文件的会比默认安装要小。你至少需要GCC3.3来使用该开关编译。正则表达式将会被编译。如果仍想缩小大小,跟--with-minimal一起使用--without-globbing。如果你要建立的是嵌入式系统,使用该开关。在其他情况下,为了防止用户的抱怨(尤其是windows客户端),请不要使用。

--with-mysql:使用本地MySQL来支持用户数据库。当该选项被激活,系统帐户会被忽略。使用该功能必须安装MySQL客户端程序库。如果MySQL安装在自定义的地方,你可以使用--with-mysql=<directory>。查看README.MySQL文件获得更多关于MySQL和Pure-FTPd的有关信息。

--with-nonroot:定制一个不需要root权限来启动的服务。任何普通用户都能运行该服务。如果你在一个非专用的主服务上有shell接入限制这将非常有用。但是一些功能将被禁止,并且密码只能由LDAP、SQL或者PureDB来验证。当虚拟chroot()被激活,服务开始的那个目录访问将受限制。这是一个不安全的模式,用来为普通(非root)用户临时定制服务。在独立启动模式下2121端口将被默认监听。如果你想使用nonroot模式,你必须编译和重新安装软件(./configure --prefix=... && make install-strip)。/sbin、/bin和/man目录将在prefix=...中创建。但是你必须再添加一个/etc目录(拥有将运行Pure-FTPd用户的可读写权限)。

--with-pam:使用pluggable用户验证模块。如果你合法的登录/密码组合总是被拒绝的话请不要使用。but the real fix would be to

fix your PAM configuration。你需要建立一个/etc/pam.d/pure-ftpd文件来正确使用PAM用户验证。'pam'目录中包含了这样一个文件的例子。

--with-paranoidmsg:favor paranoid信息取代系统友好的信息。当激活该功能,登陆失败不管什么缘由都会显示相同的信息给用户,不使用该选项,如果是密码问题将显示"Authentication failure",如果该用户被系统拒绝访问将显示"Sorry,I can't trust you"。

--with-peruserlimits:激活单用户并发限制。非常loaded的服务器不要使用。

--with-pgsql:使用本地Postgres来支持用户数据库。当该选项被激活,系统帐户会被忽略。使用该功能必须安装Postgres客户端程序库。如果Postgres安装在自定义的地方,你可以使用--with-pgsql=<directory>。查看README.PGSQL文件获得更多关于Postgres和Pure-FTPd的有关信息。

--with-probe-random-dev:Pure-FTPd使用/dev/arandom、/dev/urandom或者/dev/random设备来提供随机数。这些设备的存在在编译时已经探查好了。如果在一台主机上编译好程序在另一台主机上运行,该选项将激活实时探查功能。在Linux和BSD系统中没有作用,但是Solaris和QNX还是需要的。

--with-puredb:支持虚拟用户,就是一个本地用户数据库,独立于你的系统帐户。请查看README.Virtual-Users文件来获得更多关于虚拟用户的信息。

-with-quotas:激活虚拟配额。使用虚拟配额,你可以限制一个用户在他的帐户中可存储的最大文件数和总大小。查看"quotas"部分在文档的后续部分。

--with-ratios:支持上传/下载ratios, to please w4r3z fr34k2.

--with-sysquotas:支持系统配额(不是Pure-FTPd的虚拟quotas)。仅在你确实想使用系统配额时激活该功能。

--with-throttling:支持带宽限制(见下)。

--with-uploadscript:从0.98版开始,Pure-FTPd有了一个关于上传的好功能。在成功上传之后可以自动调用任何一个外部程序或脚本。这需要通过Pure-FTPd安装包安装另一个程序,叫做'pure-uploadscript'。查看man手册获得更多关于这个的信息。

--with-virtualchroot:一般情况下,当用户使用chroot(-A和-a选项)后,不可能从他的根目录中离开。激活该功能将使得这成为可能:始终会有跟着一个符号连接,甚至他们指向的目录不在用户根目录中。这对于使用共享目录是非常有用的(例如,在每一个主目录中建立一个符号连接指向/var/incoming)。该功能默认不被激活。

--with-virtualhosts:支持虚拟主机。这意味着,你可以为每个不同的IP地址建立不同的匿名FTP服务器。如果你的服务器只有一个IP地址,你并不需要那个功能。但是如果你有多个IP地址,而且你希望当客户端连接到IP ***时指向目录/etc/pure-ftpd/xxx/的内容而不是~ftp/,激活该选项。请阅读文档最后的"虚拟服务器"部分。

--with-welcomemsg:为了跟其他的FTP服务器兼容而读取'welcome.msg'。这是个安全隐患,因为匿名用户可以上传'welcome.msg'文件来加入到随机标语中。Pure-FTPD默认使用'.banner'文件。

--with-boring:显示"professional-looking"消息。

--with-privsep:激活特权分离(查看文档的后续部分)。

--with-bonjour:激活在MacOS上的Bonjour支持(查看-v开关)。

--with-rfc2640:激活charset conversion。它添加a dependency over the iconv library,并且需要一点更多CPU时。查看-8和-9开关。

/-----------------------------

"--without-"开关

-----------------------------/

--without-ascii:不支持7位传输(ASCII),如果你有用户使用windows客户端来发送脚本和HTML文件,别使用这个功能,不然他们会对你大叫。

--without-banner:不显示初始标语。这是盲目地追求安全性。

--without-capabilities:如果能找到capabilities library,Pure-FTPd将试着使用它来提高安全性。该选项将不管测试直接忽略这个库。如果capabilities library在你的系统上不能正常运作,试试这个。libcap可以从ftp://ftp.kernel.org/pub/linux/libs/security/linux-privs/下载。

--without-globbing:不包含globbing代码。这可以减少内存占用,但正则表达式将不起作用(例如'ls *.rpm')。大多数用户不必这么这做,gobbing是一个很好的功能。

--without-humor:要是你发现这个选项所做的并不指向源代码可真幸运。(恶作剧?)

--without-inetd:如果你总是在独立启动模式下运行Pure-FTPd,激活这个选项能够节省一些代码,不要同时激活--without-inetd和--without-standalone,没有这两种模式服务将无法运行。这两个选项在编译好的发行版中都没激活,inetd-like和standalone模式都是支持的。

--without-iplogging:不记录任何IP地址来保证机密性尤其对于政府服务器。

--without-nonalnum:paranoid文件名检查:只允许字母数字的字符集,不要盲目的激活该选项,不然你的用户会抱怨你的。

--without-unicode:不接受非拉丁语系的字符。如果你的文件文件名中没有特殊字符则推荐使用。

--without-senfile:在Linux、Solaris、HPUX和FreeBSD的内核中,Pure-FTPd为了减少CPU和内存的使用而调用了一个特殊的系统函数sendfile()。它在大多数文件系统中正常运行。但是这样一个优化并没有被当前内核实现在所有的文件系统中。用户反映在FreeBSD下的SMBFS(Samba)和Linux下的TmpFS和NTFS上用Pure-FTPd下载文件会失败(服务器报错为"broken pipe"或者"Error during write to data connection")。如果你打算从这些文件系统上提供服务,你得使用--without-sendfile来激活一个workaround。PA-Risc Linux系统也报告说需要这个选项。

--without-cork:禁止TCP_CORK优化。一些Linux的变种,例如Playstation需要这么做。

--without-standalone:FTP服务通常能以独立启动模式运行(不依赖任何super-server)。如果你不需要这个功能,并且你希望节约代码体积,加上这个选项。g2s、xinetd或者tcpserver这样的超级服务将强制运行这个服务。但是standalone模式是最受欢迎的操作模式。

--without-usernames:目录列表中永不输出用户和组的名,除了UID和GID。这提高了安全和性能,但是一些用户发现这样不太易用。

附录2:pureftpd配置文件详解

# 限制所有用户在其主目录中 
ChrootEveryone              yes 
# 如果前一个指令被设置为了 "no",下面组的成员(GID)就不受主目录的限制了。而其他的用户还是 
# 会被限制在自己的主目录里。如果你不想把任何用户限制在自己的主目录里,只要注释掉 ChrootEveryone 
# 和 TrustedGID 就可以了。 
# TrustedGID                    100 
# 兼容ie等比较非正规化的ftp客户端 
BrokenClientsCompatibility  no 
# 服务器总共允许同时连接的最大用户数 
MaxClientsNumber            50 
# 做为守护(doemon)进程运行
Daemonize                   yes 
# 同一IP允许同时连接的用户数
MaxClientsPerIP             8 
# 如果你要记录所有的客户命令,设置这个指令为 "yes"。 
#客户命令也会被记录到系统日志中
VerboseLog                  no 
# 即使客户端没有发送 '-a' 选项也列出隐藏文件,也就是显示以点开头的文件 
DisplayDotFiles             yes 
# 不允许认证用户,仅作为一个公共的匿名FTP。 
AnonymousOnly               no 
# 不允许匿名连接,仅允许认证用户使用。 
NoAnonymous                 no 
# Syslog日志类型 (auth, authpriv, daemon, ftp, security, user, local*) 
# 默认的日志类型是 "ftp"。 "none" 将禁止日志. 
SyslogFacility              ftp 
# 定制用户登陆后的显示信息
# FortunesFile              /usr/share/fortune/zippy 
# 在日志文件中不解析主机名。日志没那么详细的话,就使用更少的带宽。在一个访问量很大  
# 的站点中,或者你没有一个能工作的DNS的话。设置这个指令为 "yes"
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 
# 被动连接响应的端口范围。-记得加到防火墙里 
# PassivePortRange          30000 50000 
#强制一个 IP地址 使用被动模式
# ForcePassiveIP                192.168.0.1 
# 匿名用户的上传/下载的比率。 
# AnonymousRatio                1 10 
# 所有用户的上传/下载比例
# UserRatio                 1 10 
# 不接受所有者为 "ftp" 的文件的下载。例如:那些匿名用户上传后未被本地管理员验证的文件。 
AntiWarez                   yes 
# 服务监听的IP 地址和端口。(缺省是所有IP地址和21端口) 
# Bind                      127.0.0.1,21 
# 匿名用户的最大带宽(KB/s)。 
#若为10000:10表示上传为10000KB/s,下载限制为10KB/s
# AnonymousBandwidth            8 
# 所有用户的最大带宽(KB/s),包括匿名用户。 
# UserBandwidth             8 
# 新建目录及文件的属性掩码值。<文件掩码>:<目录掩码> . 
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 = 允许上传) 
AnonymousCantUpload         no 
# 指定一个IP地址,只有该IP地址可以允许认证用户访问。你可以使用这个指令来打开几个公网IP来提供匿名FTP, 
# 而保留一个私有的防火墙保护的IP来进行远程管理。你还可以只允许一内网地址进行认证,而在另外 
# 一个IP上提供纯匿名的FTP服务。 
#TrustedIP                  10.1.1.1 
# 如果你要为日志每一行添加 PID  去掉下面行的注释。 
# LogPID                     yes 
# 使用类似于Apache的格式创建一个额外的日志文件,如果要开启日志需要在编译的时候加上--with-altlog
# 如: fw.c9x.org - jedi [13/Dec/1975:19:36:39] "GET /ftp/linux.tar.bz2" 200 21809338 
# 这个日志文件能被 www 流量分析器处理。 
# AltLog                     clf:/var/log/pureftpd.log 
# 使用优化过的格式为统计报告创建一个额外的日志文件。 
# AltLog                     stats:/var/log/pureftpd.log 
# 使用标准的W3C格式创建一个额外的日志文件。(与大部分的商业日志分析器兼容) 
# AltLog                     w3c:/var/log/pureftpd.log 
# 不接受 CHMOD 命令。用户不能更改他们文件的属性。 
# NoChmod                     yes 
# 允许用户恢复和上传文件,却不允许删除他们。 
# KeepAllFiles                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 
# 是否启用客户校验: 工作区(workaround)反对普通的客户错误,类似于:'chmod 0 public_html' 的错误。 
# 那是一个有效的命令,不过,将导致无知的客户所定他们自己的文件,将使你的技术支持忙于愚蠢的的问题中。 
# 如果你确信你所有的用户都有基本的Unix知识的话,这个特性将没什么用了。不过,如果你是一个主机提供商 
# 的话,启用它。 
CustomerProof yes 
# 每一个用户的并发限制。只有在添加了 --with-peruserlimits 编译选项进行编译后,这个指令才起 
# 作用。(大部分的二进制的发布版本就是例子) 
# 格式是 : <每一个用户最大允许的进程>:<最大的匿名用户进程> 
# 例如: 3:20 意思是同一个认证用户最大可以有3个同时活动的进程。而且同时最多只能有20个匿名用户进程。 
# PerUserLimits 3:20 
#上传文件时,ftp里已经有一个同步的旧文件了,不会立即覆盖,
#会先上传到一个临时文件,等文件上传完后,覆盖旧文件;这个选项不兼容虚拟配额(virtual quotas)
# NoTruncate               yes

#SSL/TLS加密设置,0禁用(默认);1接受传统和加密的会话;2拒绝不使用ssl/TLS加密的连接
#要使用SSL/TLS,加密,必须满足下面三个条件: 
#1)安装pureftpd的时候,加上了--with-tls参数
#2)有一个有效的证书
#3)只有兼容的客户端可以登录
# TLS                      1

# List of ciphers that will be accepted for SSL/TLS connections
# Prefix with -S: in order to totally disable SSL but not TLS.
# 接受SSL/TLS连接的证书
# 前缀为s:为了完全禁用SSL但不是TLS。
#这个参数没有搞懂

# TLSCipherSuite           HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3

# 在独立模式下只监听IPv4地址
# 默认ipv4和ipv6都监听

# IPV4Only                 yes

# 在独立模式下只监听IPv6地址

# IPV6Only                 yes

# UTF-8 support for file names (RFC 2640)
#文件名字支持utf-8
# Define charset of the server filesystem and optionnally the default charset
# for remote clients if they don't use UTF-8.
#远程客户端如果他们不使用UTF-8。为它定义服务器的文件系统的默认字符集或其它字符集
# 在安装pureftpd的时候需要加上参数 --with-rfc2640

# FileSystemCharset     big5
# ClientCharset         big5

发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址