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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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 pure-ftp
更改所属主和所属组:
chown -R pure-ftp: pure-ftp /data0/www/www.***.com
创建ftp用户,注意ftp用户是虚拟用户。
/usr/local/pureftpd/bin/pure-pw useradd ftp_test -u pure-ftp -d /data0/www/www.***.com
此时会出现为该ftp新用户创建密码的提示:
Password:xxxxxx
Enter it again:xxxxxx
其中,-u选项将虚拟用户ftp_test与系统用户 pure-ftp关联在一起,即使用ftp_test账号登录FTP后,会以 pure-ftp的身份来读取和下载文件,-d选项后面的目录为ftp_test账户的根目录,这样可以使ftp_test只能访问其根目录/data0/www/www.***.com
注意:一般情况下web网站的系统用户为www,为了保障ftp上传修改的文件和目录能够不影响网站系统的使用权限,可以把上面提到的pure-ftp改为www。这样ftp上传到服务器的文件属性就是www了。
创建用户信息数据库文件:
/usr/local/pureftpd/bin/pure-pw mkdb
查看用户列表:
/usr/local/pureftpd/bin/pure-pw list
显示如下:
ftp_test /data0/www/www.***.com/./
删除账号的命令为:
/usr/local/pureftpd/bin/pure-pw userdel ftp_test