您的位置:首页 > 编程语言 > PHP开发

Ubuntu 12.04下Proftpd FTP服务器配置

2013-03-16 21:18 387 查看
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” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: