先建立FTPGRP组:
# pw groupadd FTPGRP -g 2001建立FTPUSR用户:
# pw adduser FTPUSR -u 2001 -g 2001 -d /home/FTP -s /sbin/nologin为FTPUSR建立HOME,把所有的FTP user 活动空间全放在此目录下:
# mkdir /home/FTP
# chown FTPUSR /home/FTP
# chgrp FTPGRP /home/FTP下面为磁盘限额建立数据表:
use FTP
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
);
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
);
说明一下,quotatallies表不需要作修改,它记录了用户当前的磁盘使用情况,由程序自动记录 。
要注意的是quotalimits 表中一些字段的含意
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 总共可传输文件的数目;(上传和下载)
测试:
首先停掉inetd的ftp服务
# ps ax|grep inetd得到inetd的线程号
# kill 得到的线程号启动proftpd
# cd /usr/local/proftpd/sbin
# ./proftpd如果出现错误提示可以进入proftpd的调试模式进行调试:
# ./proftpd -n -d 5 -c /usr/local/proftpd/etc/proftpd.confproftpd就会将调试信息打印到consle上以供调试之用 。
添加一个测试用户并为他设置磁盘限额:
添加用户
use FTP
INSERT INTO FTPUSERS (userid, passwd, uid, gid, homedir, shell)
valueS ("user1", "999999", "2001", "2001", "/home/FTP/user1", "" );
设置磁盘限额
将上面建立的user1帐号给予10M空间,最多能上传500个文件到服务器上,文件传输流量为20M,只能传输10个文件 。
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 ("user1", "user", "false", "soft", "10240000", "0", "2048000", "500", "0", "10");
不需要设置的部分用0代替就可以了 。
测试磁盘限额
在windows提示符下登录ftp服务器 。输入用户名user1,密码999999
c:> ftp 192.168.0.1运行quote SITE QUOTA显示当前用户的磁盘限额
ftp> quote SITE QUOTA
200-The current quota for this session are [current/limit]:
Name: user1
Quota Type: User
Per Session: False
Limit Type: Soft
Uploaded Kb: 0.00/10000.00
Downloaded Kb: unlimited
Transferred Kb: 0.00/2000.00
Uploaded files: 0/500
Downloaded files: unlimited
Transferred files: 0/10
200 Please contact root@wwwx.3322.org if these entries are inaccurate数据库用户验证和磁盘限额测试成功!
推荐阅读
- 49 FreeBSD连载:进入X Window
- FreeBSD Find的介紹
- FreeBSD网站平台建设全过程 第五步
- FreeBSD Biabam 邮件附件
- FreeBSD网站平台建设全过程 第二步
- FreeBSD+Resin成功建立支持Jsp平台
- B 系统 FreeBSD 升级
- FreeBSD网站平台建设全过程 前言
- 1 FreeBSD 核心
- Domino系统从UNIX平台到windows平台的迁移及备份
