首页 运维 正文
Proftpd和MySQL 的全面配置

 2022-10-23    324  

ProftpdMySQL 的全面配置:proftpd(Professional FTP daemon),是针对Wu-FTP的弱项而开发的。除了改进其安全性,还有具备许多Wu-FTP所没有的特点。比如,能以Stand-alone、xinetd模式运行。ProFTP不仅配置方便,而且有MySQL模块,本文主要讲述的是Proftpd和MySQL 的全面配置。

  1.建立相应的用户和用户组

Proftpd和MySQL 的全面配置

  groupadd-g5500ftpgroup 
  •   adduser-u5500-s/bin/false-d/bin/null-c"proftpduser"-gftpgroupftpuser
  •   2.操作数据库

      mysqlmysql-uroot-ppassword 
  •   createdatabaseftpdb
  •   grantselect,updateonftpdb.*toproftpd@localhostidentifiedby'password'useftpdb
  •   

    CREATETABLE`ftpgroup`( 
  •   `groupname`varchar(16)NOTNULLdefault'',
  •   `gid`smallint(6)NOTNULLdefault'5500',
  •   `members`varchar(16)NOTNULLdefault'',
  •   KEY`groupname`(`groupname`)
  •   )TYPE=MyISAMCOMMENT='ProFTPgrouptable';
  •   INSERTINTO`ftpgroup`VALUES('ftpgroup',5500,'ftpuser');
  •   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;
  •   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;
  •   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';
  •   注意这里大家根据实际情况填写自己数据库的用户名和密码,如果大家对数据库操作不熟悉的话,不妨可以用phpmyadmin来操作。

    #p#

      3.配置proftp文件

      ServerName"Frank'sFTPServer"ServerTypestandaloneDefaultServeronPort21 
  •   Umask022
  •   MaxInstances30
  •   MaxLoginAttempts3
  •   Usernobody
  •   Groupnobody
  •   MaxHostsPerUser1"Sorry,youmaynotconnectmorethanonetime."
  •   MaxClientsPerUser2"Onlyonesuchuseratatime."
  •   MaxClientsPerHost3"Sorry,youmaynotconnectmorethanonetime."
  •   RootLoginoff
  •   RequireValidShelloff
  •   TimeoutStalled10
  •   MaxClients10
  •   AllowForeignAddresson
  •   AllowStoreRestarton
  •   ServerIdentoff
  •   DefaultRoot~ftpgroup
  •   SQLAuthTypesBackendPlaintext
  •   #Backend表示用户认证方式为MySQL数据库的认证方式
  •   #Plaintext表示明文认证方式,排在最前面的为最先使用的方式
  •   SQLAuthenticateusers*groups*
  •   #databasename@hostdatabase_useruser_password
  •   SQLConnectInfoftpdb@localhostproftpdpassword
  •   SQLUserInfoftpuseruseridpasswduidgidhomedirshell
  •   SQLGroupInfoftpgroupgroupnamegidmembers
  •   SQLHomedirOnDemandon
  •   #如果用户主目录不存在,则系统会根据此用户在用户数据表中的homedir字段的值新建一个目录
  •   #Updatecounteverytimeuserlogsin
  •   SQLLogPASSupdatecount
  •   SQLNamedQueryupdatecountUPDATE"countcount=count+1,accessed=now()WHEREuserid='%u'"ftpuser
  •   #Updatemodifiedeverytimeuseruploadsordeletesafile
  •   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_avai
  •   l,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_i
  •   n_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_files_out_used=files_
  •   out_used+%{4},files_xfer_usedfiles_xfer_used=files_xfer_used+%{5}WHEREname='%{6}'ANDquota_type='%{7}'"ftpquota
  •   tallies
  •   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
  •   ok,就这么简单,重启一下proftp服务就已经能使用proftp+mysql+quota的功能

      我们可以在数据库ftpuser添加一个虚拟用户,

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

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

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

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