2022-10-23 375
Proftpd+Mysql+Quota的配置:这篇文章整理而来,包括Proftpd+Mysql+Quota的配置。依照本文步骤逐步实行。mysql/php/apache安装就免了,需要说明的是我的mysql是使用源码安装!
相关软件:
—————————————————————
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/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态