CREATE TABLE users ( userid varchar(50) NOT NULL, //用户的FTP 账号名称 passWord varchar(50), // 用户的FTP账号密码 uid int(5) DEFAULT '0' NOT NULL, //用户主目录的 uid gid int(5) DEFAULT '65533' NOT NULL, //用户主目录的 gid homedir varchar(255), //用户主目录 count int(11) DEFAULT '0', //登陆次数 ftime timestamp(14), //最后一次登陆时间 shell varchar(255) DEFAULT ' /bin/bash', PRIMARY KEY (userid) //主关键字 );在proftpd.conf中增加有关MySQL的配置,代码如下:
SQLConnectInfo ftpusers@MySQL服务器名 username password //数据库连接 SQLDoGroupAuthoff SQLAuthTypesPlaintext SQLDoAuthon SQLHomedirOnDemandon SQLUserTableusers //指定使用的表名 SQLUsernameFielduserid //以下信息需要与users表中的字段对应 SQLPasswordFieldpassword SQLHomedirFieldhomedir SQLLoginCountFieldcount SQLShellFieldshell SQLAuthoritativeoff SQLLogStatson SQLMinUsergid99 SQLMinUseruid14 SQLLogDirsfcdir SQLDefaultgid99创建用户时需要在表中增加记录,即完成账号的增加。在用户第一次使用该账号登陆时,系统自动创建用户主目录并依据uid和gid的值来设置目录的用户和组。根据配置文件中的缺省空间限量的值生成限量文件。以下是ProFTPD.conf中设置缺省空间限量的配置:
DefaultQuota204800000 //200MB大小 QuotaTypehard3. 删除用户 删除用户需要完成两方面工作:一方面需要对MySQL的users表做相应的删除;另一方面要删除用户主目录。需要注意的是,由于采用浏览器方式,开发系统的执行用户应具有对用户主目录的写权限。用户主目录的用户和组是由users表中的uid和gid来确定的。 4. 修改空间限量 在用户主目录创建后,系统自动生成.quota空间限量文件。该文件只能被root修改,文件的格式为“总容量 使用的容量”,账号管理系统只需使用新的限量文件覆盖即可。对“使用的容量”,FTP服务器每次登陆时会自动计算。如何使软件系统具有root权限,可以参看“sudoers”。 5.日志记录 从安全角度考虑,日志是很重要的一部分。传统的日志都是记录到文件中,而ProFTPD提供了将日志记录到数据库中的功能。这既方便了日志的查询,又极大地提高了日志查询速度。 首先需要在MySQL数据库中创建FTP_log数据表,代码如下:
CREATE TABLE FTP_log ( id int(12) unsigned DEFAULT '0' NOT NULL auto_increment, //主关键字 filename varchar(255), //文件名 filesize int(10) unsigned, //文件大小 email varchar(20) NOT NULL, //用户的账号 ip varchar(15) NOT NULL, //用户的ip地址 action varchar(255), //用户操作的内容 ftime datetime, //操作的时间 PRIMARY KEY (id) );修改ProFTPD.conf文件,将“日志记录到文件”关闭,设置如下:
TransferLognone增加关于日志的配置,需要把用户的上载和下载及删除操作记录到日志中,记录的内容用户可以定置。例如:
SQLLog RETR,STOR,DELE insert FTP_log "null,'%f', %b, '%u','%h','%r',now()"被记录的操作有以下几个: ◆RETR,文件的下载; ◆STOR,文件的上传; ◆DELE,文件的删除。 其中日志记录有以下内容: ◆%f,上载或下载的文件名称包含绝对路径; ◆%b,文件的大小,以字节为单位; ◆%u,用户使用的FTP账号; ◆%h,用户的IP地址; ◆now(),为MySQL提供系统时间函数。 结束语 在详细了解系统关键技术后,开发语言可以根据实际情况来选择,并可结合电子邮件服务器,实现账号和密码的统一,方便用户操作。有关MySQL和ProFTPD的详细配置等问题,由于篇幅有限就不一一阐述。
(出处:http://www.sheup.com)