Proftpd和MySQL 的全面配置
创始人
2024-07-21 16:31:41
0

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

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

  1.   groupadd -g 5500 ftpgroup  
  2.  
  3.   adduser -u 5500 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser  
  4.  

  2.操作数据库

  1.   mysql mysql -uroot -ppassword  
  2.  
  3.   create database ftpdb  
  4.  
  5.   grant select, update on ftpdb.* to proftpd@localhost identified by 'password'use ftpdb  
  6.  

  

  1. CREATE TABLE `ftpgroup` (  
  2.  
  3.   `groupname` varchar(16) NOT NULL default '',  
  4.  
  5.   `gid` smallint(6) NOT NULL default '5500',  
  6.  
  7.   `members` varchar(16) NOT NULL default '',  
  8.  
  9.   KEY `groupname` (`groupname`)  
  10.  
  11.   ) TYPE=MyISAM COMMENT='ProFTP group table';  
  12.  
  13.   INSERT INTO `ftpgroup` VALUES ('ftpgroup', 5500, 'ftpuser');  
  14.  
  15.   CREATE TABLE `ftpquotalimits` (  
  16.  
  17.   `name` varchar(30) default NULL,  
  18.  
  19.   `quota_type` enum('user','group','class','all') NOT NULL default 'user',  
  20.  
  21.   `per_session` enum('false','true') NOT NULL default 'false',  
  22.  
  23.   `limit_type` enum('soft','hard') NOT NULL default 'soft',  
  24.  
  25.   `bytes_in_avail` float NOT NULL default '0',  
  26.  
  27.   `bytes_out_avail` float NOT NULL default '0',  
  28.  
  29.   `bytes_xfer_avail` float NOT NULL default '0',  
  30.  
  31.   `files_in_avail` int(10) unsigned NOT NULL default '0',  
  32.  
  33.   `files_out_avail` int(10) unsigned NOT NULL default '0',  
  34.  
  35.   `files_xfer_avail` int(10) unsigned NOT NULL default '0'  
  36.  
  37.   ) TYPE=MyISAM;  
  38.  
  1.   CREATE TABLE `ftpquotatallies` (  
  2.  
  3.   `name` varchar(30) NOT NULL default '',  
  4.  
  5.   `quota_type` enum('user','group','class','all') NOT NULL default 'user',  
  6.  
  7.   `bytes_in_used` float NOT NULL default '0',  
  8.  
  9.   `bytes_out_used` float NOT NULL default '0',  
  10.  
  11.   `bytes_xfer_used` float NOT NULL default '0',  
  12.  
  13.   `files_in_used` int(10) unsigned NOT NULL default '0',  
  14.  
  15.   `files_out_used` int(10) unsigned NOT NULL default '0',  
  16.  
  17.   `files_xfer_used` int(10) unsigned NOT NULL default '0'  
  18.  
  19.   ) TYPE=MyISAM;  
  20.  
  1.   CREATE TABLE `ftpuser` (  
  2.  
  3.   `id` int(10) unsigned NOT NULL auto_increment,  
  4.  
  5.   `userid` varchar(32) NOT NULL default '',  
  6.  
  7.   `passwd` varchar(32) NOT NULL default '',  
  8.  
  9.   `uid` smallint(6) NOT NULL default '5500',  
  10.  
  11.   `gid` smallint(6) NOT NULL default '5500',  
  12.  
  13.   `homedir` varchar(255) NOT NULL default '',  
  14.  
  15.   `shell` varchar(16) NOT NULL default '/sbin/nologin',  
  16.  
  17.   `count` int(11) NOT NULL default '0',  
  18.  
  19.   `accessed` datetime NOT NULL default '0000-00-00 00:00:00',  
  20.  
  21.   `modified` datetime NOT NULL default '0000-00-00 00:00:00',  
  22.  
  23.   PRIMARY KEY (`id`)  
  24.  
  25.   ) TYPE=MyISAM COMMENT='ProFTP user table' ;  
  26.  

  注意这里大家根据实际情况填写自己数据库的用户名和密码,如果大家对数据库操作不熟悉的话,不妨可以用phpmyadmin来操作。

