首页 运维 正文
CentOS平台下pureftpd搭建

 2022-10-23    371  

  一、系统:  CentOS 5.3

  二、软件以及下载地址

CentOS平台下pureftpd搭建

  pure-ftpd-1.0.24.tar.gz

  ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.24.tar.gz

  三、说明:用来控制用户的ftp上传功能,仅允许ftp用户在自己的目录文件下操作其网站。前提:CentOS 5.3具有搭建好的LAMP环境。

  四、搭建环境

  1、编译安装pureftp 源代码http://www.pureftpd.org/

  [root@localhost src]$ wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.24.tar.gz

  –16:21:29– ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.24.tar.gz

  => `pure-ftpd-1.0.24.tar.gz.1′

  正在解析主机 ftp.pureftpd.org… 91.121.49.42

  Connecting to ftp.pureftpd.org|91.121.49.42|:21… 已连接。

  正在以 anonymous 登录 … 登录成功!

  ==> SYST … 完成。 ==> PWD … 完成。

  ==> TYPE I … 完成。 ==> CWD /pub/pure-ftpd/releases … 完成。

  ==> SIZE pure-ftpd-1.0.24.tar.gz … 560565

  ==> PASV … 完成。 ==> RETR pure-ftpd-1.0.24.tar.gz … 完成。

  长度:560565 (547K)

  100%[=======================================>]560,56510.5K/sin28s 
  •   16:22:04(19.3KB/s)-`pure-ftpd-1.0.24.tar.gz.1'saved[560565]
  •   [root@localhostsrc]$tarzxvfpure-ftpd-1.0.24.tar.gz
  •   pure-ftpd-1.0.24/
  •   pure-ftpd-1.0.24/aclocal.m4
  •   ……
  •   pure-ftpd-1.0.24/configuration-file/pure-config.py.in
  •   pure-ftpd-1.0.24/configuration-file/pure-ftpd.conf.in
  •   [root@localhostpure-ftpd-1.0.24]#
  •    如果出现类似configure: error: Your MySQL client libraries aren’t properly installed 的错误,将mysql目录下的 include/mysql下的mysql.h文件以及lib/mysql下的全部文件,连接(直接复制过去或许也可)到 /usr/lib 目录下.

      如果编译安装pure-ftpd出现configure: error: Your MySQL client libraries aren’t properly installed错误,解决办法:

      [root@joweipure-ftpd-1.0.22]#vi/etc/profile在最后添加 
  •   exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql
  •   如果出现你安装的Mysql是rpm包形式的,则直接用 –with-mysql 将其路径删除即可。

      [root@joweipure-ftpd-1.0.22]#./etc/profile 
  •   然后再进行./configure ……

      出现下面这个表示配置成功

      configure:WARNING:unrecognizedoptions:--with-largefile,--with-upload_script_,--with-virtualroot 
  •   configure:+--------------------------------------------------------+
  •   configure:|YoucansubscribetothePure-FTPdusersmailing-list|
  •   configure:|toaskforhelpandtostayinformedofnewreleases.|
  •   configure:|Gotohttp://www.pureftpd.org/ml/now!|
  •   configure:+--------------------------------------------------------+
  •   [root@localhostpure-ftpd-1.0.22]#make;makeinstall
  •   五、建立配置文件

      [root@localhostpure-ftpd-1.0.22]#mkdir-m755/usr/local/pureftpd/etc 
  •   [root@localhostpure-ftpd-1.0.22]#
  •   cppureftpd-mysql.conf/usr/local/pureftpd/etc/
  •   [root@localhostpure-ftpd-1.0.22]#
  •   cpconfiguration-file/pure-ftpd.conf/usr/local/pureftpd/etc/
  •   [root@localhostpure-ftpd-1.0.22]#cpconfiguration-file/pure-config.pl/usr/local/pureftpd/bin/
  •   [root@localhostpure-ftpd-1.0.22]#
  •   chmod755/usr/local/pureftpd/bin/pure-config.pl
  •   [root@localhostpure-ftpd-1.0.22]#
  •   cpcontrib/redhat.init/etc/init.d/pureftpd
  •   [root@localhostpure-ftpd-1.0.22]#chmod755/etc/init.d/pureftpd
  •   [root@localhostpure-ftpd-1.0.22]#chownroot:root/etc/init.d/pureftpd//设置root权限
  •   [root@localhostpure-ftpd-1.0.22]#chkconfig--addpureftpd
  •   //加入系统启动
  •   [root@localhostpure-ftpd-1.0.22]#chkconfigpureftpdon//开机启动
  •   [root@localhostpure-ftpd-1.0.22]#vi/etc/init.d/pureftpd//修改pureftpd一下几项
  •   #Pathtothepure-ftpbinaries.
  •   prog=pure-config.pl
  •   fullpath=/usr/local/pureftpd/sbin/$prog//修改此处
  •   pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho//修改pure-ftpwho路径
  •   start(){
  •   echo-n$"Starting$prog:"
  •   $fullpath/usr/local/pureftpd/etc/pure-ftpd.conf--daemonize//修改pure-ftpd.conf路径
  •   RETVAL=$?
  •   [$RETVAL=0]&&touch/var/lock/subsys/$prog
  •   echo
  •   }
  • #p#

      六、建立mysql认证数据库表

      [root@joweipureftpd]#mysql-uroot-p 
  •   Enterpassword:----输入mysqlroot用户密码进入
  •   mysql>createdatabasepureftpd;
  •   mysql>grantallonpureftpd.*topureftpd@localhostidentifiedby'pureftpd';
  •   mysql>usepureftpd
  •   mysql>CREATETABLEusers(
  •   idint(32)unsignedNOTNULLauto_increment,
  •   Uservarchar(16)NOTNULLdefault'*',
  •   Passwordvarchar(64)NOTNULLdefault'*',
  •   Uidvarchar(11)NOTNULLdefault'-1',
  •   Gidvarchar(11)NOTNULLdefault'-1',
  •   Dirvarchar(128)NOTNULLdefault'-1',
  •   QuotaSizesmallint(5)NOTNULLdefault0,
  •   QuotaFilesint(11)NOTNULLdefault0,
  •   ULBandwidthsmallint(5)NOTNULLdefault0,
  •   DLBandwidthsmallint(5)NOTNULLdefault0,
  •   ULRatiosmallint(6)NOTNULLdefault0,
  •   DLRatiosmallint(6)NOTNULLdefault0,
  •   commenttinytextNOTNULL,
  •   ipaccessvarchar(15)NOTNULLdefault'*',
  •   statusenum('0','1')NOTNULLdefault'0',
  •   create_datedatetimeNOTNULLdefault'0000-00-0000:00:00',
  •   modify_datedatetimeNOTNULLdefault'0000-00-0000:00:00',
  •   PRIMARYKEY(id,User),
  •   UNIQUEKEYUser(User)
  •   )TYPE=MyISAMAUTO_INCREMENT=5;
  •   建立用户

      你可以用下面建立的test用户登录到/var/pureftp

      INSERTINTOusersVALUES(1,'test1','123456','2000','2000','/var/pureftp',0,0,0,0,0,0,'*','*','1','2009-7-1109:20:33','2009-7-1109:20:33'); 
  •   INSERTINTOusersVALUES(1,'test2','123456','2000','2000','/var/pureftp',0,0,0,0,0,0,'*','*','1','2009-7-1109:20:33','2009-7-1109:20:33');
  •   /var/pureftp ftp登陆的文件目录

      七、建立用于pureftpd认证用户的系统信息

      你可以自己向下面这样建立一个用户做pureftpd验证但是我下面直接用的是root

      [root@localhost/]#groupadd-g2000pureftp 
  •   [root@localhost/]#useradd-u2000-gpureftp-d/var/pureftp-s/sbin/nologinpureftp
  • #p#

      八、修改pureftpd的配置文件

      [root@localhostvar]#vi/usr/local/pureftpd/etc/pure-ftpd.conf 
  •   ############################################################
  •   ##
  •   #Configurationfileforpure-ftpdwrappers#
  •   ##
  •   ############################################################
  •   #如果你想要使用配置文件代替命令行选项来运行Pure-FTPd,请运行下面的命令:
  •   #
  •   #/usr/local/pureftpd/sbin/pure-config.pl/usr/local/pureftpd/etc/pure-ftpd.conf
  •   #
  •   #RPM缺省使用另外一个配置文件:
  •   #/etc/sysconfig/pure-ftpd
  •   #
  •   #请不要忘了浏览一下http://www.pureftpd.org/documentation.html的
  •   #文档,查看全部的选项列表。
  •   #限制所有用户在其主目录中
  •   ChrootEveryoneyes
  •   #如果前一个指令被设置为了"no",下面组的成员(GID)就不受主目录的限制了。而其他的用户还是
  •   #会被限制在自己的主目录里。如果你不想把任何用户限制在自己的主目录里,只要注释掉ChrootEveryone
  •   #和TrustedGID就可以了。
  •   #TrustedGID100
  •   #兼容ie等比较非正规化的ftp客户端
  •   BrokenClientsCompatibilityno
  •   #服务器总共允许同时连接的最大用户数
  •   MaxClientsNumber50
  •   #做为守护(doemon)进程运行(Forkinbackground)
  •   Daemonizeyes
  •   #同一IP允许同时连接的用户数(MaximumnumberofsimclientswiththesameIPaddress)
  •   MaxClientsPerIP8
  •   #如果你要记录所有的客户命令,设置这个指令为"yes"。
  •   #Thisdirectivecanbeduplicatedtoalsologserverresponses.
  •   VerboseLogno
  •   #即使客户端没有发送'-a'选项也列出隐藏文件(dot-files)。
  •   DisplayDotFilesyes
  •   #不允许认证用户-仅作为一个公共的匿名FTP。
  •   AnonymousOnlyno
  •   #不允许匿名连接,仅允许认证用户使用。
  •   NoAnonymousno
  •   #Syslogfacility(auth,authpriv,daemon,ftp,security,user,local*)
  •   #缺省的功能(facility)是"ftp"。"none"将禁止日志。
  •   SyslogFacilityftp
  •   #定制用户登陆后的显示信息(Displayfortunecookies)
  •   #FortunesFile/usr/share/fortune/zippy
  •   #在日志文件中不解析主机名。日志没那么详细的话,就使用更少的带宽。在一个访问量很大
  •   #的站点中,设置这个指令为"yes",如果你没有一个能工作的DNS的话。
  •   DontResolveyes
  •   #客户端允许的最大的空闲时间(分钟,缺省15分钟)
  •   MaxIdleTime15
  •   #LDAP配置文件(参考README.LDAP)
  •   #LDAPConfigFile/etc/pureftpd-ldap.conf
  •   #MySQL配置文件(参考README.MySQL)
  •   MySQLConfigFile/usr/local/pureftpd/etc/pureftpd-mysql.conf#关键部分,你整合mysql就靠它了
  •   #Postgres配置文件(参考README.PGSQL)
  •   #PGSQLConfigFile/etc/pureftpd-pgsql.conf
  •   #PureDB用户数据库(参考README.Virtual-Users)
  •   #PureDB/etc/pureftpd.pdb
  •   #pure-authd的socket路径(参考README.Authentication-Modules)
  •   #ExtAuth/var/run/ftpd.sock
  •   #如果你要启用PAM认证方式,去掉下面行的注释。
  •   #PAMAuthenticationyes
  •   #如果你要启用简单的Unix系统认证方式(/etc/passwd),去掉下面行的注释。
  •   #UnixAuthenticationyes
  •   #请注意,LDAPConfigFile,MySQLConfigFile,PAMAuthentication和
  •   #UnixAuthentication这些指令只能被使用一次,不过,他们能被混合在一起用。例如:如果你使用了
  •   #MySQLConfigFile和UnixAuthentication,那么SQL服务器将被访问。如果因为用户名未找
  •   #到而使SQL认证失败的话,就会在/etc/passwd和/etc/shadow中尝试另外一种认证,如果因
  •   #为密码错误而使SQL认证失败的话,认证就会在此结束了。认证方式由它们被给出来的顺序而被链
  •   #接了起来。
  •   #'ls'命令的递归限制。第一个参数给出文件显示的最大数目。第二个参数给出最大的子目录深度。
  •   LimitRecursion20008
  •   #允许匿名用户创建时间:2009-11-1115:38:00新目录?
  •   AnonymousCanCreateDirsno
  •   #如果系统被loaded超过下面的值,匿名用户会被禁止下载。
  •   MaxLoad4
  •   #被动连接响应的端口范围。-forfirewalling.
  •   #PassivePortRange3000050000
  •   #强制一个IP地址使用被动响应(PASV/EPSV/SPSVreplies)。-forNAT.
  •   #SymbolichostnamesarealsoacceptedforgatewayswithdynamicIP
  •   #addresses.
  •   #ForcePassiveIP192.168.0.1
  •   #匿名用户的上传/下载的比率。
  •   #AnonymousRatio110
  •   #所有用户的上传/下载的比率。
  •   #Thisdirectivesuperscedesthepreviousone.
  •   #UserRatio110
  •   #不接受所有者为"ftp"的文件的下载。例如:那些匿名用户上传后未被本地管理员验证的文件。
  •   AntiWarezyes
  •   #服务监听的IP地址和端口。(缺省是所有IP地址和21端口)
  •   #Bind127.0.0.1,21
  •   #匿名用户的最大带宽(KB/s)。
  •   #AnonymousBandwidth8
  •   #所有用户的最大带宽(KB/s),包括匿名用户。
  •   #UseAnonymousBandwidth*or*UserBandwidth,bothmakesnosense.
  •   #UserBandwidth8
  •   #新建目录及文件的属性掩码值。<文件掩码>;:<目录掩码>;.
  •   #177:077ifyoufeelparanoid.
  •   Umask133:022
  •   #认证用户允许登陆的最小组ID(UID)。
  •   MinUID100
  •   #仅允许认证用户进行FXP传输。
  •   AllowUserFXPyes
  •   #对匿名用户和非匿名用户允许进行匿名FXP传输。
  •   AllowAnonymousFXPno
  •   #用户不能删除和写点文件(文件名以'.'开头的文件),即使用户是文件的所有者也不行。
  •   #如果TrustedGID指令是enabled,文件所属组用户能够访问点文件(dot-files)。
  •   ProhibitDotFilesWriteno
  •   #禁止读点文件(文件名以'.'开头的文件)(.history,.ssh...)
  •   ProhibitDotFilesReadno
  •   #永不覆盖文件。当上传的文件,其文件名已经存在时,自动重命名,如:file.1,file.2,file.3,...
  •   AutoRenameno
  •   #不接受匿名用户上传新文件(no=允许上传)
  •   AnonymousCantUploadno
  •   #仅允许来自以下IP地址的非匿名用户连接。你可以使用这个指令来打开几个公网IP来提供匿名FTP,
  •   #而保留一个私有的防火墙保护的IP来进行远程管理。你还可以只允许一内网地址进行认证,而在另外
  •   #一个IP上提供纯匿名的FTP服务。
  •   #TrustedIP10.1.1.1
  •   #如果你要为日志每一行添加PID去掉下面行的注释。
  •   #LogPIDyes
  •   #使用类似于Apache的格式创建一个额外的日志文件,如:
  •   #fw.c9x.org-jedi[13/Dec/1975]"GET/ftp/linux.tar.bz2"20021809338
  •   #这个日志文件能被www流量分析器处理。
  •   #AltLogclf:/var/log/pureftpd.log
  •   #使用优化过的格式为统计报告创建一个额外的日志文件。
  •   #AltLogstats:/var/log/pureftpd.log
  •   #使用标准的W3C格式创建一个额外的日志文件。(与大部分的商业日志分析器兼容)
  •   #AltLogw3c:/var/log/pureftpd.log
  •   #不接受CHMOD命令。用户不能更改他们文件的属性。
  •   #NoChmodyes
  •   #允许用户恢复和上传文件,却不允许删除他们。
  •   #KeepAllFilesyes
  •   #用户主目录不存在的话,自动创建。
  •   #CreateHomeDiryes
  •   #启用虚拟的磁盘限额。第一个数字是最大的文件数。
  •   #第二个数字是最大的总的文件大小(单位:Mb)。
  •   #所以,1000:10就限制每一个用户只能使用1000个文件,共10Mb。
  •   #Quota1000:10
  •   #如果你的pure-ftpd编译时加入了独立服务器(standalone)支持,你能够改变pid文件
  •   #的位置。缺省位置是/var/run/pure-ftpd.pid。
  •   #PIDFile/var/run/pure-ftpd.pid
  •   #如果你的pure-ftpd编译时加入了pure-uploadscript支持,这个指令将会使pure-ftpd
  •   #发送关于新上传的情况信息到/var/run/pure-ftpd.upload.pipe,这样pure-uploadscript
  •   #就能读然后调用一个脚本去处理新的上传。
  •   #CallUploadScriptyes
  •   #这个选项对允许匿名上传的服务器是有用的。当/var/ftp在/var里时,需要保留一定磁盘空间
  •   #来保护日志文件。当所在磁盘分区使用超过百分之X时,将不在接受新的上传。
  •   MaxDiskUsage99
  •   #如果你不想要你的用户重命名文件的话,就设置为'yes'。
  •   #NoRenameyes
  •   #是'customerproof':工作区(workaround)反对普通的客户错误,类似于:'chmod0public_html'的错误。
  •   #那是一个有效的命令,不过,将导致无知的客户所定他们自己的文件,将使你的技术支持忙于愚蠢的的问题中。
  •   #如果你确信你所有的用户都有基本的Unix知识的话,这个特性将没什么用了。不过,如果你是一个主机提供商
  •   #的话,启用它。
  •   CustomerProofyes
  •   #每一个用户的并发限制。只有在添加了--with-peruserlimits编译选项进行编译后,这个指令才起
  •   #作用。(大部分的二进制的发布版本就是例子)
  •   #格式是:<每一个用户最大允许的进程>;:<最大的匿名用户进程>;
  •   #例如:3:20意思是同一个认证用户最大可以有3个同时活动的进程。而且同时最多只能有20个匿名用户进程。
  •   #PerUserLimits3:20
  • #p#

      九、修改pureftpd-mysql.conf的配置文件

      [root@localhostvar]#vi/usr/local/pureftpd/etc/pureftpd-mysql.conf 
  •   ##############################################
  •   ##
  •   #SamplePure-FTPdMysqlconfigurationfile.#
  •   #SeeREADME.MySQLforexplanations.#
  •   ##
  •   ##############################################
  •   #Optional:MySQLservernameorIP.Don'tdefinethisforunixsockets.
  •   MYSQLServerlocalhost
  •   #服务器地址
  •   #Optional:MySQLport.Don'tdefinethisifalocalunixsocketisused.
  •   MYSQLPort3306
  •   #服务器端口
  •   #Optional:definethelocationofmysql.sockiftheserverrunsonthishost.
  •   MYSQLSocket/tmp/mysql.sock
  •   #这里换成你的真实地址
  •   #Mandatory:usertobindtheserveras.
  •   MYSQLUserroot
  •   #登录服务器用户名
  •   #Mandatory:userpassword.Youmusthaveapassword.
  •   MYSQLPassword123456
  •   #登录服务器密码
  •   #Mandatory:databasetoopen.
  •   MYSQLDatabasepureftpd
  •   #配置文件所在的数据库
  •   #Mandatory:howpasswordsarestored
  •   #Validvaluesare:"cleartext","crypt","md5"and"password"
  •   #("password"=MySQLpassword()function)
  •   #Youcanalsouse"any"totry"crypt","md5"*and*"password"
  •   MYSQLCryptcleartext
  •   #验证方式
  •   #Inthefollowingdirectives,partsofthestringsarereplacedat
  •   #run-timebeforeperformingqueries:
  •   #
  •   #\Lisreplacedbytheloginoftheusertryingtoauthenticate.
  •   #\IisreplacedbytheIPaddresstheuserconnectedto.
  •   #\Pisreplacedbytheportnumbertheuserconnectedto.
  •   #\RisreplacedbytheIPaddresstheuserconnectedfrom.
  •   #\DisreplacedbytheremoteIPaddress,asalongdecimalnumber.
  •   #
  •   #Verycomplexqueriescanbeperformedusingthesesubstitutionstrings,
  •   #especiallyforvirtualhosting.
  •   #Querytoexecuteinordertofetchthepassword
  •   MYSQLGetPWSELECTPasswordFROMusersWHEREUser="\L"ANDstatus="1"
  •   #登录服务器的用户密码验证字段,status="1"为此用户必需为激活模式.
  •   #Querytoexecuteinordertofetchthesystemusernameoruid
  •   MYSQLGetUIDSELECTUidFROMusersWHEREUser="\L"
  •   #用户的UID
  •   #Optional:defaultUID-ifsetthisoverridesMYSQLGetUID
  •   #MYSQLDefaultUID1000
  •   #Querytoexecuteinordertofetchthesystemusergrouporgid
  •   MYSQLGetGIDSELECTGidFROMusersWHEREUser="\L"
  •   #用户的Gid
  •   #Optional:defaultGID-ifsetthisoverridesMYSQLGetGID
  •   #MYSQLDefaultGID1000
  •   #Querytoexecuteinordertofetchthehomedirectory
  •   MYSQLGetDirSELECTDirFROMusersWHEREUser="\L"
  •   #用户的主目录
  •   #Optional:querytogetthemaximalnumberoffiles
  •   #Pure-FTPdmusthavebeencompiledwithvirtualquotassupport.
  •   MySQLGetQTAFSSELECTQuotaFilesFROMusersWHEREUser="\L"
  •   #用户的最大文件数量
  •   #Optional:querytogetthemaximaldiskusage(virtualquotas)
  •   #ThenumbershouldbeinMegabytes.
  •   #Pure-FTPdmusthavebeencompiledwithvirtualquotassupport.
  •   MySQLGetQTASZSELECTQuotaSizeFROMusersWHEREUser="\L"
  •   #用户的最大磁盘空间
  •   #Optional:ratios.Theserverhastobecompiledwithratiosupport.
  •   MySQLGetRatioULSELECTULBandwidthFROMusersWHEREUser="\L"
  •   MySQLGetRatioDLSELECTDLBandwidthFROMusersWHEREUser="\L"
  •   #上边两项为,用户上传与下载的速度,单位Kb/s
  •   #Optional:bandwidththrottling.
  •   #Theserverhastobecompiledwiththrottlingsupport.
  •   #ValuesareinKB/s.
  •   #MySQLGetBandwidthULSELECTULBandwidthFROMusersWHEREUser="\L"
  •   #MySQLGetBandwidthDLSELECTDLBandwidthFROMusersWHEREUser="\L"
  •   #Enable~expansion.NEVERENABLETHISBLINDLYUNLESS:
  •   #1)Youknowwhatyouaredoing.
  •   #2)Realandvirtualusersmatch.
  •   #MySQLForceTildeExpansion1
  •   #Ifyouupgradedyourtablestotransactionnaltables(Gemini,
  •   #BerkeleyDB,Innobase...),youcanenableSQLtransactionsto
  •   #avoidraces.Leavethiscommentedifyouareusingthe
  •   #traditionnalMyIsamdatabasesorold(<3.23.x)MySQLversions.
  •   #MySQLTransactionsOn
  • #p#

      十、运行pureftpd

      启动pureftpd

      [root@localhost~]#/etc/init.d/pureftpdstart或者下面也可以 
  •   [root@localhost~]#/usr/local/pureftpd/bin/pure-config.pl/usr/local/pureftpd/etc/pure-ftpd.conf
  • 原文链接:https://77isp.com/post/8673.html

    =========================================

    https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。