引用 | 編輯
spke
2005-05-31 05:06 |
樓主
▼ |
||
x0
之前要跟各位講的整合 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.castaglia.org/proftpd/ 這裡面還有其他 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/blog/archives/000091.html x0
|
引用 | 編輯
mnbmnb5266
2010-08-28 01:23 |
1樓
▲ |
感謝你的分享,這篇教學對我很有用,正在發愁如何找就被我找到了。
x0 |