#p#

  3.配置proftp文件

  1.   ServerName "Frank's FTP Server" ServerType standalone DefaultServer onPort 21  
  2.  
  3.   Umask 022  
  4.  
  5.   MaxInstances 30  
  6.  
  7.   MaxLoginAttempts 3  
  8.  
  9.   User nobody  
  10.  
  11.   Group nobody  
  12.  
  13.   MaxHostsPerUser 1 "Sorry, you may not connect more than one time."  
  14.  
  15.   MaxClientsPerUser 2 "Only one such user at a time."  
  16.  
  17.   MaxClientsPerHost 3 "Sorry, you may not connect more than one time."  
  18.  
  19.   RootLogin off  
  20.  
  21.   RequireValidShell off  
  22.  
  23.   TimeoutStalled 10  
  24.  
  25.   MaxClients 10  
  26.  
  27.   AllowForeignAddress on  
  28.  
  29.   AllowStoreRestart on  
  30.  
  31.   ServerIdent off  
  32.  
  33.   DefaultRoot ~ ftpgroup  
  34.  
  35.   SQLAuthTypes Backend Plaintext  
  36.  
  37.   #Backend表示用户认证方式为MySQL数据库的认证方式  
  38.  
  39.   #Plaintext表示明文认证方式,排在最前面的为最先使用的方式  
  40.  
  41.   SQLAuthenticate users* groups*  
  42.  
  43.   # databasename@host database_user user_password  
  44.  
  45.   SQLConnectInfo ftpdb@localhost proftpd password  
  46.  
  47.   SQLUserInfo ftpuser userid passwd uid gid homedir shell  
  48.  
  49.   SQLGroupInfo ftpgroup groupname gid members  
  50.  
  51.   SQLHomedirOnDemand on  
  52.  
  53.   #如果用户主目录不存在,则系统会根据此用户在用户数据表中的homedir字段的值新建一个目录  
  54.  
  55.   # Update count every time user logs in  
  56.  
  57.   SQLLog PASS updatecount  
  58.  
  59.   SQLNamedQuery updatecount UPDATE "countcount=count+1,accessed=now() WHERE userid='%u'" ftpuser  
  60.  
  61.   # Update modified everytime user uploads or deletes a file  
  62.  
  63.   SQLLog STOR,DELE modified  
  64.  
  65.   SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser  
  66.  
  67.   QuotaEngine on  
  68.  
  69.   QuotaDirectoryTally on  
  70.  
  71.   QuotaDisplayUnits Mb  
  72.  
  73.   QuotaShowQuotas on  
  74.  
  75.   QuotaLog "/var/log/quota"  
  76.  
  77.   SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avai  
  78.  
  79.   l, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' 
  80.  
  81.   AND quota_type = '%{1}'"  
  82.  
  83.   SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_i  
  84.  
  85.   n_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"  
  86.  
  87.   SQLNamedQuery update-quota-tally UPDATE "bytes_in_usedbytes_in_used = bytes_in_used + %{0}, bytes_out_usedbytes_out_used = bytes_out_used  
  88.  
  89.   + %{1}, bytes_xfer_usedbytes_xfer_used = bytes_xfer_used + %{2}, files_in_usedfiles_in_used = files_in_used + %{3}, files_files_out_used = files_  
  90.  
  91.   out_used + %{4}, files_xfer_usedfiles_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquota  
  92.  
  93.   tallies  
  94.  
  95.   SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies  
  96.  
  97.   QuotaLimitTable sql:/get-quota-limit  
  98.  
  99.   QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally  
  100.  

  ok,就这么简单,重启一下proftp服务就已经能使用proftp+mysql+quota的功能

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

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

  大家可以在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数据库也能完全控制权限就好了。

【编辑推荐】

  1. 用MySQL和Proftpd配置FTP服务器
  2. ProFTPD 下的五大问题
  3. Linux ProFTPd服务器配置(全)
  4. Ubuntu vsftpd服务安装设置
  5. ProFTPD的启动与测试
  6. ubuntu下proftp的编译、安装与测试
  7. ProFTPd的启动
  8. 在图形界面下控制ProFTPD

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...