Ubuntu Pure-Ftpd安装配置

安装

#安装
sudo apt-get install pure-ftpd-mysql mysql-server
 
#t添加用户组 和 用户
sudo groupadd –g 2001 ftpgroup
sudo useradd –u 2001 –s /bin/false –d /dev/null –c “Pure-FTPd User” –g ftpgroup ftpuser

Chroot设置
可以在配置目录/etc/pure-ftpd/conf/下面创建一个名为ChrootEveryone的文件,并将内容设置为yes。这样设置后,每个FTP用户自己的HOME目录就成了它的root目录。
下面的设置告诉Pure-FTPd不要为用户自动创建HOME目录。

sudo sh -c "echo 'NO' > /etc/pure-ftpd/conf/CreateHomeDir"

为Pure-FTPd创建MySQL数据库

create database ftpusers;
use ftpusers;
create table if not exists users(
User varchar(16) not null default '', 
Password varchar(32) not null default '', 
Uid int(11) not null, Gid int(11) not null, 
Dir varchar(128) not null default '', 
QuotaFiles int(10) not null default '500',
QuotaSize int(10) not null default '30', 
ULBandwidth int(10) not null default '80',
DLBandwidth int(10) not null default '80',
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;

以下为各字段含义:

User 			FTP用户名
Password 		该用户的密码
Uid 			该用户属性Unix系统UserID
Gid			该用户属性Unix系统GroupID
Dir 				该用户的FTP目录
QuotaFiles 		文件数量限额(0为不做限制)
QuotaSize 		磁盘限额,单位为MB(0为不作限制)
ULBandwidth 	        上传数量限制,单位为KB/s(0为不限制)
DLBandwidth 	        下载速率限制,单位为KB/s(0为不限制)
Ipaddress 		IP地址限制(*为不限制)
Comment			备注
Status 			锁定/解锁状态
ULRatio 		上传/下载比例中的上传比
DLRatio			上传/下载比例中的下传比

数据库创建好后,需要告诉Pure-FTPd如何连接、使用该数据库。以下配置:

## /etc/pure-ftpd/db/mysql.conf
MYSQLServer             127.0.0.1
MYSQLSocket             /var/run/mysqld/mysqld.sock
MYSQLUser           root
MYSQLPassword           root
MYSQLDatabase           ftpusers
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 Uid 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")
MySQLGetQTAFS           SELECT QuotaFiles 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")
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")
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") 
 
##重启Pure-FTPd
/etc/init.d/pure-ftpd-mysql restart

实现用户的Web管理(实际一个管理程序):

wget http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz

#解压 移动到可以访问的地方 编辑config.php

$LANG = "English";    
$LocationImages =  "images";
 
##数据库配置
$DBHost = "127.0.0.1";  
$DBLogin = "root";
$DBPassword = "root";
$DBDatabase = "ftpusers";
 
$FTPAddress = "192.168.111.129:21";
$DEFUserID = "2001";            //创建用户时默认的UID
$DEFGroupID = "2001";           //创建用户时默认的UID
$UsersFile = "/etc/passwd";         //创建用户时选择用户来源
$GroupFile = "/etc/group";      //创建用户时选择用户组来源
 
$EnableQuota = 1;           //开启配额
$EnableRatio = 1;           //开启统计

这个管理程序是受密码保护的,否则任何人都能添加删除ftp用户。所以需要添加一张admin表:

USE ftpusers;
CREATE TABLE IF NOT EXISTS `admin` (
  `Username` varchar(35) NOT NULL,
  `Password` varchar(32) NOT NULL,
  PRIMARY KEY (`Username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
##然后添加至少一个管理员账户:
INSERT INTO `admin` (`Username`, `Password`) VALUES('ftpadmin',MD5(123456));

Pure-FTPd配置选项

Pure-FTPd通过pure-ftpd-wrapper程序从/etc/pure-ftpd/conf/目录下读取各种控制选项的配置。 这些控制选项均为Pure-FTPd的命令选项,根据赋值内容,分为如下几类:逻辑型 数值型 字符串型 IP地址型 文件型

逻辑型
启用时可以是Yes 1 On,禁用时则可以用No 0 Off来表示:

AllowAnonymousFXP		是否允许匿名FXP
AllowUserFXP			是否允许通过认证的用户使用FXP
AllowDotFiles			是否允许以点开头的文件
AnonymousCantUpload		是否允许匿名用户上传文件
AnonymousCanCreateDirs	        是否允许匿名用户创建目录
AnonymousOnly			禁止用户登录
AntiWarez			禁止下载“ftp”所拥有的文件
AutoRename			自动改名(可以防止文件被覆盖)
BrokenClientsCompatibility	提供客户端兼容性
CallUploadScript		是否运行上传处理脚本
ChrootEveryone			是否将用户限制在其HOME目录内
CreateHomeDir			是否自动创建HOME目录
CustomerProof			是否启用客户校验
Daemonize			是否在后台运行
DisplayDotFiles			是否显示以点开头的文件
DontResolve			是否禁止在log文件中进行域名解析
IPV4Only
IPV6Only
KeepAllFiles
LogPID				是否将程序运行的PID写在日志文件中
NATmode
NoAnonymous			是否允许匿名访问
NoChmod				是否禁止chmod命令
NoRename			是否禁止修改文件名
PAMAuthentication		是否使用PAM认证
ProhibitDotFilesRead		是否禁止读取点开头的文件
ProhibitDotFilesWrite		是否禁止写点开头的文件
UnixAuthentication		是否启用Unix认证
VerboseLog			是否向log中记录所有客户端命令

数值型配置

##单个数值
MaxClientsNumber 		最大并发在线用户数
MaxClientsPerIP			每个IP的最大并发连接数
MaxDiskUsage			最大磁盘使用率
MaxIdleTime			最大空闲时间(超时将自动断开)
MaxLoad				最大负载
MinUID				允许登录的最小用户ID
TLS				SSL/TLS加密设置
TrustedGID			可信任的GID
 
##两个数值
AnonymousRatio			匿名用户的上传下载比例(1 2表示上传1M可下载2M)
UserRatio			认证用户的上传/下载比例
LimitRecursion			内置ls命令的递归限制(2000 8表示最多列2000个文件,最深为8层)
PassivePortRange		被动模式的端口范围
PerUserLimits			每个用户的最大线程数
Quota				文件数限额和磁盘限额
 
##一个或两个数值
AnonymousBandwidth		匿名用户的下载带宽限制(若为10000:10表示上传为10000KB/s,下载限制为10KB/s)
UserBandwidth			认证用户的下载带宽限制
 
##八进制数
Umask				新建文件和目录的权限掩码

字符串型配置选项

##任意格式的字符串
AltLog:定义额外的log文件。可提供3种格式的日志:
AltLog clf:/var/log/pureftpd.log
AltLog stats:/var/log/pureftpd.log
AltLog w3c:/var/log/pureftpd.log
 
Bind: FTP服务所绑定的网络端口(默认所有网卡的21端口)
ForcePassiveIP:指定一个IP地址来应答PASV/EPSV/SPSV(用于NAT)
 
###单字
SyslogFacility:写入Syslog的类别,即auth authpriv daemon ftp security user local*, 默认为ftp。设置为none,则禁止该日志。

IP地址型配置选项
TrustedIP:指定一个IP地址,只有该IP地址可以允许认证用户访问。

文件型配置选项

###文件型
FortunesFile		定义一个文件,该文件包含用户登录后显示的信息
LDAPConfigFile		LDAP配置文件
MySQLConfigFile		MySQL配置文件
PGSQLConfigFile		PGSQL配置文件
PureDB			PureDB用户数据库
 
###Socket型
ExtAuth			Pure-FTPd之pure-authd程序的socket文件

要想实现匿名访问,必须在操作系统中创建一个名为ftp的用户,并将其加入ftp组。

##如果希望使用系统内置用户登录只需要执行
sudo shechoyes’” > /etc/pure-ftpd/conf/UnixAuthentication
 
##如果希望所有用户都使用chroot
sudo shechoyes’” > /etc/pure-ftpd/conf/ChrootEveryone

/etc/pure-ftpd/conf/目录里面的文件在pure-ftpd启动是使用。UnixAuthentication 和 MySQLConfigFile实际影响到/etc/pure-ftpd/auth里面的内容,决定使用何种认证。

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 70 queries in 0.389 seconds