当前位置: 代码迷 >> PowerDesigner >> Ubuntu 12.04上Proftpd FTP服务器配置
  详细解决方案

Ubuntu 12.04上Proftpd FTP服务器配置

热度:8301   发布时间:2013-02-26 00:00:00.0
Ubuntu 12.04下Proftpd FTP服务器配置

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:proftpdLimit的使用介绍

我们用到的比较多的可能是Limit的使用,Limit大致有以下动作,基本能覆盖全部的权限了。

  CMDChangeWorking Directory 改变目录

  MKDMaKeDirectory建立目录的权限

  RNFRReNameFRom更改目录名的权限

  DELEDELEte删除文件的权限

  RMDReMoveDirectory删除目录的权限

  RETRRETRieve从服务端下载到客户端的权限

  STORSTORe从客户端上传到服务端的权限

  READ:可读的权限,不包括列目录的权限,相当于RETRSTAT

  WRITE:写文件或者目录的权限,包括MKDRMD

  DIRS:是否允许列目录,相当于LISTNLST等权限,还是比较实用的

  ALL:所有权限

  LOGIN:是否允许登陆的权限

针对上面这个Limit所应用的对象,又包括以下范围

  AllowUser针对某个用户允许的Limit

  DenyUser针对某个用户禁止的Limit

  AllowGroup针对某个用户组允许的Limit

  DenyGroup针对某个用户组禁止的Limit

  AllowAll针对所有用户组允许的Limit

  DenyAll针对所有用户禁止的Limit

关于限制速率的参数为:

  TransferRateSTOR|RETR速度(Kbytes/suser使用者

方案二: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'创建数据管理账户。


创建用户组表UIDGID与系统用户一致

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