使用 Proftpd 有个好处,可以用其它方式认证,不用实体帐号登入,可以减少试帐号机会。
这次利用mysql 数据库,
环境:Ubuntu 6.06.1 LTS
1. 安装 proftpd-mysql 套件
sudo apt-get install proftpd-mysql
2. 设定 mysql 帐号
mysql -u root -p
create database ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO ‘proftpd’@'localhost’ IDENTIFIED BY ‘password’;
FLUSH PRIVILEGES;
3. 建立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’;
4. 设定 proftpd.conf
让 proftp 可以用 mysql 资料认证
- SQLBackend mysql # 使用 mysql 资料库为主
- SQLAuthTypes Backend # 密码认证 已 PASSWORD() 产生为主
- SQLAuthenticate on
- SQLConnectInfo ftp@localhost proftpd password # MySQL 连线资讯,资料库名称@主机 帐号 密码
- 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 “countcount=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
5. 建立使用者帐号
- 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。
6. 重新启动 Proftpd
sudo /etc/init.d/proftpd restart
请用刚刚建立好的帐号登入看看,若顺利就可以登入指定目录内。
7. 除错
有任何问题,请检查 sql.log ,会有资讯说明错误的原因。
【编辑推荐】