服务器学习笔记(Pure-ftpd-mysql配置)

其实我刚开始想用的是vsftpd的,但是发现在Ubuntu 14.04上我根本没办法配置虚拟用户,最主要的原因是没有db4.8-util,所以采用了Pure-ftpd-mysql。

Pure-ftpd-mysql和Pure-ftpd最大的区别在于Pure-ftpd-mysql是基于mysql进行账户和权限控制的,所以可以用其他方式,例如PHP控制端来让用户自己修改密码等等…

安装Pure-ftpd-mysql很简单,一句话即可

sudo apt-get install pure-ftpd-mysql

下面进入配置环节

首先,添加一个用户组用于对FTP的管理,再添加一个用户作为后面的虚拟用户的载体

groupadd -g 2001 ftpgroup

useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

然后登陆 MySql 管理( 我使用的是 phpMyAdmin )

创建一个数据库

CREATE DATABASE pureftpd;

设置用户和权限

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.*
TO 'pureftpd'@'localhost'
IDENTIFIED BY '这里换成你的密码';

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.*
TO 'pureftpd'@'localhost.localdomain'
IDENTIFIED BY '这里换成你的密码';

FLUSH PRIVILEGES;

然后进入pureftpd数据库,创建表结构

CREATE TABLE ftpd (
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)
) ENGINE=MyISAM;

为了安全,先将原先的配置文件备份一下,然后进行编辑

cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
vi /etc/pure-ftpd/db/mysql.conf

修改配置文件如下

MYSQLSocket /var/run/mysqld/mysqld.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword 这里换成你的密码
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

然后进行一些配置

echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone //禁止所有用户向上到其他文件夹

echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir //当用户目录不存在时自动创建

最后别忘了重启ftp服务

sudo /etc/init.d/pure-ftpd-mysql restart

如果要添加用户,可以参考下面这条语句

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`)
VALUES ('User', '1', MD5('password'), '2001', '2001', '/var/www/user', '100', '100', '', '*', '50', '0');

附表  Pure-ftpd的配置说明

ChrootEveryone              yes     # 启用chroot
BrokenClientsCompatibility  yes     # 兼容不同客户端
Daemonize                   yes     # 后台运行
MaxClientsPerIP             20      # 每个ip最大连接数
VerboseLog                  yes     # 记录日志
DisplayDotFiles             no      # 显示隐藏文件
AnonymousOnly               yes     # 只允许匿名用户访问
NoAnonymous                 no      # 运行匿名用户连接
SyslogFacility              none        # 不将日志在syslog日志中显示
DontResolve                 yes     # 不进行客户端DNS解析
MaxIdleTime                 15      # 最大空闲时间
LimitRecursion              2000 8      # 浏览限制,文件2000,目录8层
AnonymousCanCreateDirs      yes     # 匿名用户可以创建目录
MaxLoad                     4           # 超出负载后禁止下载
PassivePortRange            45000 50000 # 被动模式端口范围
AnonymousRatio              1 10        # 匿名用户上传/下载比率
AntiWarez                   yes     # 禁止下载匿名用户上传但未经验证的文件
AnonymousBandwidth          200     # 匿名用户带宽限制(KB)
Umask                       133:022     # 创建文件/目录默认掩码
MinUID                      100     # 最大UID限制
AllowUserFXP                no      # 仅运行用户进行FXP传输
AllowAnonymousFXP           no      # 对匿名用户和非匿名用户允许进行匿名 FXP 传输
ProhibitDotFilesWrite       no      # 不能删除/写入隐藏文件
ProhibitDotFilesRead        no      # 禁止读取隐藏文件
AutoRename                  yes     # 有同名文件时自动重新命名
AnonymousCantUpload         no      # 不允许匿名用户上传文件
AltLog                      clf:/var/log/pureftpd.log   # clf格式日志文件位置
MaxDiskUsage                99      # 当磁盘使用量打到99%时禁止上传
CustomerProof               yes     # 防止命令误操作

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据