使用 Proftp 有个好处,可以用其它方式认证,不用实体帐号登入,可以减少试帐号机会。
 
这次利用 mysql 资料库,
 
环境:Ubuntu 6.06.1 LTS

安装 proftpd-mysql 套件

sudo apt-get install proftpd-mysql
 

设定 mysql 帐号

mysql -u root -p
create database ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO ‘proftpd’@’localhost’ IDENTIFIED BY ‘password’;
FLUSH PRIVILEGES;
 

建立 mysql 资料库

CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default ”,
gid smallint(6) NOT NULL default ‘5500′,
members varchar(16) NOT NULL default ”,
KEY groupname (groupname)
) TYPE=MyISAM COMMENT=’ProFTP group table’;
CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default ”,
passwd varchar(32) NOT NULL default ”,
uid smallint(6) NOT NULL default ‘5500′,
gid smallint(6) NOT NULL default ‘5500′,
homedir varchar(255) NOT NULL default ”,
shell varchar(16) NOT NULL default ‘/sbin/nologin’,
count int(11) NOT NULL default ‘0′,
accessed datetime NOT NULL default ‘0000-00-00 00:00:00′,
modified datetime NOT NULL default ‘0000-00-00 00:00:00′,
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT=’ProFTP user table’;
 

设定 proftpd.conf ,让 proftp 可以用 mysql 资料认证

SQLBackend mysql # 使用 mysql 资料库为主
SQLAuthTypes Backend # 密码认证 已 PASSWORD() 产生为主
SQLAuthenticate on
SQLConnectInfo ftp@localhost proftpd password # MySQL 连线资讯,资料库名称 @WordPress 主机 帐号 密码
SQLUserInfo ftpuser userid passwd uid gid homedir shell # 使用者资料库栏位
SQLGroupInfo ftpgroup groupname gid members # 群组资料库栏位
SQLLogFile /var/log/proftpd/sql.log # SQL Log 档
SQLHomedirOnDemand on # 当 Home 目录不存在,会自己产生。
SQLLog PASS updatecount # SQL Log 格式,当正确登入时,要执行的 SQL 语法
SQLNamedQuery updatecount UPDATE “count=count+1, accessed=now() where userid=’%u’” ftpuser
SQLLog STOR,DELE modified # SQL Log 格式,当储存或删除档案时,要执行的 SQL 语法
SQLNamedQuery modified UPDATE “modified=now() where userid=’%u’” ftpuser
RequireValidShell off
 
 

建立使用者帐号

mysql -u root -p
insert into ftp (userid, passwd , uid, gid , homedir ) values (’ubuntu_user’,password(’12345′), ‘5500′,’5500′,’/home/ftp/ubuntu_user’);
 
建立 ubuntu_user 帐号,密码为 12345 ,目录位于 /home/ftp/ubuntu_user , uid / gid 为此 user 上传档案时的 uid / gid 。
 

重新启动 Proftp

sudo /etc/init.d/proftpd restart
 
请用刚刚建立好的帐号登入看看,若顺利就可以登入指定目录内。
 

除错

有任何问题,请检查 sql.log ,会有资讯说明错误的原因。