CentOS7 安装 Pure-ftpd
一、摘要
FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
目前 FTP 软件有很多,但总体上分为 FTP Client 客户端 和 FTP Server 服务端,其中 PureFTPd 是一款专注于程序健壮和软件安全的免费 FTP 服务器软件(基于 BSD License)。其可以在多种类Unix操作系统中编译运行,包括 Linux、OpenBSD、NetBSD、FreeBSD、DragonFly BSD、Solaris、Tru64、Darwin、Irix and HP-UX。PureFTPd 还有 Android 移植版本。
二、下载并安装 Pure-ftpd
可以使用 yum 安装或者源码包安装,源码包安装的优点是可以自由选择安装的软件版本,yum 安装时仓库的版本一般都是固定的某一个版本,无法自由选择。
2.1 yum 安装
默认的 yum 源没有提供 pure-ftpd,需要先安装 epel 扩展源:
# yum install epel-release
然后使用 yum 命令安装Pure-ftpd:
# yum install pure-ftpd
2.2 源码包安装
访问 pure-ftpd 官方网站:
https://download.pureftpd.org/pub/pure-ftpd/releases/,当前最新版本为 1.0.47。
进入到要下载的目录:
[root@ryan plugins]# cd /usr/local/src
使用 wget 下载源码包:
[root@ryan src]# wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.47.tar.gz
解压:
[root@ryan src]# tar zxvf pure-ftpd-1.0.47.tar.gz
进入解压后的目录:
[root@ryan src]# cd pure-ftpd-1.0.47
通过设置不同的参数,定制相应的功能,生成 Makefile 文件:
[root@ryan pure-ftpd-1.0.47]# ./configure \
--prefix=/usr/local/pureftpd \
--without-inetd \
--with-altlog \
--with-puredb \
--with-throttling \
--with-peruserlimits \
--with-tls
注意:
我们在这里可能会遇到错误,在配置之后系统会提示:configure: error: OpenSSL headers not found.
解决方法是:
yum install -y openssl openssl-devel,如果找不到这两个包,则需要安装 yum 的扩展源:yum install -y epel-release
注意:不要随意修改域名解析文件 /etc/resolv.conf,否则可能导致 yum 源地址无法解析,而出现 [Errno 256] No more mirrors to try 。
/etc/resolv.conf 是 DNS 客户机配置文件,用于设置 DNS 服务器的 IP 地址及 DNS 域名,还包含了主机的域名搜索顺序。该文件是由域名解析 器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。
成功后出现如下所示:
编译并安装:
[root@ryan pure-ftpd-1.0.47]# make && make install
验证上一步是否执行成功:
[root@ryan pure-ftpd-1.0.47]# echo $?
0
这里返回值是"0"说明执行成功,否则就是没有成功。
2.3 修改配置文件
/usr/local/pureftpd/etc/pure-ftpd.conf
vim /usr/local/pureftpd/etc/pure-ftpd.conf ChrootEveryone yes
BrokenClientsCompatibility no
MaxClientsNumber 50
Daemonize yes
MaxClientsPerIP 8
VerboseLog no
DisplayDotFiles yes
AnonymousOnly no
NoAnonymous no
SyslogFacility ftp
DontResolve yes
MaxIdleTime 15
PureDB /usr/local/pureftpd/etc/pureftpd.pdb
LimitRecursion 10000 8
AnonymousCanCreateDirs no
MaxLoad 4
AntiWarez yes
Umask 133:022
MinUID 100
AllowUserFXP no
AllowAnonymousFXP no
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
AutoRename no
AnonymousCantUpload no
PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid
MaxDiskUsage 99
CustomerProof yes
三、使用 pure-ftpd
启动 pure-ftpd:
[root@ryan pure-ftpd-1.0.47]# /usr/local/pureftpd/sbin/pure-ftpd /usr/local/pureftpd/etc/pure-ftpd.conf
创建系统用户:
useradd wordpress-ftp
更改所属主和所属组:
chown -R wordpress-ftp:wordpress-ftp /opt/lampp/htdocs/wordpress
创建ftp用户,注意ftp用户是虚拟用户。
/usr/local/pureftpd/bin/pure-pw useradd ftp_wordpress -u wordpress-ftp -d /opt/lampp/htdocs/wordpress
此时会出现为该ftp新用户创建密码的提示:
Password:xxxxxx
Enter it again:xxxxxx
其中,-u选项将虚拟用户ftp_wordpress与系统用户wordpress-ftp关联在一起,即使用ftp_wordpress账号登录FTP后,会以wordpress-ftp的身份来读取和下载文件,-d选项后面的目录为ftp_wordpress账户的家目录,这样可以使ftp_wordpress只能访问其家目录/opt/lampp/htdocs/wordpress
创建用户信息数据库文件:
/usr/local/pureftpd/bin/pure-pw mkdb
查看用户列表:
/usr/local/pureftpd/bin/pure-pw list
显示如下:
ftp_wordpress /opt/lampp/htdocs/wordpress/./
删除账号的命令为:
/usr/local/pureftpd/bin/pure-pw userdel ftp_wordpress
四、配置服务器段安全组规则
由于本人使用的是阿里云的 ECS 服务器,服务器默认不开放 FTP 的 21 端口,自己在安全组规则中添加放行相应端口,由于在使用 FTP 过程中不仅仅会用到 21 端口,可能还会用到其他端口,所以此处我们放行 20/21,1024/65535,如下:
五、本地使用 FTP 客户端测试
FTP 客户端工具也有很多,个人比较喜欢 FileZilla,中文版下载地址:https://www.filezilla.cn/
但是自己在连接测试的过程中发现一直本地的 FTP 客户端工具一直连接不上外网的远程 linux 服务器,查看相应的日志记录:
[root@ryan ~]# cat /var/log/messages
没有发现可用的日志,然后查看了:
[root@ryan ~]# cat /var/log/secure
发现有如下的记录:
Feb 25 11:43:21 ryan proftpd[23776]: ryan (124.89.91.57[124.89.91.57]) - USER ftp_wordpress: no such user d from 124.89.91.57 [124.89.91.57] to ::ffff:172.31.71.42:21
显示没有 ftp_wordpress 用户,可是上面明明创建了 ftp_wordpress 虚拟用户,原来是因为 proftpd 应用程序导致的,proftpd 也是一款 FTP 服务端程序,由于自己在服务器上搭建 xampp 时,xampp 集成包中带了这个 proftpd 程序,当启动 xampp 时,proftpd 也启动了,并且占用了服务器的 21 端口。所以此时,在服务器中启动的 FTP 服务器程序是 proftpd,而不是我们安装的 pure-ftpd,ftp_wordpress 用户也是在 pure-ftpd 中创建的,但 proftpd 中并不存在该用户,所以会出现没有 ftp_wordpress 用户。
我们可以通过如下命令验证:
先查看 21 端口是否开启:
[root@ryan ~]# netstat -an | grep 21
然后查看 proftpd 进程:
[root@ryan ~]# ps -aux | grep proftpd
可以查看到该进程的 PID,比如 19466
但是,通过 ps 及 top 命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等。这时,我们需要通过以下的方法来查看进程的详细信息:
Linux 在启动一个进程时,系统会在 /proc下创建一个以 PID 命名的目录,该目录是系统内存的映射目录,提供内核与进程信息,其中包括一个名为 exe 的文件即记录了绝对路径,通过 ll 或 ls –l 命令即可查看:
[root@ryan ~]# ls -l /proc/PID
……
lrwxrwxrwx 1 root root 0 Feb 24 22:55 exe -> /opt/lampp/sbin/proftpd
……
通过查看到该进程的绝对路径,发现 proftpd 确实是 xampp 所带的组件。
说明:
cwd 符号链接的是进程运行目录;
exe 符号连接就是执行程序的绝对路径;
cmdline 就是程序运行时输入的命令行命令;
environ 记录了进程运行时的环境变量;
fd 目录下是进程打开或使用的文件的符号连接。
解决方法:
自己手动停掉 profptd(对应的启动命令为:[root@ryan ~]# /opt/lampp/lampp startftp):
[root@ryan ~]# /opt/lampp/lampp stopftp
XAMPP: Stopping ProFTPD...ok.
启动我们新搭建的 pure-ftpd:
[root@ryan pure-ftpd-1.0.47]# /usr/local/pureftpd/sbin/pure-ftpd /usr/local/pureftpd/etc/pure-ftpd.conf
然后在本地使用 FTP 客户端工具再次连接远程服务器,发现可以正常连接了,此时启动的 FTP 服务器端程序是 pure-ftpd。
CentOS7 安装 Pure-ftpd的更多相关文章
- CentOS7 安装 vsftpd 服务
CentOS7 安装 vsftpd 服务 0.FTP简介 FTP服务是一个跨平台的文件共享解决方案 0.1.FTP两种模式的区分:服务端的主被动模式 1)ftp一般分为两种模式,PORTFTP和PAS ...
- HP服务器 hp 360g5 centos7安装问题
HP服务器 hp 360g5 centos7安装问题 一 :启动盘无法识别硬盘 1.进入安装光盘,用上下键选择安装centos--Install Centos7(注意不可按Enter键),如图: 2 ...
- CentOS7 安装Mono及Jexus
CentOS7安装Mono及Juxes 1 安装Mono 1.1 安装yum-utils 因为安装要用到yum-config-manager,默认是没有安装的,所以要先安装yum-utils包.命令如 ...
- CentOS7安装mysql提示“No package mysql-server available.”
针对centos7安装mysql,提示"No package mysql-server available."错误,解决方法如下: Centos 7 comes with Mari ...
- CentOS7安装Oracle 11gR2 安装
概述 Oracle 在Linux和window上的安装不太一样,公司又是Linux系统上的Oracle,实在没辙,研究下Linux下Oracle的使用,oracle默认不支持CentOS系统安装,所以 ...
- Centos7安装完毕后重启提示Initial setup of CentOS Linux 7 (core)的解决方法
问题: CentOS7安装完毕,重新开机启动后显示: Initial setup of CentOS Linux 7 (core) 1) [x] Creat user 2) [!] License i ...
- centos7安装eclipse
centos7安装eclipse Eclipse是一个集成开发环境(IDE),包含一个基工作区和定制环境的可扩展插件系统.大部分使用 Java 编写,Eclipse 可以用来开发应用程序.通过各种插件 ...
- CentOS7安装mongoDB数据库
CentOS7安装mongoDB数据库 时间:2015-03-03 16:45来源:blog.csdn.net 作者:进击的木偶 举报 点击:8795次 mongoDB是目前发展比较好的NOSQL数据 ...
- CentOS7安装Ambari
环境: CentOS7安装两个节点:master.slave1.并配置ssh无密码登录. 步骤: 获取 Ambari 的公共库文件(public repository): wget http://pu ...
- [CentOs7]安装mysql(2)
摘要 之前安装过一次mysql,最后配置,发现在本地无法连接,重启服务的时候一直卡在那里不动,感觉是安装的过程出问题,最后没办法还是卸载了,然后重新安装一下. [CentOs7]安装mysql Mys ...
随机推荐
- 2019牛客暑期多校训练营(第十场)F-Popping Balloons
>传送门< 题意:现在给你n个点 ,让你横着划三条线间距为r 然后竖着划三条线间距同样为r ,求经过最多的点数 思路:比赛看到这题的时候觉得能做,但是一看时间限制是5s,搞得我有不敢去碰了 ...
- 源码分析Retrofit请求流程
Retrofit 是 square 公司的另一款广泛流行的网络请求框架.前面的一篇文章<源码分析OKHttp执行过程>已经对 OkHttp 网络请求框架有一个大概的了解.今天同样地对 Re ...
- application.yml 增加数据库连接,重启日志卡死
SpringBoot引入JPA,application.ymlapplication.yml增加数据库链接参数,启动卡死,日志没有动,如下图 折腾好久,后面发现用 Maven的package 过程中 ...
- MySQL数据库安装步骤
目录 MySQL数据库安装 MySQL数据库安装 MySQL Windows下载地址:https://dev.mysql.com/downloads 我们这里选择5.6.45版本下载,下载zip. 点 ...
- java.lang.Thread类详解
java.lang.Thread类详解 一.前言 位于java.lang包下的Thread类是非常重要的线程类,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前 ...
- Leetcode之回溯法专题-51. N皇后(N-Queens)
Leetcode之回溯法专题-51. N皇后(N-Queens) n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给 ...
- MSIL实用指南-生成内部类
生成内部类用TypeBuilder的DefineNestedType方法,得到另一个TypeBuilder.内部类的可访问性都是TypeAttributes的“Nested”开头一些成员.实例代码:y ...
- MySQL运行时自动生成的性能相关的数据参考
某大师曾说过,一个DBA要像熟悉自己的老婆一样熟悉自己的数据库,个人认为包含了两个方面的熟悉: 1,在稳定性层面来说,更多的是关注高可用.读写分离.负载均衡,灾备管理等等high level层面的 ...
- Python——面向对象编程
面向对象编程是一种程序设计思想,把对象作为程序的基本单元,一个对象里面包含了数据以及操作数据的方法,称为类的属性和方法. 基础-定义.实例化.实例属性 用class来定义对象,类名首字母大写,如果这个 ...
- C#开发BIMFACE系列10 服务端API之获取文件下载链接
系列目录 [已更新最新开发文章,点击查看详细] 通过BIMFACE控制台或者调用服务接口上传文件成功后,默认场景下需要下载该源文件,下载文件一般需要知道文件的下载链接即可.BIMACE平台提供 ...