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:是否允许登陆的权限

PS:补充下官网权限说明:

  • ALL
    Covering: all FTP commands (but not LOGIN)

  • DIRS
    Covering: CDUP, CWD, LIST, MDTM, MLSD, MLST, NLST, PWD, RNFR, STAT, XCUP, XCWD, XPWD

  • LOGIN
    Covering: client logins

  • READ
    Covering: RETR, SIZE

  • WRITE
    Covering: APPE, DELE, MKD, RMD, RNTO, STOR, STOU, XMKD, XRMD

针对上面这个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

权限配置实例:

1、用户需求

Ubuntu 12.04下Proftpd FTP服务器配置_第1张图片

Ubuntu 12.04下Proftpd FTP服务器配置_第2张图片

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 完成权限配置。

你可能感兴趣的:(Linux,ftp,linux,服务器)