设为首页 收藏本站
查看: 1870|回复: 0

[经验分享] 让proftpd也可以用mysql轻松管理用户实现ftp磁盘配额

[复制链接]

尚未签到

发表于 2016-6-10 13:33:17 | 显示全部楼层 |阅读模式
linux下配置ftp可以用proftpd,因为它可以与mysql深入整合,轻松实现用户管理,而且每个用户还能单独控制其磁盘使用配额。

一、源码安装
./configure –with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
–with-includes=/data/amp/mysql/include/mysql \
–with-libraries=/data/amp/mysql/lib/mysql \
–prefix=/data/amp/proftpd
make
make install
二、设置proftpd的启动服务
(1)#cp proftpd.1.2.xxx/contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd
(2)编辑proftpd文件
# vi /etc/rc.d/init.d/proftpd
将PATH=”$PATH:/usr/local/sbin”修改为
PATH=”$PATH:/usr/local/sbin:/data/amp/proftpd/sbin”
(3)设置proftpd权限为可执行
#chmod +x /etc/rc.d/init.d/proftpd
(4)将proftpd加入系统服务
#chkonfig –add proftpd
这样就可以用service proftpd start和service proftpd stop 和service proftpd restart来分别执行开启服务,停止服务与重启服务
三、启动ftp服务
# proftpd/sbin/proftpd
– Fatal: Group: Unknown group ‘nogroup’ on line 30 of ‘/data/amp/proftpd/etc/proftpd.conf’
若有报错,修改配置文件proftpd.conf
        Group                                nobody
默认是禁止匿名用户访问的
四、打开iptables中的21端口
# vi /etc/sysconfig/iptables
增加:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
重启iptables
# /etc/rc.d/init.d/iptables restart
五、整合mysql
(1)增加mysql数据库用户: 账号proftpd : 密码password,并赋予proftpd数据库的权限
(2)proftpd配置文件增加如下内容:
##———— add by dayu for mysql users —————##
##提高连接速度
IdentLookups off
UseReverseDNS off
#启用passiveport模式(若不配置也可以,但有的ftp客户端软件需要用这个尤其内网)
PassivePorts 50000 50100
#——– MySQL验证:load sql.mod for mysql authoritative ——–#
# 配置FTP用户为MySQL数据库认证方式
#SQLConnectInfo databaseName@hostName:port userName password
SQLConnectInfo proftpd@localhost 账号proftpd 密码password
#Backend表示用户认证方式为MySQL数据库的认证方式
#Plaintext表示明文认证方式,排在最前面的为最先使用的方式
SQLAuthTypes Backend Plaintext
#校验数据表
#SQLAuthenticate users groups usersetfast groupsetfast
SQLAuthenticate users
#指定 ftp用户数据表的名字和其中的字段名,表名可自行定义,字段名不要改动。
SQLUserInfo ftpusers userid passwd uid gid homedir shell
#指定ftp用户组数据表的名字和其中的字段名,这个数据表是可选的,字段名不要改动。
#SQLGroupInfo ftpGroup groupname gid members
#指定是否必须为FTP用户指定一个系统shell,off表示不用指定,on表示必须指定。为了系统安全应该指定为off。
RequireValidShell off
# 如果用户主目录不存在,则系统会根据此用户在用户数据表中的 homedir字段的值新建一个目录
#SQLHomedirOnDemand on
SQLNegativeCache   on
#SQLLogFile /var/log/proftpd.sql.log
#用户登录欢迎窗口中显示登录用户已访问次数
SQLNamedQuery getlogins SELECT “count from ftpusers where userid=’%u’”
SQLNamedQuery getlastlogin SELECT “lastlogin from ftpuser where userid=’%u’”
SQLNamedQuery updatelogins UPDATE “count=count+1,host=’%h’,lastlogin=current_timestamp() WHERE userid=’%u’” ftpusers
SQLShowInfo PASS “230″ “You’ve logged on %{getlogins} times!”
SQLLog PASS updatelogins
#——– load sql.mod for mysql authoritative ——–#
#——– 磁盘配额:load qudes.mod for Quota limit ——–#
#打开磁盘限额引擎
QuotaEngine on
#设置磁盘限额
QuotaDirectoryTally on
#设置磁盘容量显示时的单位
QuotaDisplayUnits Mb
#设置磁盘限额日志文件
QuotaLog “/var/log/proftpd.quota.log”
#允许显示磁盘限额信息,ftp登录后可执行quote site quota命令查看当前磁盘使用情况
QuotaShowQuotas on
# 指定磁盘限额模块使用的数据库信息
SQLNamedQuery get-quota-limit SELECT “name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits \
WHERE name = ‘%{0}’ AND quota_type = ‘%{1}’”
SQLNamedQuery get-quota-tally SELECT “name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies \
WHERE name = ‘%{0}’ AND quota_type = ‘%{1}’”
SQLNamedQuery update-quota-tally UPDATE “bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, \
files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} \
WHERE name = ‘%{6}’ AND quota_type = ‘%{7}’” quotatallies
SQLNamedQuery insert-quota-tally INSERT “%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}”   quotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
#——— load qudes.mod for Quota limit ——–#
(3)在iptables中增加passiveprot端口
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50000:50100 -j ACCEPT
(4)建立mysql数据表
CREATE TABLE `ftpusers` (
  `userid` varchar(30) NOT NULL,
  `passwd` varchar(80) NOT NULL,
  `uid` int(11) unsigned NOT NULL,
  `gid` int(11) unsigned NOT NULL,
  `homedir` varchar(255) DEFAULT NULL,
  `shell` varchar(255) DEFAULT NULL,
  `count` int(10) unsigned NOT NULL,
  `host` varchar(30) NOT NULL,
  `lastlogin` datetime NOT NULL,
  UNIQUE KEY `userid` (`userid`),
  UNIQUE KEY `uid` (`uid`)
);
还有剩余部分请移步安徽php社区吧。

原创文章来源:安徽php社区http://bbs.hfphp.org/thread-741-1-1.html

欢迎大家进行交流,转载请说明出处,谢谢

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228720-1-1.html 上篇帖子: APACHE基于MINA的FTP SERVER(二)服务器初始化 下篇帖子: 用js在客户端自动从ftp下载文件,并写入页面。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表