ftp之 pure-ftp

基本需求:实现ftp账号到期自动关闭、延期、限额、限速操作,

系统搭建

系统:centos6.4

软件:pureftpd+mysql

软件版本:pure-ftpd-1.0.36

安装:

#yum -y install httpd mysql-devel mysql-server gcc

#tar xvf pure-ftpd-1.0.36.tar.gz

#cd pure-ftpd-1.0.36

#./configure--prefix=/usr/local/pure-ftpd/ --with-everything --with-altlog --with-puredb--with-ftpwho --with-mysql --with-throttling --with-ratios --with-quotas--with-virtualhosts --with-virtualchroot --with-sysquotas --with-cookie--with-rfc2640 --with-bonjour --with-welcomemsg --with-language=simplified-chinese--with-uploadscript

#make&make install

#mkdir /usr/local/pure-ftpd/etc/

#cpconfiguration-file/pure-ftpd.conf /usr/local/pure-ftpd/etc/

#cpconfiguration-file/pure-config.pl /usr/local/pure-ftpd/sbin/

#cppureftpd-mysql.conf /usr/local/pure-ftpd/etc/

#chmod755 /usr/local/pure-ftpd/sbin/pure-config.pl

部分截图

#ln-s /usr/local/pure-ftpd/bin/* /usr/local/bin/

#ln-s /usr/local/pure-ftpd/sbin/* /usr/local/sbin/

#ln-s /usr/local/pure-ftpd/share/man/man8/* /usr/local/share/man/man8/

#groupadd-g 10000 hzftp

#useradd-u 10000 -g 10000 -d /var/ftp -s /sbin/nologin hzftp

#passwd hzftp          (123456)

#cp/etc/skel/.b* /mnt/hzftpdata/    注:/mnt/hzftpdata 为ftp账号的存储目录

#vi/usr/local/pure-ftpd/etc/pure-ftpd.conf

VerboseLog                 yes

NoAnonymous                 yes

MySQLConfigFile              /usr/local/pure-ftpd/etc/pureftpd-mysql.conf

PassivePortRange          30000 50000

MinUID                      10000

AltLog                     clf:/var/log/pureftpd.log

AltLog                    stats:/var/log/pureftpd.log

AltLog                     w3c:/var/log/pureftpd.log

reateHomeDir               yes

Quota                       1000:10

创建数据库

#mysql

createdatabase pureftpd;

grantselect on pureftpd.* to [email protected] identified by ‘456789‘;

flushprivileges;

createtable if not exists `users`( `user` varchar(16) not null default ‘‘, `password`varchar(32) not null default ‘‘,`startdate` date not null, `enddate` date notnull, `uid` int(11) not null, `gid` int (11) not null, `dir` varchar(128) notnull default ‘‘, `quotafiles` int(10) not null default ‘10000‘, `quotasize`int(10) not null default ‘1000‘, `ulbandwidth` int(10) not null, `dlbandwidth`int(10) not null, `ipaddress` varchar(15) not null default ‘*‘, `comment`tinytext, `status` enum(‘0‘,‘1‘) not null default ‘1‘, `ulratio` smallint(5)not null default ‘1‘, `dlratio` smallint(5) not null default ‘1‘,`email`varchar(50) not null default ‘‘, primary key (`user`), unique key `user`(`user`) )engine=innodb default charset=utf8;

实际使用过程中发现自带的账号关闭功能不是很理想,所以考虑使用两张表users和closedftp.

分别存储活动账号和已关闭账号信息

create table closedftp select * from users;

修改数据库配置

vi pureftpd-mysql.conf

MYSQLSocket     /var/lib/mysql/mysql.sock

MYSQLUser      hzftp

MYSQLPassword   456789

MYSQLCrypt      md5

启动 mysql及ftp服务

#service mysqld start

#/usr/local/pure-ftpd/sbin/pure-config.pl /usr/local/pure-ftpd/etc/pure-ftpd.conf

至此ftp搭建完毕,通过操作mysql实现用户管理比较麻烦

在这里本人通过脚本实现

内容如下:

more ftp-manage.sh

#/bin/bash

HOSTNME="127.0.0.1"

PORT="3306"

USERNAME="hzftp"

PASSWORD="456789"

DBNAME="pureftpd"

TABLENAME="users"

TABLENAME1="closedftp"

#closeday=(date +%Y-%m-%d)

#shutday=(date +%Y-%m-%D)

echo "select operation;"

echo "1):添加账号"

echo "2):修改密码"

echo "3):禁用账号"

echo "4):自动禁用"

echo "5):已关闭账号延期"

echo "6):使用中账号延期"

echo "7):查看账号信息"

echo "please select operation"

read operation

case "$operation" in

1)

read -p "input ftp name:" name

read -p "input ftp password:" pass

read -p "input closeday:(格式为0000-00-00)" closeday

sql="select max(uid) from users limit 1"

echo "用户ID一般为依次递增,目前ID已使用至"

sql_max="select max(uid) from users limit 1"

echo &(mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql_max}")

read -p "input user ID:" ud

read -p "input quota  size:" qsize

userhome=/mnt/hzftpdata/$name

echo 信息确认

echo 用户名:"$name",密码:"$pass",关闭日期:"$closeday",用户ID:"$ud",限额:"$qsize",路径:"$userhome"

echo "ctrl+ C" 取消操作

sleep 10

sql="insert into users values (‘$name‘,‘$pass‘,‘$(date +%Y-%m-%d)‘,‘$closeday‘,‘$ud‘,‘10000‘,‘$userhome‘,‘10000‘,‘$q

size‘,‘300‘,‘300‘,‘‘,‘‘,‘1‘,‘1‘,‘1‘,‘‘)"

sql1="select user,password,startdate,enddate,uid,gid,dir from users where user=‘$name‘"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql}"

echo "信息已确认:"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql1}"

;;

2)

read -p "input name:" name

read -p "input pass:" pass

sql="update users set password=‘$pass‘ where user=‘$name‘"

sql2="select user,password,dir,enddate from users where user=‘$name‘"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql}"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql2}"

;;

3)

read -p "input name:" name

sql="update users set status=‘0‘ where user=‘$name‘"

sql2="insert into closedftp select * from users where status=‘0‘ and user=‘$name‘"

sql3="delete from users where user=‘$name‘"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql}"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql2}"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql3}"

;;

4)

sql="update users set status=‘0‘ where enddate<=‘$(date +%Y-%m-%d)‘"

sql2="insert into closedftp select * from users where enddate<=‘$(date +%Y-%m-%d)‘"

sql3="delete from users where enddate<=‘$(date +%Y-%m-%d)‘"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql}"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql2}"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql3}"

;;

5)

read -p "请输入要延期的账号:" name

read -p "延期时间(格式0000-00-00):" closeday

sql="update closedftp set enddate=‘$closeday‘,status=‘1‘ where user=‘$name‘"

sql2="insert into users select * from closedftp where user=‘$name‘"

sql3="delete from closedftp where user=‘$name‘"

sql4="select user,password,dir,enddate from users where user=‘$name‘"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql}"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql2}"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql3}"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql4}"

;;

6)

read -p "请输入要延期的账号:" name

read -p "延期时间(格式0000-00-00):" closeday

sql="update users set enddate=‘$closeday‘ where user=‘$name‘"

sql2="select user,dir,enddate from users where user=‘$name‘"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql}"

echo "信息已更改"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql2}"

;;

7)

read -p "input name:" name

sql="select user,password,dir,startdate,enddate from users where user=‘$name‘"

mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${sql}"

;;

*) echo "Error,please select 1,2,3,or 4:"

;;

esac

时间: 2024-11-29 09:13:31

ftp之 pure-ftp的相关文章

FTP服务器配置和FTP基于MariaDB实现访问控制

FTP服务器简介 FTP服务器是提供文件存储和访问服务的服务器,通过ftp(文件传输协议)实现数据传输,而且FTP是仅基于TCP的服务,不支持UDP.FTP应用是一种C/S架构的应用,客户端和服务器端都需要安装相关的软件才能实现相互之间的数据传输.常见的软件套件有FileZilla,Server-U,VsFTP,Pure-FTPd ,ProFTPD等,其中VsFTP,Pure-FTPd ,ProFTPD是单纯的服务器程序,常见客户端程序有ftp,lftp.本文实验环境中采用的服务器程序是vsft

