T086ѧϰ�� | վ��ѧԺ | �����ĵ� | ���� | Ъ���� | IP��ַ��ѯ | �������� | ���ջ��� | �����ֵ� | ���ù��� | ������Ϣ��ѯ

proftpdѧϰ�ʼǣ��ģ�

�� ��Դ����΢����BLOG���ߣ���΢�� ����ʱ�䣺2006-10-10 | ���壺�� �� С��
[����]�������ǽ�proftp��mysql��quota��Ӧ�ã������������ڴ��ľ��������˰� 1.�������ǽ�����Ӧ���û����û��� groupadd -g 5500 ftpgroupadduser -u 5500 -s /bin/false -d /bin/null -c proftpd user -g ftpgroup ftpu...

�������ǽ�proftp��mysql��quota��Ӧ�ã������������ڴ��ľ��������˰�

1.�������ǽ�����Ӧ���û����û���

groupadd -g 5500 ftpgroup
adduser -u 5500 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser

2.�������ݿ�

mysql mysql -uroot -ppassword
create database ftpdb
grant select, update on ftpdb.* to proftpd@localhost identified by 'password'

use ftpdb


CREATE TABLE `ftpgroup` (
`groupname` varchar(16) NOT NULL default '',
`gid` smallint(6) NOT NULL default '5500',
`members` varchar(16) NOT NULL default '',
KEY `groupname` (`groupname`)
) TYPE=MyISAM COMMENT='ProFTP group table';

INSERT INTO `ftpgroup` VALUES ('ftpgroup', 5500, 'ftpuser');

