如果我們有三台主機在一個環境中,需要将不同主機上的檔案拷貝到不同主機上,如果拷貝到u盤中,然後再一個一個的拷貝,顯然這樣降低了工作效率,如果可以将某個主機共享内容,然後每個主機連接配接,這樣就降低了時間成本,ftp就幫我們解決了這個問題。
一、ftp
用于internet上的控制檔案的雙向傳輸。同時,它也是一個應用程式(application)。基于不同的作業系統有不同的ftp應用程式,而所有這些應用程式都遵守同一種協定以傳輸檔案。在ftp的使用當中,使用者經常遇到兩個概念:"下載下傳"(download)和"上傳"(upload)。"下載下傳"檔案就是從遠端主機拷貝檔案至自己的計算機上;"上傳"檔案就是将檔案從自己的計算機中拷貝至遠端主機上。

client(port/tcp)向server(22/tcp)發送連接配接請求,建立三次握手
client告知server資料連接配接端口為port+1
server(20/tcp)主動向client發送連接配接請求,建立資料通信。
client(port/tcp)和server建立三次握手
client向server發起passive請求
server告知client資料端口
client(port+1/tcp)再次向server發送資料連接配接請求
這裡需要注意一下,server資料端口需要計算得出來的一個随機端口号
示例:
tcp三次握手過程
被動模式下通信過程,産生随機端口通信。
1xx
資訊
2xx
成功類響應碼
3xx
提示需進一步提供補充類資訊的狀态碼
4xx
用戶端錯誤
5xx
伺服器端錯誤
匿名使用者:ftp,anonymous,對應linux使用者為ftp
匿名使用者映射為ftp使用者共享資源位置:<code>/var/ftp/pub</code>
系統使用者:linux使用者,使用者/etc/passwd,密碼/etc/shadow
系統使用者通過ftp通路的資源的位置:使用者自己的家目錄
虛拟使用者:特定服務的專用使用者,獨立于使用者/密碼的檔案;僅用于通路某特定功能的資源
虛拟使用者通過ftp通路資源的位置:給虛拟使用者指定的映射成系統使用者的家目錄
二、vsftpd服務
使用者認證配置檔案
服務腳本
配置檔案
匿名了使用者配置
系統使用者配置
日志
改變上傳檔案的所有者
歡迎資訊
vsftpd使用pam完成認證使用的pam配置檔案
是否啟用控制使用者登入的清單檔案
連接配接限制
傳輸速率
-主動模式端口
被動模式端口
是否使用當地時間,即系統時間
連接配接時間
-優先以文本傳輸
注意:vsftpd預設不允許直接修改根目錄權限。
(1)修改<code>/etc/vsftpd/vsftpd.conf</code>
(2)安裝xinetd服務
<code>[root@localhost ~]# yum install -y xinetd</code>
(3)複制模闆并修改啟動xinetd服務
<code>[root@localhost xinetd.d]# cp rsync vsftpd</code> <code>[root@localhost xinetd.d]# vim vsftpd</code>
<code>[root@localhost xinetd.d]# service xinetd restart</code>
(4)驗證是否成為非獨立服務
<code>[root@localhost xinetd.d]# ss -tnl</code>
(1)确認是否支援ssl
<code>[root@localhost ~]# ldd</code>which vsftpd<code>|grep ssl</code>
(2)建立證書
<code>[root@localhost/etc/pki/tls/certs]#make vsftpd.pem</code> <code>[root@localhost/etc/pki/tls/certs]#openssl x509 -in vsftpd.pem -noout -text</code> #檢視證書内容 <code>[root@localhost/etc/pki/tls/certs]#mv vsftpd.pem /etc/vsftpd/</code> #将證書移動至此目錄下友善管理
(3)配置vsftpd服務支援ssl
<code>[root@localhost~]#vim /etc/vsftpd/vsftpd.conf</code> #在檔案下追擊如下幾行
(4)測試是否使用加密傳輸
<code>[root@localhost ~]# ftp 192.168.4.60</code>
使用fileilla工具測試
三、vsftpd虛拟使用者
所有虛拟使用者會被統一映射為一個指定的系統賬号,通路的共享位置即此系統賬号的目錄;
每個虛拟使用者可被賦予不同的通路權限,通過匿名使用者的權限控制參數進行指定;
文本存儲:編輯文本檔案,此檔案需要被編碼為hash格式
格式:奇數行為賬戶,偶數行為密碼
不過需要對此檔案加密,使用的工具為db_load
存儲在關系型資料庫表中,可以實作查詢資料庫完成使用者認證
四、實作不同方式存儲的方式
(1)建立使用者并寫入一個文本檔案中
<code>[root@localhost/etc/vsftpd]#vim vusers</code>
(2)建立使用者資料庫檔案
<code>[root@localhost/etc/vsftpd]#db_load -t -t hash -f vusers vusers.db</code> <code>[root@localhost/etc/vsftpd]#chmod 600 vusers.db</code> #修改檔案權限
(3)建立使用者和通路的目錄 <code>[root@localhost~]#useradd -s /sbin/nologin -d /app/ftproot vuser</code>
<code>[root@localhost~]#chmod +rx /app/ftproot/</code> <code>[root@localhost~]#chmod -w /app/ftproot/</code> #由于centos 7 上不允許系統使用者直接修改家目錄所有需要去掉此權限 <code>[root@localhost~]#mkdir /app/ftproot/upload</code> <code>[root@localhost~]#setfacl -m u:vuser:rwx /app/ftproot/upload/</code>
(4)建立pam配置檔案
<code>[root@localhost~]#ls /usr/lib64/security/ |grep userdb</code> #檢視是否已有此子產品
<code>[root@localhost/etc/pam.d]#vim vsftpd.db</code>
(5)建立虛拟使用者獨立的配置檔案
<code>[root@localhost/etc/vsftpd]#mkdir vdocs</code> <code>[root@localhost/etc/vsftpd]#cd vdocs/</code> <code>[root@localhost/etc/vsftpd/vdocs]#vim wang</code>
<code>[root@localhost/etc/vsftpd/vdocs]#vim joah</code>
注意:預設不建立使用者檔案,隻有下載下傳權限。
(6)修改<code>/etc/vsftpd/vsftpd.conf</code>檔案
(7)測試
centos7 環境
(1)編譯安裝pam_mysql,提供pam_mysql.so子產品
<code>[root@localhost/usr/local/src/pam_mysql-0.7rc1]#yum install -y mariadb-devel pam-devel</code><code>[root@localhost/usr/local/src/pam_mysql-0.7rc1]#./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security</code><code>[root@localhost/usr/local/src/pam_mysql-0.7rc1]#make && make install</code>
(2)準備資料庫和相關表
<code>[root@localhost~]#mysql -uroot -p</code>
<code>[root@localhost~]#useradd -d /app/ftproot -s /sbin/nologin ftpuser</code> <code>[root@localhost~]#chmod 555 /app/ftproot/</code> #修改目錄權限,因為centos7中預設不允許父目錄有寫權限
(3)添加虛拟使用者
(4)建立pam認證所需檔案
<code>[root@localhost~]#vim /etc/pam.d/vsftpd.mysql</code>
1 auth reuqired pam_mysql.so user=ftpuser passwd=123456 host=localhost db=ftpdb table=vu ser usercolumn=username passwdcolumn=password crypt 2
2 account reuqired pam_mysql.so user=ftpuser passwd=123456 host=localhost db=ftpdb table =vuser usercolumn=username passwdcolumn=password crypt 2
(5)建立虛拟使用者配置檔案
<code>[root@localhost/etc/vsftpd]#mkdir vdocs</code>
<code>[root@localhost/etc/vsftpd]#cd vdocs/</code>
<code>[root@localhost/etc/vsftpd/vdocs]#vim li</code>
(6)修改<code>/etc/vsftpd/vsftpd.conf</code>
在配置檔案中添加如下内容
(7)重新開機服務并測試
五、ftp工具
axel是 linux 下一個不錯的http/ftp高速下載下傳工具。支援多線程下載下傳、斷點續傳,且可以從多個位址或者從一個位址的多個連接配接來下載下傳同一個檔案。适合網速不給力時多線程下載下傳提高下載下傳速度