pure-ftpd + mysql.......Management 安装配置实例
来源:互联网 发布:科比13数据 编辑:程序博客网 时间:2024/04/30 09:18
################## pure-ftpd ###########################
Aborigen Yin
tutu@bsdbase.com
2003.06.07
pure-ftpd + mysql + PureFTP PHP User Management 安装配置实例
freeBSD 4.8 stable
#mysql apache请自行安装。
#文档中的一些路径是我的环境中使用的,请自行修改以符合你的实际情况;
#相关网址:
http://www.pureftpd.org (国内可能无法访问)
http://sourceforge.net/projects/pureftpd/ (国内现在可以访问了)
8.1.安装
cd /usr/local/src/distfiles
##172.16.100.245是我的文件服务器
wget ftp://172.16.100.245/pub/distfiles/pure-ftpd-1.0.14.tar.gz
tar xfz pure-ftpd-1.0.14.tar.gz -C ..
cd ../pure-ftpd-1.0.14
mkdir -p /usr/local/modules/support/pure-ftpd/etc
mkdir -p /usr/local/modules/support/pure-ftpd/var/run
mkdir -p /usr/local/modules/support/pure-ftpd/var/log
#用puredb;
#使用英文,WITH_LANG=simplified-chinese可以使用简体中文,不过在某些情况下,你可能更希望看到英文;
./configure --prefix=/usr/local/modules/support/pure-ftpd /
--with-everything /
--with-diraliases /
--with-paranoidmsg /
--with-virtualchroot /
--without-shadow /
--with-welcomemsg /
--with-quotas /
--with-sysquotas /
--without-inetd /
--without-banner /
--with-uploadscript /
--with-mysql=/usr/local/modules/support/mysql
#安装程序好象“忘记”这两个文件了
cp configuration-file/pure-ftpd.conf /usr/local/modules/support/pure-ftpd/etc
cp configuration-file/pure-config.pl /usr/local/modules/support/pure-ftpd/sbin
chmod 755 /usr/local/modules/support/pure-ftpd/sbin/pure-config.pl
8.2.配置主配置文件
#程序在/usr/local/modules/support/pure-ftpd/sbin/pure-ftpd,配置文件在/usr/local/modules/support/pure-ftpd/etc/pure-ftpd.conf
#注意一下参数,配置文件中默认的文件位置不对(其实放哪里看自己喜欢罢了);
#vi /usr/local/modules/support/pure-ftpd/etc/pure-ftpd.conf
#begin of pure-ftpd.conf
############################################################
# #
# Configuration file for pure-ftpd wrappers #
# #
############################################################
ChrootEveryone yes
BrokenClientsCompatibility yes
MaxClientsNumber 150
Daemonize yes
MaxClientsPerIP 20
VerboseLog no
DisplayDotFiles no
AnonymousOnly no
NoAnonymous no
SyslogFacility ftp
DontResolve yes
MaxIdleTime 5
MySQLConfigFile /usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf
#PureDB /usr/local/modules/support/pure-ftpd/etc/pureftpd.pdb
LimitRecursion 2000 8
AnonymousCanCreateDirs no
MaxLoad 4
PassivePortRange 40000 50000
#ForcePassiveIP 192.168.0.1
AntiWarez yes
# Bind 127.0.0.1,21
#AnonymousBandwidth 50
# UserBandwidth 8
Umask 133:022
#MinUID 100
MinUID 100
AllowUserFXP yes
AllowAnonymousFXP no
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
AutoRename no
AnonymousCantUpload yes
#NoChmod yes
#Quota 1000:10
PIDFile /usr/local/modules/support/pure-ftpd/var/run/pure-ftpd.pid
AltLog w3c:/usr/local/modules/support/pure-ftpd/var/log/pure-ftpd-w3c.log
MaxDiskUsage 95
CustomerProof yes
#end of pure-ftpd.conf
###日志设置
###没有这一行,ftp日志就会发到/var/log/messages,很讨厌的说。
echo "ftp.* /usr/local/modules/support/pure-ftpd/var/log/pure-ftpd.log" >> /etc/syslog.conf
###
touch /usr/local/modules/support/pure-ftpd/var/log/pure-ftpd-w3c.log
touch /usr/local/modules/support/pure-ftpd/var/log/pure-ftpd.log
#使日志设置生效;
killall -HUP syslogd
#####
#用phpMyAdmin 创建用户配置 ###
user:pureftpd@localhost
passwd:wahaha
database:pureftpd
################为了使用 PureFTPD PHP User Management #####
###mysql 的设置是按照PureFTPD PHP User Management的readme作的。
##
################
http://www.solariz.de
http://www.solariz.de/Ffiledb/filedb.php?action=category&id=1
http://www.solariz.de/Ffiledb/download.php?id=1
#mysql 配置文件。
#vi /usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf
#
# If you want to use the Socket connect methode comment out the
# Lines with MMYSQLServer and MYSQLPort.
# If you want to use the Port methode comment out the MYSQLSocket line
#MYSQLSocket /var/lib/mysql/mysql.sock
MYSQLServer localhost
MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword wahaha
MYSQLDatabase pureftpd
MYSQLCrypt cleartext
MYSQLGetPW SELECT Password FROM ftpd WHERE User="/L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="/L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
#end of mysql configure.
#####数据库初始化 ####用phpmyadmin 执行
use pureftpd;
DROP TABLE IF EXISTS ftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
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 '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
####
####
8.5.虚拟用户管理
#为匿名用户设置帐户,必须有一个系统帐户ftp,匿名ftp才会生效;
#ftp用户的主目录就是匿名ftp的根;
#匿名ftp是为ftp://ftp.anti-spamming.com这个匿名服务器服务的;
userdel ftp
groupdel ftp
groupadd ftp
useradd -g ftp ftp
#虚拟用户统一用这个帐号和组;
pw groupadd virtual
mkdir -p /data/home/virtual
pw useradd virtual -g virtual -d /data/home/virtual -s /sbin/nologin
chown -R virtual:virtual /data/home/virtual
#为了方便管理,clone一个可以登陆的virtual帐号:
#vipw
virtual:x:503:503::/data/home/virtual:/sbin/nologin
vvuser:x:503:503::/data/home/virtual:/bin/sh
#end
#end
修改密码
passwd vvuser
################为了使用 PureFTPD PHP User Management #####
###mysql 的设置是按照PureFTPD PHP User Management的readme作的。
http://www.solariz.de
http://www.solariz.de/Ffiledb/filedb.php?action=category&id=1
http://www.solariz.de/Ffiledb/download.php?id=1
###
cd /usr/local/modules/support/apache/htdocs
fetch ftp://172.16.100.245/pub/distfiles/pureftpd_php_manager.tgz
tar xfz pureftpd_php_manager.tgz
rm -f pureftpd_php_manager.tgz
cd pureftpd_php_manager
#vi pureftp.config.php
<?php
######################
####### SETUP ########
######################
// Your exactly located mysql config file for pureftpd
//$PUREFTP_CONFIG_FILE = '/etc/pureftpd-mysql.conf';
$PUREFTP_CONFIG_FILE = '/usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf';
// The location where all the Forms directed to. (Mayby no change needed)
$SELF_URL = 'index.php';
// The location of your pure-ftpdwho binary (set this to chmod 4711)
//$FTP_WHO = "/usr/local/sbin/pure-ftpwho";
$FTP_WHO = "/usr/local/modules/support/pure-ftpd/sbin";
#######################
# DEFAULT NEW-USER PARAMS #
#######################
$DefaultUser = ""; # Default User Logon
$DefaultPass = ""; # Default User Password
$DefaultUid = "virtual"; # Default User ID ( must be a real user acct )
$DefaultGid = "virtual"; # Default Group ID ( must be a real group acct )
$DefaultDir = "/data/home/virtual"; # Default User Dir ( use /./ at the end to chroot )
$DefaultUL = "0"; # Default Upload Throttle ( 0 disables it )
$DefaultDL = "0"; # Default Download Throttle ( 0 disables it )
$Defaultip = "*"; # Default IP restrictions ( * = any IP )
$DefaultQS = "10240"; # Default Quota Size ( 0 disables it )
$Defaultcmt = "New ftp user"; # Default Comment for user
// UA
$DefaultQF = "10240"; # Default Quota Files ( 0 disables it )
$PWC = "55"; # Vorsatz fuerr Crypt Password
?>
#end
http://172.16.100.249:9180/pureftpd_php_manager
###############
NOTE:
If you want to use VirtualQuaotas your PureFTPD must be
compiled with the "--with-quotas" option.
Else it is better to comment out the line
beginning with MySQLGetQTASZ in the pureftpd-mysql.conf
file or some errors can occure while launching pureftpd.
2nd NOTE:
To set up the PureFTP Who display tool you must set chmod 4711
to yout pure-ftpwho command. Get sure that the Pure-FTPWho command
is executable in this directory: /usr/local/sbin/
If this isn't the directory where you're binary is installed please setup a
symbolic Link. ln -s /usr/local/sbin/pure-ftpwho <path and name of your
pure-ftpwho file>
#################
##由于php_manager创建用户时并不创建对应的用户目录,使用如下脚本来进行用户创建工作,php_manager 只用于管理
#vi /usr/local/modules/support/pure-ftpd/bin/vvadduser
#!/bin/sh
#警告:没有任何错误检查
V_BASE="/data/home/virtual"
R_USER="virtual"
R_GROUP="virtual"
#set by user.
V_USERNAME=""
V_PASSWD=""
HTTP_ROOT="public_html"
HTTPS_ROOT="https"
HTTP_CGI="cgi-bin"
HTTPS_CGI="cgi-bins"
V_SETTINGS="settings"
MYSQL_HOME=/usr/local/modules/support/mysql
MYSQL_CLIENT=$MYSQL_HOME/bin/mysql
MYSQL_USER=GET_FROM_CFG
MYSQL_PASSWD=GET_FROM_CFG
MYSQL_DB=GET_FROM_CFG
MYSQL_HOST=GET_FROM_CFG
MYSQL_PORT=GET_FROM_CFG
PURE_TABLE=ftpd
PURE_MYSQL_CFG=/usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf
#PURE_PW="/usr/local/modules/support/pure-ftpd/bin/pure-pw"
MYSQL_USER=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLUser' | awk '{ print $2 }' `
if [ -z $MYSQL_USER ]
then
echo "Error:probe mysql user name from $PURE_MYSQL_CFG fail."
exit 1
fi
MYSQL_PASSWD=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLPassword' | awk '{ print $2 }' `
if [ -z $MYSQL_PASSWD ]
then
echo "Error:probe mysql password from $PURE_MYSQL_CFG fail."
exit 1
fi
MYSQL_DB=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLDatabase' | awk '{ print $2 }' `
if [ -z $MYSQL_DB ]
then
echo "Error:probe mysql database $PURE_MYSQL_CFG fail."
exit 1
fi
MYSQL_HOST=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLServer' | awk '{ print $2 }' `
if [ -z $MYSQL_HOST ]
then
echo "Error:probe mysql host from $PURE_MYSQL_CFG fail."
exit 1
fi
MYSQL_PORT=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLPort' | awk '{ print $2 }' `
if [ -z $MYSQL_PORT ]
then
echo "Error:probe mysql port from $PURE_MYSQL_CFG fail."
exit 1
fi
if [ -z $1 ]
then
#$PURE_PW mkdb
echo "Usage: $0 <Virtual user name>"
exit 1
fi
V_USERNAME=$1
O_TTY=`stty -g`
stty -echo
echo -n "Enter password for Virtual user $V_USERNAME:"
read _PW_A
echo -n "Enter password again:"
read _PW_B
stty $O_TTY
#echo "A=$_PW_A ,B=$_PW_B"
if [ "$_PW_A" != "$_PW_B" ]
then
echo "Error:Password mismatch."
exit 1
fi
V_PASSWD=$_PW_A
User=$V_USERNAME
Password=$V_PASSWD
Uid=$R_USER
Gid=$R_GROUP
# 0,for inactive,1 for active.
Dir="$V_BASE/$V_USERNAME/./"
status=0
# Default Upload Throttle ( 0 disables it )
ULThrottle=0
# Default Download Throttle ( 0 disables it )
DLThrottle=0
comment="New ftp user $V_USERNAME"
# Default IP restrictions ( * = any IP )
ipaccess="*"
# Default Quota Size ( 0 disables it )
QuotaSize=100
# Default Quota file count ( 0 disables it )
QuotaFiles=4096
MYSQL_CONN="$MYSQL_CLIENT --silent --host=$MYSQL_HOST --port=$MYSQL_PORT --user=$MYSQL_USER --password=$MYSQL_PASSWD --database=$MYSQL_DB "
INSERT_USER="INSERT INTO $PURE_TABLE SET User='$User',status='$status',Password='$Password',Uid='$Uid',Gid='$Gid',Dir='$Dir',ULBandwidth='$ULThrottle',DLBandwidth='$DLThrottle',comment='$comment',ipaccess='$ipaccess',QuotaSize='$QuotaSize',QuotaFiles='$QuotaFiles';"
#No update support in adduser script.
UPDATE_USER="UPDATE $PURE_TABLE SET User='$User',status='$status',Password='$Password',Uid='$Uid',Gid='$Gid',Dir='$Dir',ULBandwidth='$ULThrottle',DLBandwidth='$DLThrottle',comment='$comment',ipaccess='$ipaccess',QuotaSize='$QuotaSize',QuotaFiles='$QuotaFiles';"
$MYSQL_CONN <<MADAY
$INSERT_USER
commit;
MADAY
if [ $? -ne 0 ]
then
echo "Error:Database insert fail."
echo "MYSQL_CONN=$MYSQL_CONN"
echo "INSERT_USER=$INSERT_USER"
echo "UPDATE_USER=$UPDATE_USER"
exit 1
fi
#END of mysql insert.
#$PURE_PW useradd $V_USERNAME -u $R_USER -d $V_BASE/$V_USERNAME
#更新puredb;
#$PURE_PW mkdb
mkdir -p $V_BASE/$V_USERNAME/$HTTP_ROOT
#http web cgi 目录;
mkdir -p $V_BASE/$V_USERNAME/$HTTP_CGI
#https web 根目录;
mkdir -p $V_BASE/$V_USERNAME/$HTTPS_ROOT
#http web cgi 目录;
mkdir -p $V_BASE/$V_USERNAME/$HTTPS_CGI
#虚拟用户设置、日志文件目录;
mkdir -p $V_BASE/$V_USERNAME/$V_SETTINGS
mkdir -p $V_BASE/$V_USERNAME/$V_SETTINGS/apache/log
mkdir -p $V_BASE/$V_USERNAME/$V_SETTINGS/apache/ca
chmod 777 $V_BASE/$V_USERNAME/$V_SETTINGS/apache/log
chown -R $R_USER:$R_GROUP $V_BASE/$V_USERNAME
if [ $status -eq 0 ]
then
echo "warning:User $V_USERNAME is inactive now,use PureFTP User PHP Management to modify it."
fi
echo "all over."
#end
chmod 755 /usr/local/modules/support/pure-ftpd/bin/vvadduser
ln -s /usr/local/modules/support/pure-ftpd/bin/vvadduser /usr/local/sbin
8.4.简单的启动关闭shell;
#vi /usr/local/modules/support/pure-ftpd/sbin/pure-config.pl
#指定pure-ftpd的位置。
my $PUREFTPD;
-x && ($PUREFTPD=$_, last) for qw(
#指定pure-ftpd的位置。
/usr/local/modules/support/pure-ftpd/sbin/pure-ftpd
);
#使用如下perl脚本将配置文件转化为命令行参数,并启动pure-ftpd;
/usr/local/modules/support/pure-ftpd/sbin/pure-config.pl /usr/local/modules/support/pure-ftpd/etc/pure-ftpd.conf
/usr/local/modules/support/pure-ftpd/sbin/pure-ftpd -A -b -c150 -B -C20 -fftp -H -I5 -lmysql:/usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf -L2000:8 -m4 -p40000:50000 -s -U133:022 -u100 -w -i -g/usr/local/modules/support/pure-ftpd/var/run/pure-ftpd.pid -Ow3c:/usr/local/modules/support/pure-ftpd/var/log/pure-ftpd-w3c.log -k95 -Z
##添加-4参数,可以使ftp只在tcpv4监听。
#开机自动执行的脚本:
#vi /usr/local/modules/support/pure-ftpd/bin/support-pure-ftpd-mgr.sh
#!/bin/sh
case "$1" in
start)
if [ -x /usr/local/modules/support/pure-ftpd/sbin/pure-config.pl ]; then
/usr/local/modules/support/pure-ftpd/sbin/pure-config.pl /usr/local/modules/support/pure-ftpd/etc/pure-ftpd.conf && echo 'Pure-ftpd server started.'
else
echo "Error:pure-config.pl can not exec."
exit 1
fi
;;
stop)
kill `cat /usr/local/modules/support/pure-ftpd/var/run/pure-ftpd.pid 2>/dev/null` >/dev/nul 2>&1 && echo 'Pure-ftpd server stopped.'
;;
restart)
echo .
echo Restart Pure-ftpd server ......
$0 stop
sleep 5
$0 start
;;
*)
echo "$0 start | stop | restart"
;;
esac
#end of support-pure-ftpd-mgr.sh
chmod 755 /usr/local/modules/support/pure-ftpd/bin/support-pure-ftpd-mgr.sh
ln -s /usr/local/modules/support/pure-ftpd/bin/support-pure-ftpd-mgr.sh /usr/local/sbin/
ln -s /usr/local/sbin/support-pure-ftpd-mgr.sh /usr/local/etc/rc.d
#end
Aborigen Yin
tutu@bsdbase.com
2003.06.07
pure-ftpd + mysql + PureFTP PHP User Management 安装配置实例
freeBSD 4.8 stable
#mysql apache请自行安装。
#文档中的一些路径是我的环境中使用的,请自行修改以符合你的实际情况;
#相关网址:
http://www.pureftpd.org (国内可能无法访问)
http://sourceforge.net/projects/pureftpd/ (国内现在可以访问了)
8.1.安装
cd /usr/local/src/distfiles
##172.16.100.245是我的文件服务器
wget ftp://172.16.100.245/pub/distfiles/pure-ftpd-1.0.14.tar.gz
tar xfz pure-ftpd-1.0.14.tar.gz -C ..
cd ../pure-ftpd-1.0.14
mkdir -p /usr/local/modules/support/pure-ftpd/etc
mkdir -p /usr/local/modules/support/pure-ftpd/var/run
mkdir -p /usr/local/modules/support/pure-ftpd/var/log
#用puredb;
#使用英文,WITH_LANG=simplified-chinese可以使用简体中文,不过在某些情况下,你可能更希望看到英文;
./configure --prefix=/usr/local/modules/support/pure-ftpd /
--with-everything /
--with-diraliases /
--with-paranoidmsg /
--with-virtualchroot /
--without-shadow /
--with-welcomemsg /
--with-quotas /
--with-sysquotas /
--without-inetd /
--without-banner /
--with-uploadscript /
--with-mysql=/usr/local/modules/support/mysql
#安装程序好象“忘记”这两个文件了
cp configuration-file/pure-ftpd.conf /usr/local/modules/support/pure-ftpd/etc
cp configuration-file/pure-config.pl /usr/local/modules/support/pure-ftpd/sbin
chmod 755 /usr/local/modules/support/pure-ftpd/sbin/pure-config.pl
8.2.配置主配置文件
#程序在/usr/local/modules/support/pure-ftpd/sbin/pure-ftpd,配置文件在/usr/local/modules/support/pure-ftpd/etc/pure-ftpd.conf
#注意一下参数,配置文件中默认的文件位置不对(其实放哪里看自己喜欢罢了);
#vi /usr/local/modules/support/pure-ftpd/etc/pure-ftpd.conf
#begin of pure-ftpd.conf
############################################################
# #
# Configuration file for pure-ftpd wrappers #
# #
############################################################
ChrootEveryone yes
BrokenClientsCompatibility yes
MaxClientsNumber 150
Daemonize yes
MaxClientsPerIP 20
VerboseLog no
DisplayDotFiles no
AnonymousOnly no
NoAnonymous no
SyslogFacility ftp
DontResolve yes
MaxIdleTime 5
MySQLConfigFile /usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf
#PureDB /usr/local/modules/support/pure-ftpd/etc/pureftpd.pdb
LimitRecursion 2000 8
AnonymousCanCreateDirs no
MaxLoad 4
PassivePortRange 40000 50000
#ForcePassiveIP 192.168.0.1
AntiWarez yes
# Bind 127.0.0.1,21
#AnonymousBandwidth 50
# UserBandwidth 8
Umask 133:022
#MinUID 100
MinUID 100
AllowUserFXP yes
AllowAnonymousFXP no
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
AutoRename no
AnonymousCantUpload yes
#NoChmod yes
#Quota 1000:10
PIDFile /usr/local/modules/support/pure-ftpd/var/run/pure-ftpd.pid
AltLog w3c:/usr/local/modules/support/pure-ftpd/var/log/pure-ftpd-w3c.log
MaxDiskUsage 95
CustomerProof yes
#end of pure-ftpd.conf
###日志设置
###没有这一行,ftp日志就会发到/var/log/messages,很讨厌的说。
echo "ftp.* /usr/local/modules/support/pure-ftpd/var/log/pure-ftpd.log" >> /etc/syslog.conf
###
touch /usr/local/modules/support/pure-ftpd/var/log/pure-ftpd-w3c.log
touch /usr/local/modules/support/pure-ftpd/var/log/pure-ftpd.log
#使日志设置生效;
killall -HUP syslogd
#####
#用phpMyAdmin 创建用户配置 ###
user:pureftpd@localhost
passwd:wahaha
database:pureftpd
################为了使用 PureFTPD PHP User Management #####
###mysql 的设置是按照PureFTPD PHP User Management的readme作的。
##
################
http://www.solariz.de
http://www.solariz.de/Ffiledb/filedb.php?action=category&id=1
http://www.solariz.de/Ffiledb/download.php?id=1
#mysql 配置文件。
#vi /usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf
#
# If you want to use the Socket connect methode comment out the
# Lines with MMYSQLServer and MYSQLPort.
# If you want to use the Port methode comment out the MYSQLSocket line
#MYSQLSocket /var/lib/mysql/mysql.sock
MYSQLServer localhost
MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword wahaha
MYSQLDatabase pureftpd
MYSQLCrypt cleartext
MYSQLGetPW SELECT Password FROM ftpd WHERE User="/L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="/L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="/L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "/R")
#end of mysql configure.
#####数据库初始化 ####用phpmyadmin 执行
use pureftpd;
DROP TABLE IF EXISTS ftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
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 '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
####
####
8.5.虚拟用户管理
#为匿名用户设置帐户,必须有一个系统帐户ftp,匿名ftp才会生效;
#ftp用户的主目录就是匿名ftp的根;
#匿名ftp是为ftp://ftp.anti-spamming.com这个匿名服务器服务的;
userdel ftp
groupdel ftp
groupadd ftp
useradd -g ftp ftp
#虚拟用户统一用这个帐号和组;
pw groupadd virtual
mkdir -p /data/home/virtual
pw useradd virtual -g virtual -d /data/home/virtual -s /sbin/nologin
chown -R virtual:virtual /data/home/virtual
#为了方便管理,clone一个可以登陆的virtual帐号:
#vipw
virtual:x:503:503::/data/home/virtual:/sbin/nologin
vvuser:x:503:503::/data/home/virtual:/bin/sh
#end
#end
修改密码
passwd vvuser
################为了使用 PureFTPD PHP User Management #####
###mysql 的设置是按照PureFTPD PHP User Management的readme作的。
http://www.solariz.de
http://www.solariz.de/Ffiledb/filedb.php?action=category&id=1
http://www.solariz.de/Ffiledb/download.php?id=1
###
cd /usr/local/modules/support/apache/htdocs
fetch ftp://172.16.100.245/pub/distfiles/pureftpd_php_manager.tgz
tar xfz pureftpd_php_manager.tgz
rm -f pureftpd_php_manager.tgz
cd pureftpd_php_manager
#vi pureftp.config.php
<?php
######################
####### SETUP ########
######################
// Your exactly located mysql config file for pureftpd
//$PUREFTP_CONFIG_FILE = '/etc/pureftpd-mysql.conf';
$PUREFTP_CONFIG_FILE = '/usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf';
// The location where all the Forms directed to. (Mayby no change needed)
$SELF_URL = 'index.php';
// The location of your pure-ftpdwho binary (set this to chmod 4711)
//$FTP_WHO = "/usr/local/sbin/pure-ftpwho";
$FTP_WHO = "/usr/local/modules/support/pure-ftpd/sbin";
#######################
# DEFAULT NEW-USER PARAMS #
#######################
$DefaultUser = ""; # Default User Logon
$DefaultPass = ""; # Default User Password
$DefaultUid = "virtual"; # Default User ID ( must be a real user acct )
$DefaultGid = "virtual"; # Default Group ID ( must be a real group acct )
$DefaultDir = "/data/home/virtual"; # Default User Dir ( use /./ at the end to chroot )
$DefaultUL = "0"; # Default Upload Throttle ( 0 disables it )
$DefaultDL = "0"; # Default Download Throttle ( 0 disables it )
$Defaultip = "*"; # Default IP restrictions ( * = any IP )
$DefaultQS = "10240"; # Default Quota Size ( 0 disables it )
$Defaultcmt = "New ftp user"; # Default Comment for user
// UA
$DefaultQF = "10240"; # Default Quota Files ( 0 disables it )
$PWC = "55"; # Vorsatz fuerr Crypt Password
?>
#end
http://172.16.100.249:9180/pureftpd_php_manager
###############
NOTE:
If you want to use VirtualQuaotas your PureFTPD must be
compiled with the "--with-quotas" option.
Else it is better to comment out the line
beginning with MySQLGetQTASZ in the pureftpd-mysql.conf
file or some errors can occure while launching pureftpd.
2nd NOTE:
To set up the PureFTP Who display tool you must set chmod 4711
to yout pure-ftpwho command. Get sure that the Pure-FTPWho command
is executable in this directory: /usr/local/sbin/
If this isn't the directory where you're binary is installed please setup a
symbolic Link. ln -s /usr/local/sbin/pure-ftpwho <path and name of your
pure-ftpwho file>
#################
##由于php_manager创建用户时并不创建对应的用户目录,使用如下脚本来进行用户创建工作,php_manager 只用于管理
#vi /usr/local/modules/support/pure-ftpd/bin/vvadduser
#!/bin/sh
#警告:没有任何错误检查
V_BASE="/data/home/virtual"
R_USER="virtual"
R_GROUP="virtual"
#set by user.
V_USERNAME=""
V_PASSWD=""
HTTP_ROOT="public_html"
HTTPS_ROOT="https"
HTTP_CGI="cgi-bin"
HTTPS_CGI="cgi-bins"
V_SETTINGS="settings"
MYSQL_HOME=/usr/local/modules/support/mysql
MYSQL_CLIENT=$MYSQL_HOME/bin/mysql
MYSQL_USER=GET_FROM_CFG
MYSQL_PASSWD=GET_FROM_CFG
MYSQL_DB=GET_FROM_CFG
MYSQL_HOST=GET_FROM_CFG
MYSQL_PORT=GET_FROM_CFG
PURE_TABLE=ftpd
PURE_MYSQL_CFG=/usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf
#PURE_PW="/usr/local/modules/support/pure-ftpd/bin/pure-pw"
MYSQL_USER=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLUser' | awk '{ print $2 }' `
if [ -z $MYSQL_USER ]
then
echo "Error:probe mysql user name from $PURE_MYSQL_CFG fail."
exit 1
fi
MYSQL_PASSWD=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLPassword' | awk '{ print $2 }' `
if [ -z $MYSQL_PASSWD ]
then
echo "Error:probe mysql password from $PURE_MYSQL_CFG fail."
exit 1
fi
MYSQL_DB=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLDatabase' | awk '{ print $2 }' `
if [ -z $MYSQL_DB ]
then
echo "Error:probe mysql database $PURE_MYSQL_CFG fail."
exit 1
fi
MYSQL_HOST=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLServer' | awk '{ print $2 }' `
if [ -z $MYSQL_HOST ]
then
echo "Error:probe mysql host from $PURE_MYSQL_CFG fail."
exit 1
fi
MYSQL_PORT=`grep -v '#' $PURE_MYSQL_CFG | grep '^MYSQLPort' | awk '{ print $2 }' `
if [ -z $MYSQL_PORT ]
then
echo "Error:probe mysql port from $PURE_MYSQL_CFG fail."
exit 1
fi
if [ -z $1 ]
then
#$PURE_PW mkdb
echo "Usage: $0 <Virtual user name>"
exit 1
fi
V_USERNAME=$1
O_TTY=`stty -g`
stty -echo
echo -n "Enter password for Virtual user $V_USERNAME:"
read _PW_A
echo -n "Enter password again:"
read _PW_B
stty $O_TTY
#echo "A=$_PW_A ,B=$_PW_B"
if [ "$_PW_A" != "$_PW_B" ]
then
echo "Error:Password mismatch."
exit 1
fi
V_PASSWD=$_PW_A
User=$V_USERNAME
Password=$V_PASSWD
Uid=$R_USER
Gid=$R_GROUP
# 0,for inactive,1 for active.
Dir="$V_BASE/$V_USERNAME/./"
status=0
# Default Upload Throttle ( 0 disables it )
ULThrottle=0
# Default Download Throttle ( 0 disables it )
DLThrottle=0
comment="New ftp user $V_USERNAME"
# Default IP restrictions ( * = any IP )
ipaccess="*"
# Default Quota Size ( 0 disables it )
QuotaSize=100
# Default Quota file count ( 0 disables it )
QuotaFiles=4096
MYSQL_CONN="$MYSQL_CLIENT --silent --host=$MYSQL_HOST --port=$MYSQL_PORT --user=$MYSQL_USER --password=$MYSQL_PASSWD --database=$MYSQL_DB "
INSERT_USER="INSERT INTO $PURE_TABLE SET User='$User',status='$status',Password='$Password',Uid='$Uid',Gid='$Gid',Dir='$Dir',ULBandwidth='$ULThrottle',DLBandwidth='$DLThrottle',comment='$comment',ipaccess='$ipaccess',QuotaSize='$QuotaSize',QuotaFiles='$QuotaFiles';"
#No update support in adduser script.
UPDATE_USER="UPDATE $PURE_TABLE SET User='$User',status='$status',Password='$Password',Uid='$Uid',Gid='$Gid',Dir='$Dir',ULBandwidth='$ULThrottle',DLBandwidth='$DLThrottle',comment='$comment',ipaccess='$ipaccess',QuotaSize='$QuotaSize',QuotaFiles='$QuotaFiles';"
$MYSQL_CONN <<MADAY
$INSERT_USER
commit;
MADAY
if [ $? -ne 0 ]
then
echo "Error:Database insert fail."
echo "MYSQL_CONN=$MYSQL_CONN"
echo "INSERT_USER=$INSERT_USER"
echo "UPDATE_USER=$UPDATE_USER"
exit 1
fi
#END of mysql insert.
#$PURE_PW useradd $V_USERNAME -u $R_USER -d $V_BASE/$V_USERNAME
#更新puredb;
#$PURE_PW mkdb
mkdir -p $V_BASE/$V_USERNAME/$HTTP_ROOT
#http web cgi 目录;
mkdir -p $V_BASE/$V_USERNAME/$HTTP_CGI
#https web 根目录;
mkdir -p $V_BASE/$V_USERNAME/$HTTPS_ROOT
#http web cgi 目录;
mkdir -p $V_BASE/$V_USERNAME/$HTTPS_CGI
#虚拟用户设置、日志文件目录;
mkdir -p $V_BASE/$V_USERNAME/$V_SETTINGS
mkdir -p $V_BASE/$V_USERNAME/$V_SETTINGS/apache/log
mkdir -p $V_BASE/$V_USERNAME/$V_SETTINGS/apache/ca
chmod 777 $V_BASE/$V_USERNAME/$V_SETTINGS/apache/log
chown -R $R_USER:$R_GROUP $V_BASE/$V_USERNAME
if [ $status -eq 0 ]
then
echo "warning:User $V_USERNAME is inactive now,use PureFTP User PHP Management to modify it."
fi
echo "all over."
#end
chmod 755 /usr/local/modules/support/pure-ftpd/bin/vvadduser
ln -s /usr/local/modules/support/pure-ftpd/bin/vvadduser /usr/local/sbin
8.4.简单的启动关闭shell;
#vi /usr/local/modules/support/pure-ftpd/sbin/pure-config.pl
#指定pure-ftpd的位置。
my $PUREFTPD;
-x && ($PUREFTPD=$_, last) for qw(
#指定pure-ftpd的位置。
/usr/local/modules/support/pure-ftpd/sbin/pure-ftpd
);
#使用如下perl脚本将配置文件转化为命令行参数,并启动pure-ftpd;
/usr/local/modules/support/pure-ftpd/sbin/pure-config.pl /usr/local/modules/support/pure-ftpd/etc/pure-ftpd.conf
/usr/local/modules/support/pure-ftpd/sbin/pure-ftpd -A -b -c150 -B -C20 -fftp -H -I5 -lmysql:/usr/local/modules/support/pure-ftpd/etc/pureftpd-mysql.conf -L2000:8 -m4 -p40000:50000 -s -U133:022 -u100 -w -i -g/usr/local/modules/support/pure-ftpd/var/run/pure-ftpd.pid -Ow3c:/usr/local/modules/support/pure-ftpd/var/log/pure-ftpd-w3c.log -k95 -Z
##添加-4参数,可以使ftp只在tcpv4监听。
#开机自动执行的脚本:
#vi /usr/local/modules/support/pure-ftpd/bin/support-pure-ftpd-mgr.sh
#!/bin/sh
case "$1" in
start)
if [ -x /usr/local/modules/support/pure-ftpd/sbin/pure-config.pl ]; then
/usr/local/modules/support/pure-ftpd/sbin/pure-config.pl /usr/local/modules/support/pure-ftpd/etc/pure-ftpd.conf && echo 'Pure-ftpd server started.'
else
echo "Error:pure-config.pl can not exec."
exit 1
fi
;;
stop)
kill `cat /usr/local/modules/support/pure-ftpd/var/run/pure-ftpd.pid 2>/dev/null` >/dev/nul 2>&1 && echo 'Pure-ftpd server stopped.'
;;
restart)
echo .
echo Restart Pure-ftpd server ......
$0 stop
sleep 5
$0 start
;;
*)
echo "$0 start | stop | restart"
;;
esac
#end of support-pure-ftpd-mgr.sh
chmod 755 /usr/local/modules/support/pure-ftpd/bin/support-pure-ftpd-mgr.sh
ln -s /usr/local/modules/support/pure-ftpd/bin/support-pure-ftpd-mgr.sh /usr/local/sbin/
ln -s /usr/local/sbin/support-pure-ftpd-mgr.sh /usr/local/etc/rc.d
#end
- pure-ftpd + mysql.......Management 安装配置实例
- CentOS安装Pure-FTPd+MySQL
- pure-ftpd 安装与配置
- pure-ftpd服务器安装配置
- pure-ftpd简单安装和配置
- Centos下pure-ftpd安装配置详解
- pure-ftpd 配置
- Pure-FTPd 配置笔记
- Pure-FTPd 配置笔记
- centos配置 pure-ftpd
- pure-ftpd+mysql 问题记录
- WDCP的pure-ftpd配置
- ports方式安装 pure-ftpd
- pure ftpd
- pure-ftpd
- Linux Pure-Ftpd 虚拟用户配置
- pure-ftpd的安装和使用
- Ubuntu下pure-ftpd的安装
- 本人blog已经转到coolface.blog.edu.cn
- FreeBSD中/etc下的文件简介
- 一个用as做出的FLASH导航条代码
- 全力打造多功能FreeBSD服务器
- JSF配置大全
- pure-ftpd + mysql.......Management 安装配置实例
- WebService入门
- J2EE平台安全(原著是《J2EE Tutorial》)
- 代理模式Proxy Design
- LccWin32下制作Dialog
- 用isapi开发论坛的一些体会
- 终于毕业了
- 毕业夜,疯狂吧!
- 我的大学---那年的冬天是那样的暖(3远去的TV)