Proftpd FTP服务器配置
操作系统 Ubuntu 12.04 64bit server LTS
方案一: 本地文件方式认证
1、安装软件包
apt-getinstall proftpd proftpd-doc proftpd-mod-mysql
ProftpdFTP服务器的配置类似apache配置文件风格,配置文件为/etc/proftpd/proftpd.conf
2、建立ftpuser用户,用于虚拟用户登录系统的身份
useraddftpuser
3、建立主FTP目录
mkdir-p /var/ftpdir
chownftpuser.ftpuser /var/ftpdir
chmod755 /var/ftpdir
4、建立虚拟用户
ftpasswd--passwd --file=/etc/proftpd/passwd/ftpd.passwd --name=test--uid=1001 --gid=1001 --home=/var/ftpdir/beijing/--shell=/usr/sbin/nologin
5、修改配置文件
DefaultRoot ~ 默认登录到用户的家目录
UseEncodingUTF-8 GBK 防止IE、资源管理器文件乱码神器
AllowRetrieveRestarton 下载续传
AllowStoreRestarton 上传续传
RequireValidShell off 不要求有合法的shell
PathDenyFilter\.exe$ 限制上传的文件格式
PS:proftpd中Limit的使用介绍
我们用到的比较多的可能是Limit的使用,Limit大致有以下动作,基本能覆盖全部的权限了。
CMD:ChangeWorking Directory 改变目录
MKD:MaKeDirectory 建立目录的权限
RNFR:ReNameFRom 更改目录名的权限
DELE:DELEte删除文件的权限
RMD:ReMoveDirectory 删除目录的权限
RETR:RETRieve从服务端下载到客户端的权限
STOR:STORe从客户端上传到服务端的权限
READ:可读的权限,不包括列目录的权限,相当于RETR,STAT等
WRITE:写文件或者目录的权限,包括MKD和RMD
DIRS:是否允许列目录,相当于LIST,NLST等权限,还是比较实用的
ALL:所有权限
LOGIN:是否允许登陆的权限
针对上面这个Limit所应用的对象,又包括以下范围
AllowUser针对某个用户允许的Limit
DenyUser针对某个用户禁止的Limit
AllowGroup针对某个用户组允许的Limit
DenyGroup针对某个用户组禁止的Limit
AllowAll针对所有用户组允许的Limit
DenyAll针对所有用户禁止的Limit
关于限制速率的参数为:
TransferRateSTOR|RETR 速度(Kbytes/s)user使用者
方案二:MYSQL数据库方式认证
proftp+mysql
apt-getinstall mysql-common mysql-server mysql-server-5.5
mysql-u root -p
createdatabaes ftpdb 创建数据库
grantall on ftpdb.* to proftpd@"%" identified by'password' 创建数据管理账户。
创建用户组表 UID、GID与系统用户一致
CREATETABLE ftpgroup (
groupnamevarchar(16) NOT NULL default '',
gidsmallint(6) NOT NULL default '1001',
membersvarchar(16) NOT NULL default '',
KEYgroupname (groupname)
);
插入一条信息,组名称
INSERTINTO ftpgroup VALUES ('ftpuser',1001,'ftpuser');
创建用户表
CreateTABLE ftpusers (
useridvarchar(30) NOT NULL default '',
passwdvarchar(80) NOT NULL default '',
uidint(10) unsigned NOT NULL default '1001',
gidint(10) unsigned NOT NULL default '1001',
homedirvarchar(255) NOT NULL default '',
shellvarchar(255) NOT NULL default '/sbin/nologin',
countint(10) unsigned NOT NULL default '0',
hostvarchar(30) NOT NULL default '',
lastloginvarchar(30) NOT NULL default '',
UNIQUEKEY userid (userid)
)ENGINE=MyISAM DEFAULT CHARSET=gbk;
建立FTP用户
INSERTINTO ftpusersVALUES('wujr','123',1001,1001,'/var/ftpdir/beijing/bj1y/','/sbin/nologin','','','');
修改proftpd.conf配置文件加入如下字段:
LoadModulemod_sql.c
LoadModulemod_sql_mysql.c
AuthOrdermod_sql.c
SQLBackendmysql
SQLConnectInfoftpdb@localhost proftpd 3sh6q9
SQLAuthTypesPlaintext
SQLUserInfoftpusers userid passwd uid gid homedir shell
SQLGroupInfoftpgroup groupname gid members
SQLAuthenticateusers groups
SQLNegativeCacheon
#如果用户目录不存在则自动创建
SQLNamedQuerygetcount SELECT "count from ftpusers where userid='%u'"
SQLNamedQuerygetlastlogin SELECT "lastlogin from ftpusers where userid='%u'"
SQLNamedQueryupdatelogininfo UPDATE "count=count+1, host='%h',lastlogin=current_timestamp() WHERE userid='%u'" ftpusers
SQLShowInfoPASS "230" "You've logged on %{getcount} times,lastlogin at %{getlastlogin}"
SQLLogPASS updatelogininfo
DeferWelcomeon
RootLoginoff
RequireValidShelloff
重启服务,serviceproftpd restart
本文出自 “Zonelan” 博客,转载请与作者联系!