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:是否允许登陆的权限
PS:补充下官网权限说明:
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
权限配置实例:
1、用户需求
2、配置
创建文件夹:
创建操作系统用户
useradd docuser #默认会一起建立同名用户组
id docuser #查看用户的uid gid
cd /var/ftpdir/doctorftp
mkdir DoctorGroup1 DoctorGroup2 DoctorGroup3 DoctorGroup4 DoctorGroup5
chown docuser:docuser * #给5个文件夹更改用户、用户组
创建FTP虚拟用户对应目录如下:
ywb /var/ftpdir/aoyadoctor/
ps /var/ftpdir/aoyadoctor/
yisheng1 /var/ftpdir/aoyadoctor/DoctorGroup1/
yisheng1-1 /var/ftpdir/aoyadoctor/DoctorGroup1/
yisheng2 /var/ftpdir/aoyadoctor/DoctorGroup2/
yisheng2-1 /var/ftpdir/aoyadoctor/DoctorGroup2/
yisheng3 /var/ftpdir/aoyadoctor/DoctorGroup3/
yisheng3-1 /var/ftpdir/aoyadoctor/DoctorGroup3/
yisheng4 /var/ftpdir/aoyadoctor/
yisheng4-1 /var/ftpdir/aoyadoctor/DoctorGroup4/
yisheng5 /var/ftpdir/aoyadoctor/DoctorGroup5/
yisheng5-1 /var/ftpdir/aoyadoctor/DoctorGroup5/
根据需求权限,配置配置文件 /etc/proftpd/proftpd.conf (权限部分)
AllowUser yisheng1 #允许1组主任删除文件及文件夹,其他组员拥有除以上两个权限的其他权限
DenyALL
DenyUser yisheng4 #因为医生4既是医务部主任兼任医生4组主任,所以医生4的权限需求为,对所有组文件有查看、下载权限,而对4组有上传、下 #载、删除、重命名等管理权限,这里的设置是去掉除4组文件外其他文件夹的上传、重命名权限。
AllowUser yisheng2
DenyAll
DenyUser yisheng4
AllowUser yisheng3
DenyAll
DenyUser yisheng4
AllowUser yisheng4 #医生4对4组文件有删除权限 其他组员无。
DenyAll
AllowUser yisheng5
DenyAll
DenyUser yisheng4
DenyUser ps #评审组用户只有所有文件夹的浏览 下载权限
DenyUser ywb #医务组用户拥有所有文件夹的浏览 下载 上传 权限
重启 service proftpd restart 完成权限配置。