使用Pureftpd進(jìn)行FTP權(quán)限和磁盤(pán)配額管理
Pureftpd是一款快速,高質(zhì)量,功能齊全的ftp服務(wù)器,最重要的是可以支持設(shè)置客戶端默認(rèn)編碼,那如何使用Pureftpd進(jìn)行FTP權(quán)限和磁盤(pán)配額管理,看下文。
我們選用Pure-ftpd作為工具.
安裝
Pure-ftpd是一個(gè)成熟的ftp工具,apt-get已經(jīng)有打好的包了.我們直接通過(guò)apt-get就能很方便的安裝.
apt-get install pure-ftpd-mysql
配置
在數(shù)據(jù)庫(kù)里邊建一個(gè)庫(kù),這里用之前的hosting數(shù)據(jù)庫(kù).用以下語(yǔ)句創(chuàng)建一張表:
CREATE TABLE users(
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)
) TYPE=MyISAM;
這張表將用來(lái)存放ftp用戶的相關(guān)信息.
然后我們需要修改pure-ftpd-mysql的配置文件,告訴pure-ftpd數(shù)據(jù)庫(kù)的相關(guān)信息.
這里假設(shè)大家已經(jīng)配置好了mysql,并有一個(gè)可用的賬號(hào).
vim /etc/pure-ftpd/db/mysql.conf
放入以下配置
#賬號(hào)信息 按自己情況修改
MYSQLServer 127.0.0.1
MYSQLPort 3306
MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser easy
MYSQLPassword ******
MYSQLDatabase hosting
#加密方式
MYSQLCrypt md5
#取得數(shù)據(jù)的SQL語(yǔ)句
#用戶授權(quán)
MYSQLGetPW SELECT Password FROM users WHERE User="\L"
MYSQLGetUID SELECT Uid FROM users WHERE User="\L"
MYSQLGetGID SELECT Gid FROM users WHERE User="\L"
MYSQLGetDir SELECT Dir FROM users WHERE User="\L"
#文件大小和個(gè)數(shù)限制
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="\L"
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L"
#上行和下行帶寬限制
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"
這樣pure-ftpd就知道如何從mysql里邊取數(shù)據(jù)了.
為了得到上邊出現(xiàn)的GID和UID,我們需要為ftp創(chuàng)建一個(gè)虛擬賬號(hào).FTP的全部用戶共用這一個(gè)虛擬賬號(hào)的UID和GID,而不需要為每個(gè)FTP用戶創(chuàng)建系統(tǒng)用戶.
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
我們創(chuàng)建了GID為2001的ftpgroup組和UID為2001的ftpuser用戶.現(xiàn)在可以往數(shù)據(jù)表中添加數(shù)據(jù)了.QuotaSize的單位是M,目錄指向我們?cè)趍od-myvhost同樣的路徑.
然后我們將用戶鎖定在他自己的目錄下,不允許他通過(guò)ftp訪問(wèn)到別人的目錄:
echo yes > /etc/pure-ftpd/conf/ChrootEveryone
當(dāng)指定目錄不存在時(shí),自動(dòng)創(chuàng)建目錄
echo yes > /etc/pure-ftpd/conf/CreateHomeDir
設(shè)置完成.重啟pure-ftpd.
/etc/init.d/pure-ftpd-mysql restart
全部配置都完成了.我們上傳文件試試.
登陸成功,上傳文件提示沒(méi)權(quán)限.這是因?yàn)?data0/myapphost的屬性設(shè)定造成的.將整個(gè)目錄改為ftpuser的就可以了
chown -R ftpuser:ftpgroup /data0/myapphost
修改屬性后,已經(jīng)可以上傳文件了.試試配額限制:
錯(cuò)誤:> [2010-1-27 22:47:12] 無(wú)法寫(xiě)入數(shù)據(jù) socket。Socket 錯(cuò)誤 = #10054。
[2010-1-27 22:47:12] 550-Quota exceeded: abc.zip won't be saved
550-6 files used (120%) - authorized: 5 files
550 6974 Kbytes used (681%) - authorized: 1024 Kb
錯(cuò)誤:> [2010-1-27 22:47:12] 請(qǐng)求的操作未執(zhí)行(如,文件或目錄未找到,不能訪問(wèn))。
錯(cuò)誤:> [2010-1-27 22:47:43] 無(wú)法寫(xiě)入數(shù)據(jù) socket。Socket 錯(cuò)誤 = #10054。
[2010-1-27 22:47:43] 550-Quota exceeded: abc.zip won't be saved
550-4 files used (80%) - authorized: 5 files
550 3954 Kbytes used (386%) - authorized: 1024 Kb
錯(cuò)誤:> [2010-1-27 22:47:43] 請(qǐng)求的操作未執(zhí)行(如,文件或目錄未找到,不能訪問(wèn))。
從錯(cuò)誤信息可以看出,配額已經(jīng)生效了.當(dāng)配置修改后,已經(jīng)登錄的ftp用戶需要重新登陸后才會(huì)生效.
小結(jié)
到這里為止,我們已經(jīng)完成了一個(gè)單服務(wù)器的應(yīng)用管理平臺(tái)的基本功能.再添加一個(gè)用于申請(qǐng)應(yīng)用和開(kāi)通賬號(hào)的web管理前端,整個(gè)平臺(tái)即可投入使用了.
通過(guò)文章的介紹和分析,我們清楚的了解到使用Pureftpd進(jìn)行FTP權(quán)限和磁盤(pán)配額管理的具體方法,希望本文對(duì)大家有所幫助!
【編輯推薦】