您的位置:首页 > 编程语言 > PHP开发

pure-ftpd在freebsd下的配置

2011-12-26 11:08 274 查看
一.安装配置pure-ftpd

[root@bsd01 ~]#cd /usr/ports/ftp/pure-ftpd
[root@bsd01 pure-ftpd]#make install clean

然后会出现“make config”的界面,选择需要的组件即可:
Options for pure-ftpd 1.0.21_2
────────────────────────────────────
[ ] LDAP Support for users in LDAP directories
[X] MYSQL Support for users in MySQL database
[X] PAM Support for PAM authentication
[ ] PGSQL Support for users in PostgreSQL database
[X] PRIVSEP Enable privilege separation
[X] PERUSERLIMITS Per-user concurrency limits
[X] THROTTLING Bandwidth throttling
[X] BANNER Show pure-ftpd welcome upon session start
[X] UPLOADSCRIPT Support uploadscript daemon
[X] UTF8 Support for charset conversion (expreimental)
[X] SENDFILE Support for the sendfile syscall

────────────────────────────────────
安装完毕后,可以清除一下配置选项:
[root@bsd01 pure-ftpd]#make rmconfig
如果你想让pureftpd开机自动启动,则编辑/etc/rc.conf文件,加入“ pureftpd_enable="YES" ”。
先复制pure-ftpd.conf配置文件,并授予可以修改的权限:
[root@bsd01 pure-ftpd]#cd /usr/local/etc
[root@bsd01 etc]#cp pure-ftpd.conf.sample pure-ftpd.conf
[root@bsd01 etc]#chmod u+w pure-ftpd.conf
现在编辑pure-ftpd.conf文件:
[root@bsd01 etc]#vi pure-ftpd.conf
NoAnonymous no 改为
NoAnonymous yes
# PureDB /etc/pureftpd.pdb 改为
PureDB /usr/local/etc/pureftpd.pdb
#CreateHomeDir yes改为
CreateHomeDir yes
然后重启一下pure-ftpd服务:
[root@bsd01 etc]#/usr/local/etc/rc.d/pure-ftpd restart
或者/usr/local/sbin/pure-config.dl /usr/local/etc/pure-ftpd.conf
二.配置本地用户登录
root@bsd01 ~]#pw group add ftpuser -g 2001
[root@bsd01 ~]#pw user add ftp -u 2001 -g 2001 -s /dev/null -d /home/ftp -m
[root@bsd01 ~]#id ftp
[root@bsd01 ~]#finger ftp
三.使用pureftpd.pdb文本数据库来管理ftp虚拟用户

