一、摘要FTP 是 File Transfer Protocol(文件傳輸協(xié)議)的英文簡(jiǎn)稱,而中文簡(jiǎn)稱為"文傳協(xié)議”。用于Internet上的控制文件的雙向傳輸。同時(shí),它也是一個(gè)應(yīng)用程序(Application)。基于不同的操作系...
一、摘要
FTP 是 File Transfer Protocol(文件傳輸協(xié)議)的英文簡(jiǎn)稱,而中文簡(jiǎn)稱為"文傳協(xié)議”。用于Internet上的控制文件的雙向傳輸。同時(shí),它也是一個(gè)應(yīng)用程序(Application)。基于不同的操作系統(tǒng)有不同的FTP應(yīng)用程序,而所有這些應(yīng)用程序都遵守同一種協(xié)議以傳輸文件。在FTP的使用當(dāng)中,用戶經(jīng)常遇到兩個(gè)概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠(yuǎn)程主機(jī)拷貝文件至自己的計(jì)算機(jī)上;"上傳"文件就是將文件從自己的計(jì)算機(jī)中拷貝至遠(yuǎn)程主機(jī)上。用Internet語(yǔ)言來(lái)說(shuō),用戶可通過(guò)客戶機(jī)程序向(從)遠(yuǎn)程主機(jī)上傳(下載)文件。
目前 FTP 軟件有很多,但總體上分為 FTP Client 客戶端 和 FTP Server 服務(wù)端,其中 PureFTPd 是一款專注于程序健壯和軟件安全的免費(fèi) FTP 服務(wù)器軟件(基于 BSD License)。其可以在多種類Unix操作系統(tǒng)中編譯運(yùn)行,包括 Linux、OpenBSD、NetBSD、FreeBSD、DragonFly BSD、Solaris、Tru64、Darwin、Irix and HP-UX。PureFTPd 還有 Android 移植版本。
二、下載并安裝 Pure-ftpd
可以使用 yum 安裝或者源碼包安裝,源碼包安裝的優(yōu)點(diǎn)是可以自由選擇安裝的軟件版本,yum 安裝時(shí)倉(cāng)庫(kù)的版本一般都是固定的某一個(gè)版本,無(wú)法自由選擇。
2.1 yum 安裝
默認(rèn)的 yum 源沒(méi)有提供 pure-ftpd,需要先安裝 epel 擴(kuò)展源:
# yum install epel-release
然后使用 yum 命令安裝Pure-ftpd:
# yum install pure-ftpd
2.2 源碼包安裝
訪問(wèn) pure-ftpd 官方網(wǎng)站:
https://download.pureftpd.org/pub/pure-ftpd/releases/,當(dāng)前最新版本為 1.0.47。
進(jìn)入到要下載的目錄:
[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
進(jìn)入解壓后的目錄:
[root@ryan src]# cd pure-ftpd-1.0.47
通過(guò)設(shè)置不同的參數(shù),定制相應(yīng)的功能,生成 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
注意:
我們?cè)谶@里可能會(huì)遇到錯(cuò)誤,在配置之后系統(tǒng)會(huì)提示:configure: error: OpenSSL headers not found.
解決方法是:
yum install -y openssl openssl-devel,如果找不到這兩個(gè)包,則需要安裝 yum 的擴(kuò)展源:yum install -y epel-release
注意:不要隨意修改域名解析文件 /etc/resolv.conf,否則可能導(dǎo)致 yum 源地址無(wú)法解析,而出現(xiàn) [Errno 256] No more mirrors to try 。
/etc/resolv.conf 是 DNS 客戶機(jī)配置文件,用于設(shè)置 DNS 服務(wù)器的 IP 地址及 DNS 域名,還包含了主機(jī)的域名搜索順序。該文件是由域名解析 器(resolver,一個(gè)根據(jù)主機(jī)名解析IP地址的庫(kù))使用的配置文件。它的格式很簡(jiǎn)單,每行以一個(gè)關(guān)鍵字開(kāi)頭,后接一個(gè)或多個(gè)由空格隔開(kāi)的參數(shù)。
成功后出現(xiàn)如下所示:
編譯并安裝:
[root@ryan pure-ftpd-1.0.47]# make && make install
驗(yàn)證上一步是否執(zhí)行成功:
[root@ryan pure-ftpd-1.0.47]# echo $?
0
這里返回值是"0"說(shuō)明執(zhí)行成功,否則就是沒(méi)有成功。
2.3 修改配置文件
/usr/local/pureftpd/etc/pure-ftpd.conf
MinUID 100 #如果這個(gè)數(shù)字比較小,就把它調(diào)大一點(diǎn),否則如果建的用戶的uid比這個(gè)數(shù)字小,會(huì)報(bào)“530 Login authentication failed”錯(cuò)誤
AnonymousOnly no #只允許匿名用戶登錄。
NoAnonymous yes #不允許匿名用戶登錄
ProhibitDotFilesWrite no #不能刪除/寫入隱藏文件。如果ftp目錄內(nèi)有隱藏文件的話,改為yes。
ProhibitDotFilesRead no #禁止讀取隱藏文件。如果ftp目錄內(nèi)有隱藏文件的話,改為yes。
PureDB /etc/pure-ftpd/pureftpd.pdb #用戶數(shù)據(jù)庫(kù)文件。我建好ftp之后這行配置默認(rèn)是被注釋掉的,所以我登錄ftp一直報(bào)錯(cuò)“530 Login authentication failed”。因?yàn)闆](méi)有啟用用戶數(shù)據(jù)庫(kù)文件,ftp讀取不到用戶,所以這行一定要啟用
PassivePortRange #端口放開(kāi),一般寫到48000 50000
注意:如果你是騰訊云那在ForcePassiveIP加入你的IP
如果你不會(huì)配,你可以點(diǎn)擊下載我的參考:
地址:https://download.csdn.net/download/weicheshen2008/10748758
三、使用 pure-ftpd
啟動(dòng) pure-ftpd:
[root@ryan pure-ftpd-1.0.47]# /usr/local/pureftpd/sbin/pure-ftpd /usr/local/pureftpd/etc/pure-ftpd.conf
創(chuàng)建系統(tǒng)用戶:
useradd groupftp
創(chuàng)建目錄
[root@ryan pure-ftpd-1.0.47]# mkdir wwwwroot
更改所屬主和所屬組:
chown -R groupftp:groupftp /usr/local/pureftpd/wwwwroot
創(chuàng)建ftp用戶,注意ftp用戶是虛擬用戶。
/usr/local/pureftpd/bin/pure-pw useradd jsedu114 -u groupftp -d /usr/local/pureftpd/wwwwroot
此時(shí)會(huì)出現(xiàn)為該ftp新用戶創(chuàng)建密碼的提示:
Password:xxxxxx
Enter it again:xxxxxx
其中,-u選項(xiàng)將虛擬用戶jsedu114與系統(tǒng)用戶groupftp關(guān)聯(lián)在一起,即使用ftp_wordpress賬號(hào)登錄FTP后,會(huì)以groupftp的身份來(lái)讀取和下載文件,-d選項(xiàng)后面的目錄為jsedu114賬戶的家目錄,這樣可以使ftp_wordpress只能訪問(wèn)其家目錄 /usr/local/pureftpd/wwwwroot
創(chuàng)建用戶信息數(shù)據(jù)庫(kù)文件:
/usr/local/pureftpd/bin/pure-pw mkdb
查看用戶列表:
/usr/local/pureftpd/bin/pure-pw list
顯示如下:
jsedu114 /usr/local/pureftpd/wwwwroot
刪除賬號(hào)的命令為:
/usr/local/pureftpd/bin/pure-pw userdel jsedu114
將pureftpd加入到系統(tǒng)進(jìn)程
echo "/usr/pure-ftpd/pure-ftpd-1.0.48/sbin/pure-ftpd /usr/pure-ftpd/pure-ftpd-1.0.48/etc/pure-ftpd.conf" >> /etc/rc.local
驗(yàn)證安裝:
netstat -tunlp
就可以看到進(jìn)程了,如果想殺到可以pkill -9 pure^
四、配置服務(wù)器段安全組規(guī)則
由于本人使用的是阿里云的 ECS 服務(wù)器,服務(wù)器默認(rèn)不開(kāi)放 FTP 的 21 端口,自己在安全組規(guī)則中添加放行相應(yīng)端口,由于在使用 FTP 過(guò)程中不僅僅會(huì)用到 21 端口,可能還會(huì)用到其他端口,所以此處我們放行 20/21,1024/65535,如下:
五、本地使用 FTP 客戶端測(cè)試
FTP 客戶端工具也有很多,個(gè)人比較喜歡 FileZilla,中文版下載地址:https://www.filezilla.cn/
但是自己在連接測(cè)試的過(guò)程中發(fā)現(xiàn)一直本地的 FTP 客戶端工具一直連接不上外網(wǎng)的遠(yuǎn)程 linux 服務(wù)器,查看相應(yīng)的日志記錄:
[root@ryan ~]# cat /var/log/messages
沒(méi)有發(fā)現(xiàn)可用的日志,然后查看了:
[root@ryan ~]# cat /var/log/secure
發(fā)現(xiàn)有如下的記錄:
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
顯示沒(méi)有 ftp_wordpress 用戶,可是上面明明創(chuàng)建了 ftp_wordpress 虛擬用戶,原來(lái)是因?yàn)?proftpd 應(yīng)用程序?qū)е碌模琾roftpd 也是一款 FTP 服務(wù)端程序,由于自己在服務(wù)器上搭建 xampp 時(shí),xampp 集成包中帶了這個(gè) proftpd 程序,當(dāng)啟動(dòng) xampp 時(shí),proftpd 也啟動(dòng)了,并且占用了服務(wù)器的 21 端口。所以此時(shí),在服務(wù)器中啟動(dòng)的 FTP 服務(wù)器程序是 proftpd,而不是我們安裝的 pure-ftpd,ftp_wordpress 用戶也是在 pure-ftpd 中創(chuàng)建的,但 proftpd 中并不存在該用戶,所以會(huì)出現(xiàn)沒(méi)有 ftp_wordpress 用戶。
我們可以通過(guò)如下命令驗(yàn)證:
先查看 21 端口是否開(kāi)啟:
[root@ryan ~]# netstat -an | grep 21
然后查看 proftpd 進(jìn)程:
[root@ryan ~]# ps -aux | grep proftpd
可以查看到該進(jìn)程的 PID,比如 19466
但是,通過(guò) ps 及 top 命令查看進(jìn)程信息時(shí),只能查到相對(duì)路徑,查不到的進(jìn)程的詳細(xì)信息,如絕對(duì)路徑等。這時(shí),我們需要通過(guò)以下的方法來(lái)查看進(jìn)程的詳細(xì)信息:
Linux 在啟動(dòng)一個(gè)進(jìn)程時(shí),系統(tǒng)會(huì)在 /proc下創(chuàng)建一個(gè)以 PID 命名的目錄,該目錄是系統(tǒng)內(nèi)存的映射目錄,提供內(nèi)核與進(jìn)程信息,其中包括一個(gè)名為 exe 的文件即記錄了絕對(duì)路徑,通過(guò) ll 或 ls –l 命令即可查看:
[root@ryan ~]# ls -l /proc/PID
……
lrwxrwxrwx 1 root root 0 Feb 24 22:55 exe -> /opt/lampp/sbin/proftpd
……
通過(guò)查看到該進(jìn)程的絕對(duì)路徑,發(fā)現(xiàn) proftpd 確實(shí)是 xampp 所帶的組件。
說(shuō)明:
cwd 符號(hào)鏈接的是進(jìn)程運(yùn)行目錄;
exe 符號(hào)連接就是執(zhí)行程序的絕對(duì)路徑;
cmdline 就是程序運(yùn)行時(shí)輸入的命令行命令;
environ 記錄了進(jìn)程運(yùn)行時(shí)的環(huán)境變量;
fd 目錄下是進(jìn)程打開(kāi)或使用的文件的符號(hào)連接。
解決方法:
自己手動(dòng)停掉 profptd(對(duì)應(yīng)的啟動(dòng)命令為:[root@ryan ~]# /opt/lampp/lampp startftp):
[root@ryan ~]# /opt/lampp/lampp stopftp
XAMPP: Stopping ProFTPD...ok.
啟動(dòng)我們新搭建的 pure-ftpd:
[root@ryan pure-ftpd-1.0.47]# /usr/local/pureftpd/sbin/pure-ftpd /usr/local/pureftpd/etc/pure-ftpd.conf
然后在本地使用 FTP 客戶端工具再次連接遠(yuǎn)程服務(wù)器,發(fā)現(xiàn)可以正常連接了,此時(shí)啟動(dòng)的 FTP 服務(wù)器端程序是 pure-ftpd。
來(lái)源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺(tái),并已注明來(lái)源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)聯(lián)系小編,我們會(huì)及時(shí)審核處理。
聲明:江蘇教育黃頁(yè)對(duì)文中觀點(diǎn)保持中立,對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對(duì)文章觀點(diǎn)負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺(tái)保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號(hào)-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司
南京思必達(dá)教育科技有限公司版權(quán)所有 百度統(tǒng)計(jì)