全力打造多功能FreeBSD服务器( 二 )



> use proftpd;
> create table ftpusers (
> userid TEXT NOT NULL,
> passwd TEXT NOT NULL,
> uid INT NOT NULL,
> gid INT NOT NULL,
> home TEXT,
> shell TEXT
> );
此表格是为了用户认证所需要的,其中userid、passwd是必不可少的,userid是用做FTP服务的用户名;passwd是指此用户的密码;uid是系统用户的ID,也就是所映射的系统用户;gid是所属系统组的ID;home是该用户所在的HOME目录;shell可以为该用户指定相应的shell 。当然你可以建立更多的字段,例如:用来记录用户登录次数的count,或者是日期的date,如果你对配置熟悉了之后,你可以根据自己的喜欢添加更多的功能 。在此就不多讲 。
3、如果你想需要所有的功能,你还可以添加另外一个需要的表:ftpgroups,也就是确定组的表格,当然也可以不用,这里讲一个它的格式:
create table ftpgroups (
groupname TEXT NOT NULL,
gid SMALLINT NOT NULL,
members TEXT NOT NULL
);
其中groupname是组的名称,gid是系统组的ID,members是组的成员 。注意:多成员,他们之间要用逗号隔开,不能使用空格 。

为空表格插入记录:
INSERT INTO ftpusers (userid, passwd, uid, gid, home, shell)
values ("test", "test", "2000", ‘2000", "/home/ftp/test", " ");

按此格式你可以插入这每一个用户添加一个记录 。
如果你要想应用到更多的功能,且建立了组的表格,你也要为此添加记录,不过一定要注意在members的字段多个成员一定要用逗号隔开 。

为FTP用户建立相应的系统用户 。
在本例中,只整个FTP服务只提供一个有效的系统用户ftpusers和组ftpgroups,当然你也可以设置多个系统用户 。但出于安全的考虑,我只设一个,用他来启动FTP daemon,并把所有的FTP用户映射到这个用户 。

先建立FTPGRP组:
# pw groupadd ftpgroups –g 2000
建立FTPUSR用户:
# pw adduser ftpusers –u 2000 –g 2000 –d /home/ftp –s /nonexistent

为FTPUSR建立HOME,把所有的FTP user 活动空间全放在此目录下:
# mkdir /home/ftp
# chown ftpusers /home/ftp
# chgrp ftpgroups /home/ftp

现在可以在mysql的FTP数据库中建立磁盘限制数据表了,呵呵,利用phpmyadmin帮忙就可以了:

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 总共可传输的文件的最大字节数(上传和下载流量)需要注意的是,这个字段中记录的是用户总共能传输文件的最大字节数,数据是累计的 。

推荐阅读