服务器学习笔记(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 # 防止命令误操作
近期评论