ProFTPD 用戶磁盤限額管理
ProFTPD是一個Unix平臺上或者類Unix平臺(如Linux, FreeBSD...)的FTP服務(wù)器程序,它是在自由軟件基金會的版權(quán)聲明下開發(fā)的、發(fā)布免費的軟件,也就是說任何只要遵守自由軟件基金會版權(quán)聲明的人,全都可以隨意修改源始碼。本文主要說明的是ProFTPD 用戶磁盤限額的管理。先從ProFTPD表中看起。
- CREATE TABLE `quotalimits` (
- `name` varchar(30) default NULL,
- `quota_type` enum('user','group','class','all') NOT NULL default 'user',
- `per_session` enum('false','true') NOT NULL default 'false',
- `limit_type` enum('soft','hard') NOT NULL default 'soft',
- `bytes_in_avail` float NOT NULL default '0',
- `bytes_out_avail` float NOT NULL default '0',
- `bytes_xfer_avail` float NOT NULL default '0',
- `files_in_avail` int(10) unsigned NOT NULL default '0',
- `files_out_avail` int(10) unsigned NOT NULL default '0',
- `files_xfer_avail` int(10) unsigned NOT NULL default '0'
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
說明:
上面其實就是在proftpd庫中創(chuàng)建一個表quotalimits;我們在proftpd的數(shù)據(jù)庫中,再來查看一下quotalimits表的結(jié)構(gòu),這樣方便我們理解和使用磁盤限額;
mysql> DESCRIBE quotalimits; +------------------+------------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------------------------+------+-----+---------+-------+ | name | varchar(30) | YES | | NULL | | | quota_type | enum('user','group','class','all') | | | user | | | per_session | enum('false','true') | | | false | | | limit_type | enum('soft','hard') | | | soft | | | bytes_in_avail | float | | | 0 | | | bytes_out_avail | float | | | 0 | | | bytes_xfer_avail | float | | | 0 | | | files_in_avail | int(10) unsigned | | | 0 | | | files_out_avail | int(10) unsigned | | | 0 | | | files_xfer_avail | int(10) unsigned | | | 0 | | +------------------+------------------------------------+------+-----+---------+-------+
說明;
- quotalimits
- name - username
- quota_type - user, group, class, all (we use user)
- per_session - true or false (we use false)
- limit_type - quota limit type - hard or soft (we use soft)
- bytes_in_avail - upload limit in bytes - allowed bytes on disk (eg diskquota)
- bytes_out_avail - download limit in bytes - allowed bytes a user can download
- bytes_xfer_avail - allowed bytes a user can transfer in/out
- files_in_avail - upload limit in files - allowed number of uploaded files
- files_out_avail - allowed number of downloaded files
- files_xfer_avail - allowed number of files a user can transfer in/out
name 應(yīng)該這樣理解,既能表示單個用戶,也能表示用戶組名;如果我們在quota_type(限額類型)中使用group來認(rèn)證的話,那就得在這里設(shè)置組名,這樣整組都具有統(tǒng)一的磁盤限額的特性;當(dāng)然您要在ftpgroups表中插入組紀(jì)錄;并且在member字段中得把用戶一個一個的列進(jìn)去,這是后話了;先自己研究一下,只是插入紀(jì)錄的事;我們只說最簡單的單個用戶的磁盤限額;默認(rèn)值可以為空NULL,如果為空則針對所在有quota_type中設(shè)置的類型,比如在quota_type中設(shè)置為user ,就是針對所有ftpusers 中的用戶起作用;如果是group名,也是對ftpgroups 所有組作用;
quota_type 磁盤限額類型,可以設(shè)置為用戶,也可以設(shè)置為用戶組group ;如果您的name寫的是用戶組,那在這里就得設(shè)置為group來認(rèn)定;默認(rèn)為user認(rèn)證;
per_session 默認(rèn)為false;
limit_type 默認(rèn)為soft;
bytes_in_avail 用戶占用空間大小,也就是家目錄的空間最大可以讓用戶占用多少,單位是byte;默認(rèn)為0,0是不受限制,以下同理;
bytes_out_avail 注;所有下載文件的總和,默認(rèn)為0;
bytes_xfer_avail 注;一個用戶上傳下載流量總和,默認(rèn)為0
files_in_avail 注:限制上傳文件總數(shù),默認(rèn)為0;
files_out_avail 注;限制下載文件個數(shù)總計,默認(rèn)為0
files_xfer_avail 注:允許下載和上傳的文件總和我,默認(rèn)為0;
由此看來,我們比如想讓test用戶,約束空間大小為100M,其它不受限制;則可用下面的mysql命令添加;
先讓我們對照quotalimits表的結(jié)構(gòu),然后根據(jù)表的結(jié)構(gòu)來添加;
mysql> describe quotalimits; +------------------+------------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------------------------+------+-----+---------+-------+ | name | varchar(30) | YES | | NULL | | | quota_type | enum('user','group','class','all') | | | user | | | per_session | enum('false','true') | | | false | | | limit_type | enum('soft','hard') | | | soft | | | bytes_in_avail | float | | | 0 | | | bytes_out_avail | float | | | 0 | | | bytes_xfer_avail | float | | | 0 | | | files_in_avail | int(10) unsigned | | | 0 | | | files_out_avail | int(10) unsigned | | | 0 | | | files_xfer_avail | int(10) unsigned | | | 0 | | +------------------+------------------------------------+------+-----+---------+-------+ 10 rows in set (0.00 sec)
添加記錄
- mysql>insert into quotalimits VALUES ('test','user','false','soft','104857600','0','0','0','0','0');
運算公式:
1Kb=1024 byte
1M=1024 Kb
100M=100x1024 Kb= 100x1024x1024 byte=104857600 byte
注意:磁盤限額生效,必須讓FTP用戶重新登錄才有效;比如test用戶正在ftp上,這時要先退出,然后再登錄,這是磁盤限額就有效了;
查看用戶空間使用情況
登錄FTP后用下面的命令;
- quote site quota;
舉例:
- lftp test@192.168.1.5:/> quote site quota;
- 200-The current quota for this session are [current/limit]:
- Name: test
- Quota Type: User
- Per Session: False
- Limit Type: Soft
- Uploaded Mb: 19.00/95.37
- Downloaded Mb: unlimited
- Transferred Mb: unlimited
- Uploaded files: unlimited
- Downloaded files: unlimited
- Transferred files: unlimited
- 200 Please contact xxxxx@xxxxxxxxxxx.com if these entries are inaccurate
【編輯推薦】