原文參考:[FreeBSD & Linux Ubuntu] Proftpd 支援 UTF-8 + MYSQL 虛擬帳號 + Quota 限制
原始文章中有一些錯誤,我會在內文中更正這些錯誤
安裝之前準備工作
[cc lang="c"]portsnap fetch && portsnap update
Mysql 要先安裝好[/cc]
安裝時才不會安裝到不支援 UTF8 的舊版本,本次安裝為 proftpd-1.3.2b
實驗環境:
proftpd 1.3.2b
安裝方式
make install clean
選擇
Quota
Mysql
Ratio
建立資料庫
CREATE DATABASE `ftp` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
建立使用者資料表,這個資料表是紀錄使用者的所有資料
# username 使用者帳號
# uid 系統的 uid 這個可以自己隨便給個數字,不要重複到系統帳號
# gid 系統的 gid 這個看你用途是什麼來去對應
# password 使用者密碼
# homedir 使用者家目錄
# shell 使用者的 shell 最好是填 /sbin/nologin
# accessed 使用者最後登入的時間
# count 登入次數
#這個部份增加了兩個欄位 accessed, count ,因為使用者登入時,會執行 updatecount 的SQL語法,但沒有這兩個欄位,會寫不進去
#其實還少了 modified 欄位,但是我想不出來儲存這個欄位有什麼用途,所以不修正
DROP TABLE IF EXISTS `ftp`;
CREATE TABLE IF NOT EXISTS `ftp` (
`username` varchar(60) default NULL,
`uid` int(11) NOT NULL,
`gid` int(11) default NULL,
`password` varchar(30) default NULL,
`homedir` varchar(60) default NULL,
`shell` varchar(32) default ‘/usr/bin/nologin’,
`accessed` datetime NOT NULL,
`count` int(11) NOT NULL,
PRIMARY KEY (`uid`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
接下來建立 group 資料表
# groupname 群組帳號
# gid 系統的 gid 這個對應到系統 /etc/group 的 gid 值,也可以不用,看你怎麼用
# members 這個群組的成員
CREATE TABLE IF NOT EXISTS `groups` (
`groupname` varchar(30) NOT NULL DEFAULT “,
`gid` int(11) NOT NULL DEFAULT ’0′,
`members` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
members 欄位,以逗點隔開每一個成員,所以一個群組可以許多個成員,例如
test1,test2,test3
接下來修改 proftpd.conf
UseReverseDNS off
#建議開啟 Log,登入發生錯誤時,也比較好抓問題
SystemLog /var/log/proftpd/ftp.log
DefaultAddress ::
#
# 使用 mysql 資料庫為主
#
SQLBackend mysql
# SQLAuthTypes Backend
# 密碼認證 已 PASSWORD() 產生為主
# 密碼使用明碼 Plaintext
SQLAuthTypes Plaintext
#
# 開啟認證
#
SQLAuthenticate on
#
# MySQL 連線資訊,資料庫名稱@主機 帳號 密碼
#
SQLConnectInfo ftp@localhost root wwwadmin080225
#
# 使用者資料庫欄位
#
SQLUserInfo ftp username password uid gid homedir shell
#
# 群組資料庫欄位
#
SQLGroupInfo groups groupname gid members
#
# SQL Log 檔
#
SQLLogFile /var/log/proftpd/sql.log
#
# 當 Home 目錄不存在,會自己產生。
#
SQLHomedirOnDemand on
#
# SQL Log 格式,當正確登入時,要執行的 SQL 語法
#
SQLLog PASS updatecount
#
# updatecount 增加登入跟時間
#
SQLNamedQuery updatecount UPDATE “count=count+1, accessed=now() where userid=’%u’" ftp
#
# SQL Log 格式,當儲存或刪除檔案時,要執行的 SQL 語法
#
SQLLog STOR,DELE modified
#
# modified 語法
#
SQLNamedQuery modified UPDATE “modified=now() where userid=’%u’" ftp
以下Quota 的部份尚未測試,先整個貼過來
接下來是要介紹如何設定 quota ,然後建立 mysql 相關資料表
#
#quota_type 硬碟限額的鑒別,可以設置單各使用者,也可以設置一各組中的全部使用者,還可以設置全部使用者
#bytes_in_avail 上傳最大位元組數,就是FTP使用者空間容量 (設置個字段的時候是以byte(位元組)為單位,如果要限額在10M,那就是10240000,下面也一樣)
#bytes_out_avail 下載最大位元組數,需要注意的是,這個字段中記錄的是使用者總共能從伺服器上下載多少資料,資料是累計的。
#bytes_xfer_avail 總共可傳輸的文件的最大位元組數(上傳和下載流量)需要注意的是,這個字段中記錄的是使用者總共能傳輸文件的最大位元組數,資料是累計的。
#files_in_avail INT 總共能上傳文件的數目
#files_out_avail INT 能從伺服器上下載文件的總數目
#files_xfer_avail INT 總共可傳輸文件的數目(上傳和下載)
#
CREATE TABLE quotalimits (
name VARCHAR(30),
quota_type ENUM(“user", “group", “class", “all") NOT NULL,
per_session ENUM(“false", “true") NOT NULL,
limit_type ENUM(“soft", “hard") NOT NULL,
bytes_in_avail FLOAT NOT NULL,
bytes_out_avail FLOAT NOT NULL,
bytes_xfer_avail FLOAT NOT NULL,
files_in_avail INT UNSIGNED NOT NULL,
files_out_avail INT UNSIGNED NOT NULL,
files_xfer_avail INT UNSIGNED NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE quotatallies (
name VARCHAR(30) NOT NULL,
quota_type ENUM(“user", “group", “class", “all") NOT NULL,
bytes_in_used FLOAT NOT NULL,
bytes_out_used FLOAT NOT NULL,
bytes_xfer_used FLOAT NOT NULL,
files_in_used INT UNSIGNED NOT NULL,
files_out_used INT UNSIGNED NOT NULL,
files_xfer_used INT UNSIGNED NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
再來是修改 proftpd.conf 的檔案
#
# 硬碟限額部分
#
QuotaDirectoryTally on
#
#硬碟限額單位 b | Kb | Mb| Gb
#
QuotaDisplayUnits “Kb"
#
# 啟動 Quota
#
QuotaEngine on
#
# 硬碟限額日誌記錄
#
QuotaLog “你的LOG路徑"
#
# 打開硬碟限額資訊,當登陸FTP帳戶後,使用命令 “quote SITE QUOTA" 後可顯示當前使用者的硬碟限額
#
QuotaShowQuotas on
#
#以下是SQL調用語句,不用修改直接拷貝過去
#
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
接下來,先建立一個 group 給 ftp
# FreeBSD 建立 FTP group
pw group add ftp
mkdir /home/ftp
chown appleboy:ftp /home/ftp
#
# ftp 這個群組的都可以在資料夾底下新增刪除
#
chmod 775 /home/ftp
#
# 新增 sql 語法
#
INSERT INTO `ftp` (`username`, `uid`, `gid`, `password`, `homedir`, `shell`) VALUES
(‘test1′, 1500, 1004, ’1234′, ‘/home/ftp’, ‘/usr/sbin/nologin’);
INSERT INTO `groups` (`groupname`, `gid`, `members`) VALUES
(‘ftp’, 1004, ‘appleboy,test1,test2′);
INSERT INTO `quotalimits` (`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
(‘test1′, ‘user’, ‘false’, ‘soft’, 1024000, 0, 204800, 500, 0, 10);
錯誤訊息以及說明:
USER test 1 (Login failed): Invalid shell: ‘/sbin/nologin’
系統不允許使用這個 shell 請在 /etc/shells 加入一行
/usr/sbin/nologin
如果檔案無法上、下傳、刪除,請檢查權限
ftp 資料表中的 uid, gid 就是檔案系統中的權限,必須設定相對應的權限才能正常運作
yandanxvurulmus.zSFsgLiOX3GE
迴響 by porno izle — 十二月 30, 2023 @ 1:34 上午
xyandanxvurulmus.6ByjRGBXa8d0
迴響 by dunner — 十二月 30, 2023 @ 3:46 上午
xbunedirloooo.EqSc2a3anPK3
迴響 by congregationalisms — 十二月 30, 2023 @ 4:55 上午
gleyings xyandanxvurulmus.ofun4TfRYNI1
迴響 by gleyings — 十二月 30, 2023 @ 4:30 下午
am siteleri vurgunyedim.wsvm7N3Y8nak
迴響 by porn — 一月 16, 2024 @ 11:14 下午
eski rahatiniz olmayacak yaralandinmieycan.ix2IGuVk5iei
迴響 by porn sex — 一月 17, 2024 @ 3:01 下午
eski rahatiniz olmayacak citixx.p0gRAX6RDdhf
迴響 by house porn — 一月 20, 2024 @ 4:24 下午
porn hyuqgzhqt.LrceX5vpFkhm
迴響 by porn — 一月 20, 2024 @ 4:47 下午
porn siteleri ewrjghsdfaa.c2diIsmR6aGQ
迴響 by craft porn — 一月 20, 2024 @ 4:56 下午
anal sikis siteleri wrtgdfgdfgdqq.MWtd0sAOywa7
迴響 by bahis porno — 一月 20, 2024 @ 5:38 下午
escort pompadirha.4aYCiYBfhrl3
迴響 by craft porn — 二月 2, 2024 @ 7:37 下午
bahis siteleri incest category asillartaklitler.DGg7ueTkxA1E
迴響 by house porn — 二月 2, 2024 @ 7:53 下午
eski rahatiniz olmayacak hephupx.5ppBUF7OXyht
迴響 by watch porn video — 二月 3, 2024 @ 12:36 上午
BİZİ SİK BİZ BUNU HAK EDİYORUZ hepxhupx.Xbqo6wRkFPea
迴響 by pornhub bahis siteleri — 二月 3, 2024 @ 8:08 下午
bahis siteleri incest category juljulfbi.te9Sqvw63m9b
迴響 by house porn — 二月 3, 2024 @ 9:03 下午
viagra bjluajszz.oUGxvtyLlPwp
迴響 by porn — 二月 5, 2024 @ 3:04 下午
fuck bxjluajsxzz.nkLwGYvhZdZk
迴響 by craft porn — 二月 5, 2024 @ 3:23 下午
food porn 0qbxjluaxcxjsxzz.hqkfSEhEKVeu
迴響 by anal siteleri — 二月 5, 2024 @ 3:43 下午
www porn video free download com gghkyogg.MqqxZVia94o
迴響 by hd pprn videos — 三月 13, 2024 @ 4:04 下午
4k porn downloads ggjennifegg.G0FZq4LESEL
迴響 by 4k sex videos free download — 三月 13, 2024 @ 10:00 下午
porn hd downlod ggjinnysflogg.VLaOMIqEiJo
迴響 by hd homemade porn — 三月 13, 2024 @ 11:52 下午
fashionflag hd pirn videos download fashionflag.4dikz1hVZcX
迴響 by fashionflag porn video hd download — 三月 27, 2024 @ 4:31 下午
goodhere Small Tits porn vurucutewet.8FYGYJz0vJZ
迴響 by goodhere Anal porn — 三月 28, 2024 @ 12:18 下午
ladyandtherose Cartoons porn backlinkseox.INF7M73We7B
迴響 by ladyandtherose Small Tits porn — 三月 28, 2024 @ 3:44 下午
jenniferroy ぽっちゃりポルノ japanesexxporns.QOiZiIU9Py3
迴響 by jenniferroy 寝取られポルノ — 三月 28, 2024 @ 10:18 下午
landuse Old and Young porn lancdcuse.ROoTysVGVEX
迴響 by landuse DP porn — 三月 29, 2024 @ 3:02 下午
falbobrospizzamadison MILF porn jkkıjxxx.BhP8ve0F028
迴響 by falbobrospizzamadison POV porn — 三月 29, 2024 @ 10:03 下午
किशोर अश्लील qqyyooppxx.57LjzFQY6Lz
迴響 by गर्भवती अश्लील — 三月 30, 2024 @ 2:37 下午
मजेदार सेक्स पोर्न के बा hjkvbasdfzxzz.1EwafiR2cdR
迴響 by किशोर अश्लीलता के बा — 三月 30, 2024 @ 10:36 下午
विंटेज पोर्न txechdyzxca.50OpbqoKSCZ
迴響 by किशोर अश्लीलता — 四月 1, 2024 @ 6:02 下午
कट्टर अश्लीलता hkyonet.FGo3A7IZqGE
迴響 by गर्भवती अश्लीलता — 四月 3, 2024 @ 1:23 上午
milf ਪੋਰਨ madisonivysex.5xAhqUJYMAj
迴響 by ਨੰਗਾ ਨਾਚ ਪੋਰਨ — 四月 3, 2024 @ 11:03 下午
ladesbet ਵੱਡੇ ਗਧੇ ਪੋਰਨ ladesinemi.p6p5BtkuHvi
迴響 by ladesbet ਕੁੱਕਲਡ ਪੋਰਨ — 四月 5, 2024 @ 12:31 下午
ladesbet 妊娠中のポルノ ladestinemi.BxDWfEFwlOz
迴響 by ladesbet 毛深いポルノ — 四月 5, 2024 @ 2:11 下午
ポルノのキャスティング .iKaGtDIqv3v
迴響 by gobigbrain ポルノのキャスティング — 六月 7, 2024 @ 1:22 上午
ਅਰਬ ਪੋਰਨ .OYWv5nMmRWH
迴響 by kidzkaboodle ਅਰਬ ਪੋਰਨ — 六月 7, 2024 @ 1:39 上午
ਗਰੁੱਪ ਸੈਕਸ ਬਾਰੇ .IpOyxM1YRl2
迴響 by kidzkaboodle ਗਰੁੱਪ ਸੈਕਸ ਬਾਰੇ — 六月 7, 2024 @ 1:48 上午
ਲਾਤੀਨੀ ਪੋਰਨੋਗ੍ਰਾਫੀ .lBwcdOrUL0U
迴響 by glencovesaltcave ਲਾਤੀਨੀ ਪੋਰਨੋਗ੍ਰਾਫੀ — 六月 7, 2024 @ 1:51 上午
https://arxlfnfdijzvwp.erfassung.info/ .8WwaKt0MaZu
迴響 by mustard — 七月 6, 2024 @ 5:02 下午
https://www.heritagefamilypantry.com/ .VxIQgz26hs8
迴響 by buy viagra online — 九月 6, 2024 @ 7:20 下午
l2WaYK2rc79
迴響 by casibom güncel giriş — 九月 7, 2024 @ 12:17 上午
https://www.heritagefamilypantry.com/ldUH5qIsfr8
迴響 by buy viagra online — 九月 9, 2024 @ 5:08 下午
https://betovis34.net/ 7we45JRCokB
迴響 by ਕਾਲੇ ਅਤੇ ਚਿੱਟੇ ਪੋਰਨੋਗ੍ਰਾਫੀ — 九月 18, 2024 @ 7:05 上午
liDuGrrNsDp
迴響 by Scotsman — 九月 22, 2024 @ 2:17 下午
mdRQGdDROpa
迴響 by http://steroidsftw.org/?p=15679 — 九月 26, 2024 @ 8:38 下午
xRhDU3VQQxs
迴響 by https://psychedelicmushrooms.shop/ — 十一月 4, 2024 @ 10:33 下午