首页 运维 正文
Proftpd+Mysql+Quota的配置

 2022-10-23    331  

Proftpd+Mysql+Quota配置:这篇文章整理而来,包括Proftpd+Mysql+Quota的配置。依照本文步骤逐步实行。mysql/php/apache安装就免了,需要说明的是我的mysql是使用源码安装!

  相关软件:

Proftpd+Mysql+Quota的配置

  —————————————————————

  proftpd-1.2.9.tar.gz

  proftpd-mod-quotatab-1.2.11.tar.gz

  ftpdb.sql

  proftpd.conf

  —————————————————————

  步骤如下:

  代码:

  vi/etc/ld.so.conf 

  添加:/usr/local/mysql/lib

  tarzvxfproftpd-1.2.9.tar.gz 

  tarzvxfproftpd-mod-quotatab-1.2.11.tar.gz 

  cpmod_quotatab/*.cproftpd-1.2.9/contrib/ 

  cpmod_quotatab/*.hproftpd-1.2.9/contrib/ 

  viproftpd-1.2.9/contrib/mod_sql_mysql.c 

  #include 

  修改mysql.h的实际路径

  cdproftpd-1.2.9 

  ./configure\--prefix=/usr/local/proftpd\--with-modules=mod_sql:mod_sql_mysql:mod_quotatab\:mod_quotatab_sql:mod_ratio\--with-includes=/usr/local/mysql/include\--with-libraries=/usr/local/mysql/lib 

  make 

  makeinstall 

  cpproftpd-1.2.9/contrib/dist/rpm/proftpd.init.d/etc/rc.d/init.d/proftpd 

  vi/etc/rc.d/init.d/proftpd 

  修改:PATH="$PATH:/usr/local/proftpd/sbin"

  chmod755/etc/rc.d/init.d/proftpd 

  chkconfig--level3proftpdon 

  groupadd-g5500ftpgroup 

  adduser-u5500-s/bin/false-d/bin/null-c"proftpduser"-gftpgroupftpuser 

#p#

  然后配置你的Proftpd.conf

  最后就是启动啦。/usr/local/proftpd/sbin/proftpd

  ——————————-Proftpd.conf———————————-

  代码:

  #ThisisabasicProFTPDconfigurationfile(renameitto 

  #'proftpd.conf'foractualuse.Itestablishesasingleserver 

  #andasingleanonymouslogin.Itassumesthatyouhaveauser/group 

  #"nobody"and"ftp"fornormaloperationandanon. 

  ServerName"ltsnet" 

  ServerTypestandalone 

  DefaultServeron 

  #Port21isthestandardFTPport. 

  Port21 

  #Umask022isagoodstandardumasktopreventnewdirsandfiles 

  #frombeinggroupandworldwritable. 

  Umask022 

  #TopreventDoSattacks,setthemaximumnumberofchildprocesses 

  #to30.Ifyouneedtoallowmorethan30concurrentconnections 

  #atonce,simplyincreasethisvalue.NotethatthisONLYworks 

  #instandalonemode,ininetdmodeyoushoulduseaninetdserver 

  #thatallowsyoutolimitmaximumnumberofprocessesperservice 

  #(suchasxinetd). 

  MaxInstances30 

  #Settheuserandgroupunderwhichtheserverwillrun. 

  Usernobody 

  Groupnobody 

  #TocauseeveryFTPusertobe"jailed"(chrooted)intotheirhome 

  #directory,uncommentthisline. 

  ServerIdentoff 

  DisplayLoginwelcome.msg 

  DefaultRoot~ 

  #Normally,wewantfilestobeoverwriteable. 

   

  AllowOverwriteon 

   

  #Abasicanonymousconfiguration,nouploaddirectories.Ifyoudonot 

  #wantanonymoususers,simplydeletethisentiresection. 

   

  Userftp 

  Groupftp 

  #Wewantclientstobeabletologinwith"anonymous"aswellas"ftp" 

  UserAliasanonymousftp 

  #Limitthemaximumnumberofanonymouslogins 

  MaxClients10 

  #Wewant'welcome.msg'displayedatlogin,and'.message'displayed 

  #ineachnewlychdireddirectory. 

  DisplayLoginwelcome.msg 

  DisplayFirstChdir.message 

  #LimitWRITEeverywhereintheanonymouschroot 

   

  DenyAll 

   

  

  SQLAuthTypesBackendPlaintext 

  SQLAuthenticateusers*groups* 

  SQLConnectInfoftpdb@localhostroot123456 

  SQLUserInfoftpuseruseridpasswduidgidhomedirshell 

  SQLGroupInfoftpgroupgroupnamegidmembers 

  SQLHomedirOnDemandon 

  SQLLogPASSupdatecount 

  SQLNamedQueryupdatecountUPDATE"countcount=count+1,accessed=now()WHEREuserid='%u'"ftpuser 

  SQLLogSTOR,DELEmodified 

  SQLNamedQuerymodifiedUPDATE"modified=now()WHEREuserid='%u'"ftpuser 

  QuotaEngineon 

  QuotaDirectoryTallyon 

  QuotaDisplayUnitsMb 

  QuotaShowQuotason 

  QuotaLog"/var/log/quota" 

  SQLNamedQueryget-quota-limitSELECT"name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_availFROMftpquotalimitsWHEREname='%{0}'ANDquota_type='%{1}'" 

  SQLNamedQueryget-quota-tallySELECT"name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_usedFROMftpquotatalliesWHEREname='%{0}'ANDquota_type='%{1}'" 

  SQLNamedQueryupdate-quota-tallyUPDATE"bytes_in_usedbytes_in_used=bytes_in_used+%{0},bytes_out_usedbytes_out_used=bytes_out_used+%{1},bytes_xfer_usedbytes_xfer_used=bytes_xfer_used+%{2},files_in_usedfiles_in_used=files_in_used+%{3},files_out_usedfiles_out_used=files_out_used+%{4},files_xfer_usedfiles_xfer_used=files_xfer_used+%{5}WHEREname='%{6}'ANDquota_type='%{7}'"ftpquotatallies 

  SQLNamedQueryinsert-quota-tallyINSERT"%{0},%{1},%{2},%{3},%{4},%{5},%{6},%{7}"ftpquotatallies 

  QuotaLimitTablesql:/get-quota-limit 

  QuotaTallyTablesql:/get-quota-tally/update-quota-tally/insert-quota-tally 

#p#

  建ftpdb库,在phpMyAdmin中导入ftpdb.sql就ok。

  ————————————–ftpdb.sql———————————

  代码:

  #表的结构`ftpgroup` 

  # 

  CREATETABLE`ftpgroup`( 

  `groupname`varchar(16)NOTNULLdefault'', 

  `gid`smallint(6)NOTNULLdefault'5500', 

  `members`varchar(16)NOTNULLdefault'', 

  KEY`groupname`(`groupname`) 

  )TYPE=MyISAMCOMMENT='ProFTPgrouptable'; 

  # 

  #导出表中的数据`ftpgroup` 

  # 

  INSERTINTO`ftpgroup`VALUES('ftpgroup',5500,'ftpuser'); 

  #-------------------------------------------------------- 

  # 

  #表的结构`ftpquotalimits` 

  # 

  CREATETABLE`ftpquotalimits`( 

  `name`varchar(30)defaultNULL, 

  `quota_type`enum('user','group','class','all')NOTNULLdefault'user', 

  `per_session`enum('false','true')NOTNULLdefault'false', 

  `limit_type`enum('soft','hard')NOTNULLdefault'soft', 

  `bytes_in_avail`floatNOTNULLdefault'0', 

  `bytes_out_avail`floatNOTNULLdefault'0', 

  `bytes_xfer_avail`floatNOTNULLdefault'0', 

  `files_in_avail`int(10)unsignedNOTNULLdefault'0', 

  `files_out_avail`int(10)unsignedNOTNULLdefault'0', 

  `files_xfer_avail`int(10)unsignedNOTNULLdefault'0'

  )TYPE=MyISAM; 

  # 

  #导出表中的数据`ftpquotalimits` 

  # 

  INSERTINTO`ftpquotalimits`VALUES('test','user','true','hard','9e+06','2000','9e+09',2000,2000,2000); 

  #-------------------------------------------------------- 

  # 

  #表的结构`ftpquotatallies` 

  # 

  CREATETABLE`ftpquotatallies`( 

  `name`varchar(30)NOTNULLdefault'', 

  `quota_type`enum('user','group','class','all')NOTNULLdefault'user', 

  `bytes_in_used`floatNOTNULLdefault'0', 

  `bytes_out_used`floatNOTNULLdefault'0', 

  `bytes_xfer_used`floatNOTNULLdefault'0', 

  `files_in_used`int(10)unsignedNOTNULLdefault'0', 

  `files_out_used`int(10)unsignedNOTNULLdefault'0', 

  `files_xfer_used`int(10)unsignedNOTNULLdefault'0'

  )TYPE=MyISAM; 

  # 

  #导出表中的数据`ftpquotatallies` 

  # 

  INSERTINTO`ftpquotatallies`VALUES('test','user','2000','2000','2000',2000,2000,2000); 

  #-------------------------------------------------------- 

  # 

  #表的结构`ftpuser` 

  # 

  CREATETABLE`ftpuser`( 

  `id`int(10)unsignedNOTNULLauto_increment, 

  `userid`varchar(32)NOTNULLdefault'', 

  `passwd`varchar(32)NOTNULLdefault'', 

  `uid`smallint(6)NOTNULLdefault'5500', 

  `gid`smallint(6)NOTNULLdefault'5500', 

  `homedir`varchar(255)NOTNULLdefault'', 

  `shell`varchar(16)NOTNULLdefault'/sbin/nologin', 

  `count`int(11)NOTNULLdefault'0', 

  `accessed`datetimeNOTNULLdefault'0000-00-0000:00:00', 

  `modified`datetimeNOTNULLdefault'0000-00-0000:00:00', 

  PRIMARYKEY(`id`) 

  )TYPE=MyISAMCOMMENT='ProFTPusertable'AUTO_INCREMENT=3; 

  # 

  #导出表中的数据`ftpuser` 

  # 

  INSERTINTO`ftpuser`VALUES(1,'test','123456',5500,5500,'/home/test','/sbin/nologin',36,'2004-09-2813:07:41','2004-09-2813:07:42'); 

  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模块来验证用户和设置磁盘限额,但我总觉得还是不够完善,因为在这个方法中,数据库表里还没有相应的权限的字段,所以说相应用户的权限还是得用实际得用户即mysql对应得uid和gid来控制权限,要是mysql数据库也能完全控制权限就好了,

原文链接:https://77isp.com/post/8624.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。