注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

永福的技术博客

Linux运维

 
 
 

日志

 
 

安装pureftpd并与mysql结合(支持虚拟用户)  

2012-05-13 14:49:23|  分类: 软件编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一、编译安装pureftpd
1.1 下载:

1.2 编译
[root]# tar -xzf  pure-ftpd-1.0.36.tar.gz
[root]# ./configure --prefix=/usr/local/pureftpd  --with-cookie --with-uploadscript  --with-throttling  --with-ratios  --with-quotas  --with-sysquotas  --with-welcomemsg  --with-virtualhosts  --with-virtualchroot   --with-diraliases  --with-peruserlimits  --with-language=simplified-chinese  --with-mysql=/usr/local/mysql --with-paranoidmsg   --with-puredb 

如果出现类似configure: error: Your MySQL client libraries aren't properlyinstalled 的错误,将mysql目录下的include/mysql下的mysql.h文件以及lib/mysql下的全部文件,连接(直接复制过去或许也可)到 /usr/lib目录下.

[root]# make ; make install

二、建立配置文件
[root]# mkdir -m 755  /usr/local/pureftpd/etc
[root]# cp pureftpd-mysql.conf   /usr/local/pureftpd/etc/
[root]# cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/
[root]# cp configuration-file/pure-config.pl /usr/local/pureftpd/bin/
[root]# chmod u+x  /usr/local/pureftpd/bin/pure-config.pl

三、建立mysql认证数据库表
mysql> create database pureftpd;
mysql> grant all on pureftpd.* to pureftpd@localhost identified by '123456';
mysql> use pureftpd

mysql> CREATE TABLE users (
id int(32) unsigned NOT NULL auto_increment,
User varchar(16) NOT NULL default '*',
Password varchar(64) NOT NULL default '*',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '-1',
QuotaSize smallint(5) NOT NULL default 0,
QuotaFiles int(11) NOT NULL default 0,
ULBandwidth smallint(5) NOT NULL default 0,
DLBandwidth smallint(5) NOT NULL default 0,
ULRatio smallint(6) NOT NULL default 0,
DLRatio smallint(6) NOT NULL default 0,
comment tinytext  NULL,
ipaccess varchar(15) NOT NULL default '*',
status enum('0','1') NOT NULL default '1',
PRIMARY KEY (id,User),
UNIQUE KEY User (User)
) ;

建立用户
mysql>INSERT INTO users VALUES (1,'yongfu', '123456', '1600', '1600','/data/www/yongfu', 0, 0, 0, 0, 0, 0, '*', '*', '1');
// uid=1600, gid=1600 为系统www用户的id号,使用该yongfu的ftp帐号上传文件后,会直接属于www用户和用户组

四、建立用于pureftpd认证用户的系统信息
[root]# groupadd -g 2000 pureftp
[root]# useradd -u 2000 -g pureftp -d /var/pureftp -s /sbin/nologin pureftp
[永福原创]转载请注明:来自http://rickie622.blog.163.com
五、修改pureftpd的配置文件
5.1 修改pure-ftpd.conf
[root]# vi /usr/local/pureftpd/etc/pure-ftpd.conf
MySQLConfigFile              /usr/local/pureftpd/etc/pureftpd-mysql.conf

5.2 修改pure-ftpd.conf后的状态
[root]# egrep -v '^#|^$' pure-ftpd.conf     

ChrootEveryone              yes
BrokenClientsCompatibility  no
MaxClientsNumber            100
Daemonize                   yes
MaxClientsPerIP             30
VerboseLog                  no
DisplayDotFiles             no
AnonymousOnly               no
NoAnonymous                 yes
SyslogFacility              ftp
DontResolve                 yes
MaxIdleTime                 15
MySQLConfigFile               /usr/local/pureftpd/etc/pureftpd-mysql.conf
LimitRecursion              10000 8
AnonymousCanCreateDirs      no
MaxLoad                     4
PassivePortRange          50000 50400          //被动模式中开放的端口
AntiWarez                   yes
Umask                       133:022
MinUID                      100
AllowUserFXP                no
AllowAnonymousFXP           no
ProhibitDotFilesWrite       no
ProhibitDotFilesRead        no
AutoRename                  no
AnonymousCantUpload         no
NoChmod                     no
MaxDiskUsage               99
CustomerProof              yes
IPV4Only                 yes


5.3 修改pureftpd-mysql.conf
[root]# vi /usr/local/pureftpd/etc/pureftpd-mysql.conf

MYSQLSocket    /usr/local/mysql/var/mysql.sock
MYSQLUser      pureftpd
MYSQLPassword   123456
MySQLGetQTAFS  SELECT QuotaFiles FROM users WHERE User="\L"
MySQLGetQTASZ  SELECT QuotaSize FROM users WHERE User="\L"


六、防火墙规则
修改/etc/sysconfig/iptables文件
在22端口后,添加21端口和50000到50400端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
添加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50000:50400 -j ACCEPT
重启iptables,使生效

七、运行pureftpd
7.1 启动pureftpd
[root]# /usr/local/pureftpd/bin/pure-config.pl  /usr/local/pureftpd/etc/pure-ftpd.conf

7.2 启动脚本
[root]# vi /etc/init.d/pureftpd

#!/bin/bash
#
# Startup script for the pure-ftpd FTP Server 
#
# description: Pure-FTPd is an FTP server daemon based uponTroll-FTPd
# processname: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# config: /usr/local/pureftpd/etc/pure-ftpd.conf

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

# Path to the pure-ftp binaries.
prog=pure-config.pl
fullpath=/usr/local/pureftpd/bin/$prog
pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho

start() {
       echo -n $"Starting $prog: "
       $fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize
       RETVAL=$?
       [ $RETVAL = 0 ] && touch /var/lock/subsys/$prog
       echo
}


stop() {
       echo -n $"Stopping $prog: "
       kill $(cat /var/run/pure-ftpd.pid)
       RETVAL=$?
       [ $RETVAL = 0 ] && rm -f /var/lock/subsys/$prog
       echo
}

# See how we were called.
case "$1" in
       start)
               start
               ;;
       stop)
               stop
               ;;
       restart)

               stop
               start
               ;;
       condrestart)
               if [ -f /var/lock/subsys/$prog ] ; then
                       stop
                       # avoid race
                       sleep 3
                       start
               fi
               ;;
       status)
               status $prog
               RETVAL=$?
               if [ -f $pureftpwho ] && [ $RETVAL-eq 0 ] ; then
                       $pureftpwho
               fi
               ;;
       *)
               echo $"Usage: $prog {start|stop|restart|condrestart|status}"
               RETVAL=1
esac
exit $RETVAL


7.3 添加自启动
chmod +x /etc/init.d/pureftpd
chkconfig pureftpd on

7.4 启动、重启和关闭
service pureftpd start     //启动
service pureftpd restart  //重启
service pureftpd stop     //关闭

八、注意事项
[永福原创]转载请注明:来自http://rickie622.blog.163.com
不能把用户的dir放在其他用户的dir下面,否则会出现不能登录的问题。

  评论这张
 
阅读(1057)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017