广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 55746 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
spke 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x11
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[Linux] [教学] 整合 MySQL + Proftpd + Quotas 管理
之前要跟各位讲的整合 MySQL + Proftpd + Quotas 管理

花了一点时间写了一点, 真是抱歉喔...


MySQL 的安装部份省略不讲了

然而 Table 的内容我也省略不讲了...

内容就在下面的 proftpdmysql.sql 的档案...

mysql -u??? -p??? < proftpdmysql.sql

如果你只是要用 MySQL 管理帐号的话请用这一个档案 usermysql.sql

mysql -u??? -p??? < usermysql.sql


下载位置

[url=http://home.pchome.com.tw/net/baixyz/slackware/proftpd/proftpd_mysql.tar.gz ]http://home.pchome.com.tw/net/baixyz/slackware/proftpd/proftpd_mysql.tar.gz [/url]



[url=http://www.slackware.org.tw/webhd/ ]http://www.slackware.org.tw/webhd/ [/url]

帐号 guest 进去后寻找就找到了


解开来后会有两个档案 proftpdmysql.sql && usermysql.sql


在这之前系统当然也要先建立有关 UID / GID 的资料...

useradd -u 1000 -g 100 -d / -s /bin/false test


shell 的问题 我是都采用 /bin/false

这样有一的问题在就是 Proftp 会无法登入

所以说要在 Proftpd.conf 设定中加入

RequireValidShell off

如果要用 /bin/bash

的话 RequireValidShell off 就不用设了 预设是 on


如果只是要单纯的帐号管理 执行下段就可以了

INSERT INTO ftpuser(userid, passwd, uid, gid, homedir, shell, email)

VALUES ('test', 'test', 񟝘', 颼', '/home/test', '/bin/false', 'test@domain.com');


如果要 帐号管理 Quotas 的话必须这样

在这之前系统当然也要先建立有关 UID / GID 的资料...

useradd -u 1000 -g 100 -d / -s /bin/false test


先建立帐号

INSERT INTO ftpuser(userid, passwd, uid, gid, homedir, shell, email)

VALUES ('test', 'test', 񟝘', 颼', '/home/test', '/bin/false', 'test@domain.com');

在建立 Quotas 的条件

INSERT INTO ftpquotalimits (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)

VALUES ('test','user','true', 'soft', �',Ɔ',Ɔ',Ɔ',Ɔ',Ɔ')

这是限制最大只能传 15Mb , 单位的地方各位可能要自行转换了


下面是一个简单的对照表


ftpquotalimits 表单

name︰ - 用户帐号

quota_type︰ - user, group, class, all (we use user)

per_session︰ - true or false (we use true)

limit_type︰ - soft or hard (we use hard) soft 跟 hard 差在那好像是 hard 一次读设定档, 如果用 soft 可及时在 资料库更改立即起用

bytes_in_avail︰ - 允许上传的位元组数

bytes_out_avail︰ - 允许下载的位元组数

bytes_xfer_avail︰ - 允许传输的位元组数(包括上传/下载)

files_in_avail︰ - 允许上传的文件数

files_out_avail︰ - 允许下载的文件数

files_xfer_avail︰ - 允许传输的文件数(包括上传/下载)



上面建立帐号及建立 Quotas

说真的并不怎么方便 各位可以自行写 Perl / PHP / JSP 等等 Web 上的管理介面

由于我要跟我一些管理程式的整合, 所以并不方便公开, 我想这简单的来说应该不难

等我有空我在特地为这只程式写一套管理介面


由于内建的 ProFTPd 并为支援 MySQL

所以要自行安装过...


首先要下载 两个档案 一个就是 Proftpd 主程式

及一个新 mod 就是 Quotas


wget [url=http://www.castaglia.org/proftpd/modules/proftpd-mod-quotatab-1.2.11.tar.gz ]http://www.castaglia.org/proftpd/modules/proftpd-mod-quotatab-1.2.11.tar.gz [/url]

wget [url=ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz ]ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz [/url]

各位如果有兴趣 http://www.castagli...roftpd/ 这里面还有其他 mod


tar zxvf proftpd-1.2.9.tar.gz

tar zxvf proftpd-mod-quotatab-1.2.11.tar.gz

cp mod_quotatab/*.c mod_quotatab/*.h proftpd-1.2.9/contrib/

cd proftpd-1.2.9/contrib


由于我的 MySQL 是自行安装的所以必须修改过 mod_sql_mysql.c

如果是各位自行安装的请参考您的正确位置, 在加以修改下面这段

pico mod_sql_mysql.c

寻找 #include <mysql.h>

改为 #include </usr/pro/mysql/include/mysql/mysql.h>

如果是预设 Slackware 所安装的不用改这段了


cd ../


./configure --prefix=/usr/pro/proftpd --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql:mod_wrap \

--with-includes=/usr/pro/mysql/include/mysql \

--with-libraries=/usr/pro/mysql/lib/mysql


make && make install


如果是预设 Slackware 所安装的 MySQL 也不用执行下面这段了

如果是各位自行安装的请参考您的正确位置, 在加以修改下面这段

echo "/usr/pro/mysql/lib/mysql" >> /etc/ld.so.conf


ldconfig


#

#设定 Proftpd

#


cd /usr/pro/proftpd/etc


SQLAuthTypes Backend Plaintext

SQLAuthenticate users* groups*


# databasename@host database_user user_password

# 资料表@localhost 帐号 密码

SQLConnectInfo proftpd@localhost proftpd proftpd


SQLUserInfo ftpuser userid passwd uid gid homedir shell

SQLGroupInfo ftpgroup groupname gid members

SQLHomedirOnDemand on

# Update count every time user logs in

SQLLog PASS updatecount

SQLNamedQuery updatecount UPDATE "count=count+1,accessed=now() WHERE userid='%u'" ftpuser

# Update modified everytime user uploads or deletes a file

SQLLog STOR,DELE modified

SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser


#

# 如果您只有要帐号管理下面的就不用设了

#


QuotaEngine on

QuotaDirectoryTally on

QuotaDisplayUnits Mb # b"|"Kb"|"Mb"|"Gb" 这是它的限制单位

QuotaShowQuotas on

QuotaLog "/var/log/proftpd/quota.log"


下面为一整行否则会无法执行 ProFTP


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 ftpquotalimits 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 ftpquotatallies 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}'" ftpquotatallies


SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies

QuotaLimitTable sql:/get-quota-limit

QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally


然后在执行 ProFTP , 如果设定有错会出现讯息, 在加一修改到正确

如果是正常 执行 proftp 是不会有任何讯息


参考资料

[url=http://www.khoosys.net/single.htm?ipg=848 ]http://www.khoosys.net/single.htm?ipg=848 [/url]

http://www.5ilinux.com/blo...000091.html



献花 x0 回到顶端 [楼 主] From:台湾 | Posted:2005-05-31 05:06 |
mnbmnb5266
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x5 鲜花 x46
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

感谢你的分享,这篇教学对我很有用,正在发愁如何找就被我找到了。


我的收藏
https://pan.baidu.com/s/1QUJ9lr_VzxXKRJAlBJgUQA
提取码:am2c
献花 x0 回到顶端 [1 楼] From:加拿大Rogers | Posted:2010-08-28 01:23 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.014690 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言