CentOS7 安裝 Pure-ftpd

博客地址:http://www.moonxy.comlinux

1、摘要數據庫

FTP 是 File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱爲"文傳協議」。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不一樣的操做系統有不一樣的FTP應用程序,而全部這些應用程序都遵照同一種協議以傳輸文件。在FTP的使用當中,用戶常常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠程主機拷貝文件至本身的計算機上;"上傳"文件就是將文件從本身的計算機中拷貝至遠程主機上。用Internet語言來講,用戶可經過客戶機程序向(從)遠程主機上傳(下載)文件。vim

目前 FTP 軟件有不少,但整體上分爲 FTP Client 客戶端 和 FTP Server 服務端,其中 PureFTPd 是一款專一於程序健壯和軟件安全的免費 FTP 服務器軟件(基於 BSD License)。其能夠在多種類Unix操做系統中編譯運行,包括 Linux、OpenBSD、NetBSD、FreeBSD、DragonFly BSD、Solaris、Tru6四、Darwin、Irix and HP-UX。PureFTPd 還有 Android 移植版本。安全

2、下載並安裝 Pure-ftpd服務器

可使用 yum 安裝或者源碼包安裝,源碼包安裝的優勢是能夠自由選擇安裝的軟件版本,yum 安裝時倉庫的版本通常都是固定的某一個版本,沒法自由選擇。wordpress

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

3、使用 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

4、配置服務器段安全組規則

因爲本人使用的是阿里雲的 ECS 服務器,服務器默認不開放 FTP 的 21 端口,本身在安全組規則中添加放行相應端口,因爲在使用 FTP 過程當中不只僅會用到 21 端口,可能還會用到其餘端口,因此此處咱們放行 20/21,1024/65535,以下:

5、本地使用 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。

相關文章
相關標籤/搜索