使用Pureftpd进行FTP权限和磁盘配额管理

系统 Linux
Pureftpd是一款在多种类Unix上使用并符合GPL协议的原代码开放的软件,顾名思义,它就是一款纯粹的Ftp程序。本文带大家看看如何使用Pureftpd进行FTP权限和磁盘配额管理。

Pureftpd是一款快速,高质量,功能齐全的ftp服务器,最重要的是可以支持设置客户端默认编码,那如何使用Pureftpd进行FTP权限和磁盘配额管理,看下文。

  我们选用Pure-ftpd作为工具.

  安装

  Pure-ftpd是一个成熟的ftp工具,apt-get已经有打好的包了.我们直接通过apt-get就能很方便的安装.

  apt-get install pure-ftpd-mysql

  配置

  在数据库里边建一个库,这里用之前的hosting数据库.用以下语句创建一张表:

  CREATE TABLE users(

  User varchar(16) NOT NULL default '',

  status enum('0','1') NOT NULL default '0',

  Password varchar(64) NOT NULL default '',

  Uid varchar(11) NOT NULL default '-1',

  Gid varchar(11) NOT NULL default '-1',

  Dir varchar(128) NOT NULL default '',

  ULBandwidth smallint(5) NOT NULL default '0',

  DLBandwidth smallint(5) NOT NULL default '0',

  comment tinytext NOT NULL,

  ipaccess varchar(15) NOT NULL default '*',

  QuotaSize smallint(5) NOT NULL default '0',

  QuotaFiles int(11) NOT NULL default 0,

  PRIMARY KEY (User),

  UNIQUE KEY User (User)

  ) TYPE=MyISAM;

  这张表将用来存放ftp用户的相关信息.

  然后我们需要修改pure-ftpd-mysql的配置文件,告诉pure-ftpd数据库的相关信息.

  这里假设大家已经配置好了mysql,并有一个可用的账号.

  vim /etc/pure-ftpd/db/mysql.conf

  放入以下配置

  #账号信息 按自己情况修改

  MYSQLServer 127.0.0.1

  MYSQLPort 3306

  MYSQLSocket /var/run/mysqld/mysqld.sock

  MYSQLUser easy

  MYSQLPassword ******

  MYSQLDatabase hosting

  #加密方式

  MYSQLCrypt md5

  #取得数据的SQL语句

  #用户授权

  MYSQLGetPW SELECT Password FROM users WHERE User="\L"

  MYSQLGetUID SELECT Uid FROM users WHERE User="\L"

  MYSQLGetGID SELECT Gid FROM users WHERE User="\L"

  MYSQLGetDir SELECT Dir FROM users WHERE User="\L"

  #文件大小和个数限制

  MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="\L"

  MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L"

  #上行和下行带宽限制

  MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"

  MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"

  这样pure-ftpd就知道如何从mysql里边取数据了.

  为了得到上边出现的GID和UID,我们需要为ftp创建一个虚拟账号.FTP的全部用户共用这一个虚拟账号的UID和GID,而不需要为每个FTP用户创建系统用户.

  groupadd -g 2001 ftpgroup

  useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

  我们创建了GID为2001的ftpgroup组和UID为2001的ftpuser用户.现在可以往数据表中添加数据了.QuotaSize的单位是M,目录指向我们在mod-myvhost同样的路径.

  然后我们将用户锁定在他自己的目录下,不允许他通过ftp访问到别人的目录:

  echo yes > /etc/pure-ftpd/conf/ChrootEveryone

  当指定目录不存在时,自动创建目录

  echo yes > /etc/pure-ftpd/conf/CreateHomeDir

  设置完成.重启pure-ftpd.

  /etc/init.d/pure-ftpd-mysql restart

  全部配置都完成了.我们上传文件试试.

  登陆成功,上传文件提示没权限.这是因为/data0/myapphost的属性设定造成的.将整个目录改为ftpuser的就可以了

  chown -R ftpuser:ftpgroup /data0/myapphost

  修改属性后,已经可以上传文件了.试试配额限制:

  错误:> [2010-1-27 22:47:12] 无法写入数据 socket。Socket 错误 = #10054。

  [2010-1-27 22:47:12] 550-Quota exceeded: abc.zip won't be saved

  550-6 files used (120%) - authorized: 5 files

  550 6974 Kbytes used (681%) - authorized: 1024 Kb

  错误:> [2010-1-27 22:47:12] 请求的操作未执行(如,文件或目录未找到,不能访问)。

  错误:> [2010-1-27 22:47:43] 无法写入数据 socket。Socket 错误 = #10054。

  [2010-1-27 22:47:43] 550-Quota exceeded: abc.zip won't be saved

  550-4 files used (80%) - authorized: 5 files

  550 3954 Kbytes used (386%) - authorized: 1024 Kb

  错误:> [2010-1-27 22:47:43] 请求的操作未执行(如,文件或目录未找到,不能访问)。

  从错误信息可以看出,配额已经生效了.当配置修改后,已经登录的ftp用户需要重新登陆后才会生效.

  小结

  到这里为止,我们已经完成了一个单服务器的应用管理平台的基本功能.再添加一个用于申请应用和开通账号的web管理前端,整个平台即可投入使用了.

通过文章的介绍和分析,我们清楚的了解到使用Pureftpd进行FTP权限和磁盘配额管理的具体方法,希望本文对大家有所帮助!

【编辑推荐】

  1. Ubuntu Server 10.04下pure-ftpd工作方式和原理
  2. Ubuntu Server 10.04下pure-ftpd配置大全
  3. Pureftpd小小技巧 让你受益无穷
  4. ubuntu下Pureftpd配置之虚拟用户设置
  5. ubuntu 下 Pureftpd 配置之文件夹权限
  6. Pureftpd攻略
  7. vsFTPd 服务器初学者精通手册
责任编辑:赵鹏 来源: 网络转载
相关推荐

2011-03-03 14:26:15

PureftpdSSHFTP

2009-10-22 09:25:28

linux磁盘配额

2011-08-03 16:36:07

Win7磁盘配额

2011-03-02 16:49:53

Pureftpdmysql

2011-03-03 11:13:11

Pureftpd

2010-12-31 10:56:13

Windows Ser管理磁盘配额

2011-02-25 18:03:33

Pureftpd

2010-03-10 17:37:48

Linux磁盘配额

2011-09-06 17:59:14

2011-02-23 14:05:57

2010-03-25 12:53:28

CentOS磁盘

2011-03-03 17:14:45

PureFTPdWindowsls

2011-03-02 18:00:35

pure-ftpd

2009-12-14 13:44:49

Linux磁盘配额

2011-08-01 17:30:06

ActiveDirec组策略磁盘配额

2011-01-19 09:14:53

Linux磁盘配额

2011-03-03 10:57:47

pureftpdslackware

2011-03-02 15:15:26

ubuntuPureftpd

2009-10-22 15:27:20

linux磁盘配额

2011-03-07 13:12:58

FileZilla
点赞
收藏

51CTO技术栈公众号