热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

配置ProFTPd服务器的MySQL方式认证

下载wgethttp://cloud.github.com/downloads/proftpd/proftpd.github.com/proftpd-1.3.4rc2.tar.gztarzxvfproftpd-1.3.4rc2.tar.gzcdproftpd-1.3.4rc2./configure--prefix/us

下载 wget http://cloud.github.com/downloads/proftpd/proftpd.github.com/proftpd-1.3.4rc2.tar.gz

tar zxvf proftpd-1.3.4rc2.tar.gz

cd proftpd-1.3.4rc2

./configure--prefix=/usr/local/proftp \

--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \

--with-includes=/usr/include/mysql \

--with-libraries=/usr/lib/mysql \

make && make install

解释

--with-includes: 指定MySQL服务器includes所在的位置,mysql的include文件通常是.h结尾,

--with-libraries:指定MySQL服务器libraries所在的位置,mysql的库文件通常是*结尾

到此proftp已安装结束

mysql安装方式 yum安装编译安装。

创建数据库proftp(utf-8)

导入附件中sql文件或,输入

CREATE TABLE IF NOT EXISTS `ftpgroup` (

  `groupname` varchar(16) NOT NULL default '',

  `gid` smallint(6) NOT NULL default '5500',

  `members` varchar(16) NOT NULL default '',

  KEY `groupname` (`groupname`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='ProFTP group table';

-- --------------------------------------------------------

--

-- Table structure for table `ftpquotalimits`

--

CREATE TABLE IF NOT EXISTS `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` int(10) unsigned NOT NULL default '0',

  `bytes_out_avail` int(10) unsigned NOT NULL default '0',

  `bytes_xfer_avail` int(10) unsigned 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'

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--

-- Table structure for table `ftpquotatallies`

--

CREATE TABLE IF NOT EXISTS `ftpquotatallies` (

  `name` varchar(30) NOT NULL default '',

  `quota_type` enum('user','group','class','all') NOT NULL default 'user',

  `bytes_in_used` int(10) unsigned NOT NULL default '0',

  `bytes_out_used` int(10) unsigned NOT NULL default '0',

  `bytes_xfer_used` int(10) unsigned 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'

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--

-- Table structure for table `ftpuser`

--

CREATE TABLE IF NOT EXISTS `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 '2001',

  `gid` smallint(6) NOT NULL default '2001',

  `homedir` varchar(255) NOT NULL default '/home/web',

  `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`),

  UNIQUE KEY `userid` (`userid`)

) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='ProFTP user table' AUTO_INCREMENT=0 ;

备份原proftpd.conf文件,copy 附件中配置并修改以下几处内容

cp /usr/local/proftp/etc/proftpd.conf/usr/local/proftp/etc/proftpd.conf-bak

vi /usr/local/proftp/etc/proftpd.conf

替换以下内容(此部分可见文件夹中proftp.conf)

# This is a basic ProFTPD configuration file (rename it to

# 'proftpd.conf' for actual use.  It establishes a single server

# and a single anonymous login.  It assumes that you have a user/group

# "nobody" and "ftp" for normal operation and anon.

ServerName               "ProFTPD Default Installation"

ServerType                 standalone

DefaultServer                    on

DefaultAddress                 192.168.3.58

#SocketBindTight on

# Port 21 is the standard FTP port.

Port                            21

# Don't use IPv6 support by default.

UseIPv6                      off

# Umask 022 is a good standard umask to prevent new dirs and files

# from being group and world writable.

Umask                        022 022

AllowRetrieveRestart            on

AllowStoreRestart               on

SyslogLevel warn

# To prevent DoS attacks, set the maximum number of child processes

# to 30.  If you need to allow more than 30 concurrent connections

# at once, simply increase this value.  Note that this ONLY works

# in standalone mode, in inetd mode you should use an inetd server

# that allows you to limit maximum number of processes per service

# (such as xinetd).

MaxInstances                    30

# Set the user and group under which the server will run.

User                            ftpuser

Group                         ftpgroup

# To cause every FTP user to be "jailed" (chrooted) into their home

# directory, uncomment this line.

DefaultRoot ~

# Normally, we want files to be overwriteable.

AllowOverwrite          on

# Bar use of SITE CHMOD by default

#

#  DenyAll

#

# A basic anonymous configuration, no upload directories.  If you do not

# want anonymous users, simply delete this entire section.

#

#  User                      ftp

#  Group                          ftpg

#  # We want clients to be able to login with "anonymous" as well as "ftp"

#  UserAlias                     anonymous ftp

#  # Limit the maximum number of anonymous logins

#  MaxClients                  10

#  # We want 'welcome.msg' displayed at login, and '.message' displayed

#  # in each newly chdired directory.

#  DisplayLogin                welcome.msg

#  DisplayChdir                .message

#  # Limit WRITE everywhere in the anonymous chroot

#    DenyAll

#

#LangPath        /usr/share/locale

#LangEngine on

#UseEncoding on #UTF-8 UTF-8

SQLAuthTypes Backend Plaintext

SQLAuthenticate users* groups*

# databasename@host database_user user_password

SQLConnectInfo  yourDBname@yourDBhost youeDBuser yourDBpass

#usertable ftpuser

SQLNamedQuery ftpuserinfo SELECT "userid,passwd,uid,gid,homedir,shell from ftpuser where userid = '%U' and count <1"

SQLUserInfo custom:/ftpuserinfo

#SQLUserInfo ftpuser userid passwd uid gid homedir shell

#SQLLogFile "/usr/local/proftpd/sqllog"

SQLGroupInfo ftpgroup groupname gid members

#SQLHomedirOnDemand on

CreateHome  on

SQLDefaultGID 2001

SQLDefaultUID 2001

# 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_avail, 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_in_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}'" ftpquotatallies

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

UseReverseDns off

IdentLookups off

修改以下2处

DefaultAddress修改为本ftp所在服务器ip地址

SQLConnectInfo  yourDBname@yourDBhost youeDBuser yourDBpass

修改数据名数据库用户及密码

1、添加ftp运行用户及组

groupadd ftpgroup -g 2001

adduser ftpuser -u 2001 -g 2001 -d /var/ftp -s /sbin/nologin

ps:uid 和gid 号可以自定义,设置后需要修改proftp.conf中SQLDefaultGID 2001

SQLDefaultUID 2001这两处,这里我新建的就是2001 所以proftp中我就没有修改

2、添加 ftp虚拟用户及组

groupadd ftpusers -g 2002

adduser proftp -u 2002 -g 2001 -d /var/ftp -s /sbin/nologin

ps:添加ftp用户,将其组加入到proftp运行组中,虚拟用户将继承2002 用户权限

在数据库中插入

INSERT INTO `proftp`.`ftpgrps` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', '2001', 'ftpuser');

INSERT INTO `proftp`.`ftpgrps` (`groupname`, `gid`, `members`) VALUES ('ftpusers', '2002', 'proftp');


推荐阅读
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细探讨了不同SQL数据库管理系统(DBMS)在限制输出结果、拼接字段和日期时间处理方面的函数差异。通过具体示例,帮助读者理解并掌握如何在不同DBMS中实现相同功能。 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
author-avatar
日韩潮衣一手临终批发
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有