pureftpd.pdb虚拟用户只要使用pure-pw命令来管理,pure-pw有很多参数,可以使用“pure-pw --help”来查看。
大致为:pure-pw useradd | usermod | userdel | passwd | show | mkdb | list。
作用为:添加用户 | 修改用户 | 删除用户 | 修改密码 | 查看登陆状态 | 写入数据库 | 列出所有用
现在我们做一个实例:在文本数据库中建立一个ftp用户:用户名:jetken,密码:123,home目录:/data/web
1. 先建立目录:
[root@bsd01 ~]#cd /data
[root@bsd01 data1]#mkdir web
[root@bsd01 data1]#touch ./web/test.php
[root@bsd01 data1]#chown -R 2001:2001 web
[root@bsd01 data1]#ls -l web
2. 然后添加用户:
[root@bsd01 data1]#pure-pw useradd jetken -u 2001 -g 2001 -d /data/web
Password:123
Enter it again:123
[root@bsd01 data1]#pure-pw mkdb
[root@bsd01 data1]#pure-pw list
web /data/web/./
四.配置使用mysql认证方式登录
1. 修改配置文件
cd /usr/local/etc
cp pureftpd-mysql.conf.sample pureftpd-mysql.conf
cp pure-ftpd.conf.sample pure-ftpd.conf
2. 现在开始修改 pure-ftpd.conf 配置文件了﹐以便让这台SERVER可以更好的、稳定的运行起来﹐请按下面步骤
执行﹕ ee /usr/local/etc/pure-ftpd.conf
重点介绍需要注意的配置选项:
# Cage in every user in his home directory
ChrootEveryone yes # 限制所有用户在其主目录中
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf # 打开mysql认证,文件路径一定不能错
UnixAuthentication yes # 同时开启了系统帐号的认证方式
BrokenClientsCompatibility yes #客户端可以使用IE登录ftp
DisplayDotFiles no
NoAnonymous yes
CreateHomeDir yes
3. 修改pure-ftpd.conf配置文件
ee /usr/local/etc/pureftpd-mysql.conf
MYSQLServer 127.0.0.1
MYSQLPort 3306
MYSQLSocket /tmp/mysql.sock
MYSQLUser pureftpd ##允许访问Mysql中数据库的用户名
MYSQLPassword 12345 ##允许访问Mysql中数据库的密码
MYSQLDatabase pureftpd ##允许访问Mysql中数据库的名称
MYSQLCrypt cleartext ##密码认证方式
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"
上面的选项很有用的,你可以对每一个用户单独配置上传下载的速度
4. 建立pureftpd数据库,和users表
CREATE TABLE users (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
注意这里的表格的名称一定要和pureftpd-mysql.conf中的sql语句的一致,否则会出现找不到表格的问题
5. 建立pureftpd用户
mysql>grant all privileges on pureftpd.* to pureftpd@localhost identified by '12345';
给用户pureftpd 密码12345 操作表pureftpd.*的所有权利
mysql>FLUSH PRIVILEGES;
重载受权表
6. 插入用户数据
mysql> insert into users values('******************);
7. 建立用户的主目录
Mkdir /data/test1
Chown 2003:2001 /data/test1

Pure-ftpd.conf详细配置说明
############################################################
# #
# Configuration file for pure-ftpd wrappers #
# #
############################################################

# 如果你想要使用配置文件代替命令行选项来运行 Pure-FTPd ,请运行下面的命令:
#
# /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
#
# RPM 缺省使用另外一个配置文件:
# /etc/sysconfig/pure-ftpd
#
# 请不要忘了浏览一下 http://www.pureftpd.org/documentation.html
# 文档,查看全部的选项列表。

# 限制所有用户在其主目录中

ChrootEveryone yes

# 如果前一个指令被设置为了 "no",下面组的成员(GID)就不受主目录的限制了。而其他的用户还是
# 会被限制在自己的主目录里。如果你不想把任何用户限制在自己的主目录里,只要注释掉 ChrootEveryone
# 和 TrustedGID 就可以了。

# TrustedGID 100

# 兼容ie等比较非正规化的ftp客户端

BrokenClientsCompatibility no

# 服务器总共允许同时连接的最大用户数

MaxClientsNumber 50

# 做为守护(doemon)进程运行(Fork in background)

Daemonize yes

# 同一IP允许同时连接的用户数(Maximum number of sim clients with the same IP address)

MaxClientsPerIP 8

# 如果你要记录所有的客户命令,设置这个指令为 "yes"。
# This directive can be duplicated to also log server responses.

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

# 定制用户登陆后的显示信息(Display fortune cookies)

# FortunesFile /usr/share/fortune/zippy

# 在日志文件中不解析主机名。日志没那么详细的话,就使用更少的带宽。在一个访问量很大
# 的站点中,设置这个指令为 "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

# 所有用户的上传/下载的比率。
# This directive superscedes the previous one.

# UserRatio 1 10

# 不接受所有者为 "ftp" 的文件的下载。例如:那些匿名用户上传后未被本地管理员验证的文件。

AntiWarez yes

# 服务监听的IP 地址和端口。(缺省是所有IP地址和21端口)

# Bind 127.0.0.1,21

# 匿名用户的最大带宽(KB/s)。

# AnonymousBandwidth 8

# 所有用户的最大带宽(KB/s),包括匿名用户。
# Use AnonymousBandwidth *or* UserBandwidth, both makes no sense.

# 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 = 允许上传)

AnonymousCantUpload no

# 仅允许来自以下IP地址的非匿名用户连接。你可以使用这个指令来打开几个公网IP来提供匿名FTP,
# 而保留一个私有的防火墙保护的IP来进行远程管理。你还可以只允许一内网地址进行认证,而在另外
# 一个IP上提供纯匿名的FTP服务。

#TrustedIP 10.1.1.1

# 如果你要为日志每一行添加 PID 去掉下面行的注释。

# LogPID yes

# 使用类似于Apache的格式创建一个额外的日志文件,如:
# fw.c9x.org - jedi [13/Dec/1975] "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

# 是 'customer proof' : 工作区(workaround)反对普通的客户错误,类似于:'chmod 0 public_html' 的错误。
# 那是一个有效的命令,不过,将导致无知的客户所定他们自己的文件,将使你的技术支持忙于愚蠢的的问题中。
# 如果你确信你所有的用户都有基本的Unix知识的话,这个特性将没什么用了。不过,如果你是一个主机提供商
# 的话,启用它。

CustomerProof yes

# 每一个用户的并发限制。只有在添加了 --with-peruserlimits 编译选项进行编译后,这个指令才起
# 作用。(大部分的二进制的发布版本就是例子)
# 格式是 : <每一个用户最大允许的进程>;:<最大的匿名用户进程>;
# 例如: 3:20 意思是同一个认证用户最大可以有3个同时活动的进程。而且同时最多只能有20个匿名用户进程。

# PerUserLimits 3:20

本文出自 “FTP” 博客,请务必保留此出处http://zhzhang.blog.51cto.com/2788120/751071
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: