设为首页 收藏本站
查看: 980|回复: 0

[经验分享] linux下pureftpd的安装与配置(FTP服务器)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-6 07:26:46 | 显示全部楼层 |阅读模式
对比了几个FTP服务器,发现还是Pure-ftpd好用,Proftpd空间配额都要打补丁,麻烦。加之昨天搞了一天vsftpd到现在还是没搞定虚拟用户密码错误的问题。更感觉到pure-ftpd的易用。
  1.Download
  http://www.pureftpd.org
  Pure-ftpd,Proftpd都上不了,具体原因不得而知。
  可以通过代理上这两个网站,随便找一个国外的代理服务器,设置好IE的连接就可以上了.
  2.编译安装
  #tar zxvf purexxxx.tgz
  #cd purexxxxx
  ./configure  --prefix=/usr/local/pureftpd  --with-mysql  --with-paranoidmsg  --with-welcomemsg  --with-uploadscript  --with-cookie  --with-virtualchroot  --with-virtualhosts  --with-virtualroot  --with-diraliases --with-quotas --with-sysquotas --with-ratios--with-ftpwho --with-throttling --with-language=english
*********************************
我是用源码安装Mysql的,在configure过程中出现configure: error: libmysqlclient is needed for MySQL support的错误,我把 --with-mysql  改成  --with-mysql  =/usr/local/mysql/lib/mysql也不行。
后来我做了几个链接到/usr/lib下:
#cd /usr/lib
#ln -s /usr/local/mysql/include/mysql/mysql.h .
#ln -s /usr/local/mysql/lib/mysql/* .
再把--with-mysql
改成
--with-mysql  =/usr/local/mysql/

[iyunv@unix-server3 pure-ftpd-1.0.22]# vi /etc/ld.so.conf
增加一行/usr/local/mysql/lib/mysql/ (可不加直接运行ldconfig给系统重新载入动态库)
[iyunv@unix-server3 pure-ftpd-1.0.22]#ldconfig
回到源码目录configure就行了。
*********************************
  这时,我们只用Mysql用户认证,不用LDAP,也不用其这的.
  # make
  # make check
  # make install
  3.测试
  # /usr/local/pureftpd/sbin/pure-ftpd &
  运行后,用FTP登录一下看,此时是系统用户认证.登录成功,表示Pure-FTPD安装好了
  4.与Mysql结合
  由于编译时带了--with-mysql选项,所以,无需修改Pure-FTPD.
  A.
  先在Mysql中建一个FTP用户表(和数据库):
  CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(16) NOT NULL,
`password` varchar(64) NOT NULL,
`uid` varchar(11) NOT NULL,
`gid` varchar(11) NOT NULL,
`dir` varchar(128) NOT NULL,
`quotasize` varchar(5) NOT NULL,
`quotafiles` varchar(11) NOT NULL,
`ulbandwidth` varchar(5) NOT NULL,
`dlbandwidth` varchar(5) NOT NULL,
`ulratio` varchar(6) NOT NULL,
`dlratio` varchar(6) NOT NULL,
`comment` tinytext NOT NULL,
`ipaccess` varchar(15) NOT NULL,
`status` enum('0','1') DEFAULT NULL,
`create_date` datetime NOT NULL,
`modify_date` datetime NOT NULL,
PRIMARY KEY (`id`,`user`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

  说明
  ID 用户ID
  Name 用户名
  Passwd 用户密码,用MD5加密
  UID 用户对应的系统ID,请注意,默认情况下,低于100的UID不可以登录
  GID 用户对应的系统组ID
  Dir 用户主目录
  quotafiles 用户最大文件数
  quotasize 用户最大空间M
  Status 用户状态,为1时可以使用(用SQL语句实现,见后面的Mysql.conf)
  b.配置Pure-FTPD
  我们用Pure-FPTD自带的启动脚本启动.
  进入Pure-fptd的源代码目录
  [iyunv@linux pure-ftpd-1.0.15]# cd configuration-file
  [iyunv@linux configuration-file]# chmod u+x pure-config.pl
  [iyunv@linux configuration-file]# cp pure-config.pl /usr/local/pureftpd/bin
  [iyunv@linux configuration-file]# mkdir /usr/local/pureftpd/etc
  [iyunv@linux configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc
  [iyunv@linux configuration-file]# cd ..
  [iyunv@linux pure-ftpd-1.0.15]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/mysql.conf
  [iyunv@linux pure-ftpd-1.0.15]# cd /usr/local/pureftpd/etc
  [iyunv@linux etc]#vi pure-ftpd.conf
  修改pure-ftpd.conf的配置,详细配置见后面
  [iyunv@linux etc]#vi mysql.conf
  修改Mysql连接的配置,详细配置见后面
  c.启动:
  #/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
*********************************
我在命令行执行可以,但写成启动脚本时报错/usr/local/pureftpd/sbin/pure-ftpd: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory
在网上找了一下资料:
1.找到libmysqlclient.so.16所在的目录(/usr/local/mysql/lib/mysql)
2.将该目录加入到/etc/ld.so.conf的第一行
3.ldconfig
更新库所在位置
/usr/local/mydns/sbin/named -4 -n 1 -S 52428
搞定了@@@@@@@@@@@@@@@@@@

*********************************
  d.测试
  #groupadd ftpuser
  #useradd -g ftpuser -s /sbin/nologin -d /ftp/ ftpwrite
  #useradd -g ftpuser -s /sbin/nologin -d /ftp/ ftpread
  #mkdir /ftp
  #mkdir /ftp/ipaddr
  #chown ftpwrite.ftpuser /ftp/ipaddr
  加入两个FTP系统用户,假设ftpuser的GID为500,ftpwrite的UID为500,ftpread的UID为501
  加入一个Mysql用户:
  id=100
  user=ipaddr
  Passwd=md5(ipaddr)
  UID=500 (501时,用户只读)
  GID=500
  Dir=/ftp/ipaddr
  quotafiles=500
  quotasize=30
  Status=1
  重启PureFTPD,再用FTP客户端测试
  #killall pure-ftpd
  #/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
  e.自启动.
  可以将启动脚本写入/etc/rc.d/rc.local里,自启动,但不太方便,
  可以写一个脚本,如下:
  #!/bin/sh
# Startup script for the FTP Server
#
# chkconfig: - 99 99
# description: FTP Serve
case "$1" in
start)
/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
;;
stop)
killall pure-ftpd > /dev/null
;;
*)
echo "Usage: `basename $0` {start | stop}" >&2
;;
esac
exit 0

  :w /etc/init.d/pureftpd (保存到/etc/init.d/pureftpd)
  #chkconfig --add pureftpd
  #chkconfig pureftpd on
  f.用户管理
  用PHP写一个程序管理Mysql表就行了.
  附录:
  A.mysql.conf
  MYSQLSocket /var/lib/mysql/mysql.sock
  MYSQLServer 127.0.0.1