如何架设内网ftp服务器 搭建ftp yum源

1.启动系统,我是用iso镜像挂载,挂载到/iso mkdir  /iso mount -a -t iso9660 -o loop /dev/cdrom /iso2.安装FTP服务(如果系统已带则在桌面 管理-服务器设置-服务 可以很方便的启动vsftpd服务)cd /iso/Packages rpm -ivh vsftpd* chkconfig vsftpd on service vsftpd start3.安装createrepo的软件包cd /iso/Packages rpm -ivh c

主动模式FTP与被动模式FTP该如何选择

主动模式FTP与被动模式FTP该如何选择  无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连结.而主动模式与被动模式的差异主要体现在数据连结通道上.为了说明两者的差异,我将主要对这个数据连结进行比较详细的说明.  当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令连接.如在客户端向服务器发起连接请 求的时候,客户端会随即的选择某个TCP端口来跟FTP服务器的21号端口进行连接,这主要是通过TCP三

Active FTP vs. Passive FTP, a Definitive Explanation

原文:http://slacksite.com/other/ftp.html中文翻译:http://www.phpweblog.net/killjin/archive/2008/01/06/2653.html Contents: Introduction The Basics Active FTP Active FTP Example Passive FTP Passive FTP Example Other Notes Summary References Appendix 1: Config

linux下FTP拒绝(ftp: connect: Connection refused,500 OOPS: cannot read config file)

使用Ubunto15.0.4环境下,使用APT命令下载的vsftpd程序 在/etc/vsftpd.conf中开启匿名用户权限(anonymous_enable=YES),重新启动vsftpd后,在用ftp localhost,竟然会报ftp: connect: Connection refused的错误,使用sudo service vsftpd start,或sudo /etc/init.d/vsftpd start,竟然启动不起来.报500 OOPS: cannot read config

4. 用Ubuntu Server架设基于独立硬盘的Windows文件共享和FTP服务器(FTP架设)

之前将storage文件夹(背后是挂载的整块新硬盘)通过samba服务与Windows共享.之所以先共享,是为了完成FTP后方便文件管理. 软件:vsftpd 目标:让用户登录FTP后可以上传文件(主要用于iPhone照片备份),不同用户备份在各自的文件夹下.Windows下打开共享的storage文件夹可以看到这些备份.高级一点的话,用户之间设置一下权限,不能相互读写(我个人不需要这个设定). 第一步,安装vsftpd sudo apt-get install vsftpd 第二步,在stor

FTP(二)ftp部署与防火墙配置

一.ftp部署 继上文对ftp原理的分析说明,接下实战部署ftp服务器. 1.环境 CentOS6.8 X64    vsftp #yum install vsftpd -y #rpm -qa |grep vsftpd#vsftpd-2.2.2-21.el6.x86_64 2.配置 cat /etc/vsftpd/vsftpd.conf|egrep -v '(^$|^#)' #修改默认连接端口为10021 listen_port=10021 #不允许匿名连接 anonymous_enable=N

Linux不能使用FTP 命令 -bash: ftp: command not found

今天在centos上使用ftp命令连接搭建的FTP服务器(本机FTP服务使用Vsftpd搭建),出现如下的错误提示:-bash: ftp: command not found 查询相关资料,发现是FTP命令没有安装. 查询相关资料,发现是FTP命令没有安装.通过yum方式安装FTP命令: 安装完毕后,再次使用FTP命令进行连接,发现已经可以正常连接FTP服务器.

windows下使用curl下载ftp文件(ftp有密码)

curl下载地址:http://curl.haxx.se/download.html 如下是bat脚本--------- @echo off echo %date% set Now=%date:~0,4%%date:~5,2%%date:~8,2% echo %Now% set filename=abc-%Now%.zip echo %filename% echo curl.exe ftp://www.baidu.com:222/%filename% -u user:password -o c:

FTP相关&amp;创建FTP测试计划

1.添加线程组 2.添加默认FTP请求属性 Add--Config Element --FTP Request Defaults 3.添加FTP请求 线程组--add--sampler--FTP Request 4.添加监听器用于查看/存储测试结果 选中线程组--add--listener--Spline Visualizer 原文地址:https://www.cnblogs.com/danyuzhu11/p/8406065.html