CREATE TABLE `ftpquotalimits` (
`name` varchar(30) default NULL,
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`per_session` enum('false','true') NOT NULL default 'false',
`limit_type` enum('soft','hard') NOT NULL default 'soft',
`bytes_in_avail` float NOT NULL default '0',
`bytes_out_avail` float NOT NULL default '0',
`bytes_xfer_avail` float NOT NULL default '0',
`files_in_avail` int(10) unsigned NOT NULL default '0',
`files_out_avail` int(10) unsigned NOT NULL default '0',
`files_xfer_avail` int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;

CREATE TABLE `ftpquotatallies` (
`name` varchar(30) NOT NULL default '',
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`bytes_in_used` float NOT NULL default '0',
`bytes_out_used` float NOT NULL default '0',
`bytes_xfer_used` float NOT NULL default '0',
`files_in_used` int(10) unsigned NOT NULL default '0',
`files_out_used` int(10) unsigned NOT NULL default '0',
`files_xfer_used` int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;

CREATE TABLE `ftpuser` (
`id` int(10) unsigned NOT NULL auto_increment,
`userid` varchar(32) NOT NULL default '',
`passwd` varchar(32) NOT NULL default '',
`uid` smallint(6) NOT NULL default '5500',
`gid` smallint(6) NOT NULL default '5500',
`homedir` varchar(255) NOT NULL default '',
`shell` varchar(16) NOT NULL default '/sbin/nologin',
`count` int(11) NOT NULL default '0',
`accessed` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT='ProFTP user table' ;

ע���������Ҹ���ʵ��������д�Լ����ݿ����û��������룬�������Ҷ����ݿ���������Ϥ�Ļ�������������phpmyadmin��������

3.����proftp�ļ�

ServerName "Frank's FTP Server" ServerType standalone DefaultServer on

Port 21

Umask 022

MaxInstances 30
MaxLoginAttempts 3

User nobody
Group nobody

MaxHostsPerUser 1 "Sorry, you may not connect more than one time."
MaxClientsPerUser 2 "Only one such user at a time."
MaxClientsPerHost 3 "Sorry, you may not connect more than one time."

RootLogin off
RequireValidShell off
TimeoutStalled 10
MaxClients 10
AllowForeignAddress on
AllowStoreRestart on
ServerIdent off
DefaultRoot ~ ftpgroup

SQLAuthTypes Backend Plaintext
#Backend��ʾ�û���֤��ʽΪMySQL���ݿ�����֤��ʽ
#Plaintext��ʾ������֤��ʽ��������ǰ����Ϊ����ʹ�õķ�ʽ
SQLAuthenticate users* groups*

# databasename@host database_user user_password
SQLConnectInfo ftpdb@localhost proftpd password
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
SQLHomedirOnDemand on
#�����û���Ŀ¼�����ڣ���ϵͳ�����ݴ��û����û����ݱ��е�homedir�ֶε�ֵ�½�һ��Ŀ¼
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1,accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
QuotaLog "/var/log/quota"
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avai
l, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}'
AND quota_type = '%{1}'"

SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_i
n_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used
+ %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_
out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquota
tallies

SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally


ok,����ô�򵥣�����һ��proftp�������Ѿ���ʹ��proftp��mysql��quota�Ĺ���

���ǿ��������ݿ�ftpuser����һ�������û���

INSERT INTO `ftpuser` VALUES (1, 'test', 'ftppasswd', 5500, 5500, '/home/test', '/sbin/nologin');

���ҿ�����phpmyadmin��ֱ�Ӳ�������һ���û������Ų����ҽ̴�����ô���Ӱɣ���

������������quota��ֻҪ��ftpquotalimits��������һ�¾����ˣ����������ĸ��������ֱ�������

quotalimits��

name�� - �û��ʺ�
quota type�� - user, group, class, all (we use user)
per_session�� - true or false (we use true)
limit_type�� - Ӳ���� or ������ (����һ����Ӳ����)
bytes_in_avail�� - �����ϴ����ֽ���
bytes_out_avail�� - �������ص��ֽ���
bytes_xfer_avail�� - �����������ֽ����������ϴ�/���أ�
files_in_avail�� - �����ϴ����ļ���
files_out_avail�� - �������ص��ļ���
files_xfer_avail�� - �����������ļ����������ϴ�/���أ�

��ʵ˵��mysql��quotaģ������֤�û������ô����޶�����ܾ��û��Dz������ƣ���Ϊ�����������У����ݿ����ﻹû����Ӧ��Ȩ�޵��ֶΣ�����˵��Ӧ�û���Ȩ�޻��ǵ���ʵ�ʵ��û���mysql��Ӧ��uid��gid������Ȩ�ޣ�����Ҫ��mysql���ݿ�Ҳ����ȫ����Ȩ�޾ͺ��ˡ�

�����������ø�ʽ������ʱ�����ܻ������Ļ�������ֱ�������ҵ������ļ������ݿ���

����proftpd.conf
����ftpdb.sql

ֻ���ҵ����ݿ�������Ӧ��uid��gid����5500�����ҿɸ����Լ��������޸ģ���ע������Ŷ��

��������һֱ��ѧϰproftp�����ڿ����ɿ����ˣ�ϣ���ҵ�ѧϰ�ʼǿ��Զ�һЩ��ѧϰproftp�������������������ཻ��

�������£�
proftpdѧϰ�ʼǣ�һ��
proftpdѧϰ�ʼǣ�����
proftpdѧϰ�ʼǣ�����

�ο��ĵ���
Mandrake 9.2 + Proftpd + MySQL authentication + Quotas Howto
proftpd + mysql + quota������ȫָ��
Proftpd Configuration Docs

  • ת����ע����Դ��ITѧϰ�� ��ַ��http://www.t086.com/ �����������Ƽ�������
  • �ر������� ��վ�������ر�������ֹת�ص�ר�������������¿�������ת�أ���������ע��������ԭʼ���ߡ����°�Ȩ������ԭʼ�������С����ڱ���վת�����µĸ��˺���վ�����DZ�ʾ������л�⡣������վת�ص������а�Ȩ��������ϵ���ǣ����ǻᾡ�����Ը�����
  • ��
  • ��
  • ��
  • ��
  • ��
  • ��
  • ��
  • ��
  • ��
������ѯ Health Check Gulangyu
© 2017 T086ѧϰ�� - T086.com(ԭitlearner.com)
RunTime:12.82ms QueryTime:7