#MYSQL服务器的IP
MYSQLPort 3306
#MYSQL 端口号
MYSQLSocket /var/lib/mysql/mysql.sock
#使用 UNIX.sock本地连接
注:MYSQLServer 与 MYSQLSocket 选择一种即可

MYSQLUser ftp
#MYSQLUser 数据用户名
MYSQLPassword 123456
#MYSQL数据库用户的密码
MYSQLDatabase ftpusers
#FTP数据数据库
MYSQLCrypt md5
#密码加密方式"cleartext", "crypt", "md5" and "password"
# cleartext 明文,crypt,md5,password是Backend password(‘your-passwd’)函数(MYSQL数据库所使用的

password() 函数)
MYSQLGetPW SELECT Password FROM users WHERE User="L"
# 密码字段,我使用users表中的Password做为密码字段
MYSQLGetUID SELECT Uid FROM users WHERE User="L"
#UID用户ID字段
MYSQLDefaultUID 1000
#默认的UID (注:如何开启该选项,MYSQLGetUID将失去作用)
MYSQLGetGID SELECT Gid FROM users WHERE User="L"
#GID组ID字段
MYSQLDefaultGID 1000
#默认的GID (注:如何开启该选项,MYSQLGetGID将失去作用)
MYSQLGetDir SELECT Dir FROM users WHERE User="L"
#FTP用户目录如/home/web/www-9812-net
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="L"
#磁盘限额,文件数限制。如1000,允许用户上传1千个文件
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="L"
#磁盘限额,FTP用户空间限制(单位为M), 如:100M
MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="L"
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="L"
#上传/下载比率。MySQLGetRatioUL为上 传比,MySQLGetRatioDL下载比。如:1:5
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="L"
#下传/下载带宽(单位KB/s)。MySQLGetBandwidthUL上传带宽,MySQLGetBandwidthDL下载带宽。如上传

500KB/s,下载50KB/s
MySQLForceTildeExpansion 1
MySQLTransactions On MYSQLUser sqluser

  MYSQLPassword password
  MYSQLDatabase kk
  MYSQLCrypt md5
  MYSQLGetPW SELECT passwd FROM users WHERE status=1 and user="\L"
  MYSQLGetUID SELECT uid FROM users WHERE status=1 and user="\L"
  MYSQLGetGID SELECT gid FROM users WHERE status=1 and user="\L"
  MYSQLGetDir SELECT dir FROM users WHERE status=1 and user="\L"
  MySQLGetQTAFS SELECT quotafiles FROM users WHERE status=1 and user="\L"
  MySQLGetQTASZ SELECT quotasize FROM users WHERE status=1 and user="\L"
  B.pure-ftpd.conf
  .....
  MySQLConfigFile /usr/local/pureftpd/etc/mysql.conf
    Bind    192.168.0.9,21  #绑定指定Ip
  #把这个打开就行了,其它的用默认
  .....
  C.定制PURE-FTPD的Banner
  vi src/ftpd.c
  4329 # ifdef BORING_MODE
  4330 addreply_noformat(0, MSG_WELCOME_TO " Pure-FTPd.");
  4331 # else
  4332 addreply_noformat(0, "--------- " MSG_WELCOME_TO
  4333 " Pure-FTPd" VERSION_PRIVSEP VERSION_TLS " ----------");
  4334 # endif
  将Pure-FPD改为自定义的名称,比如:IPADDR-FTPD

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-135597-1-1.html 上篇帖子: python实现ftp的基本功能 下篇帖子: Linux下FTP服务器的安装(proftpd)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表