ftp簡介:
ftp:File Transfer Protocol,文件傳輸協議;FTP是應用層協議,使用C/S架構,工做於20/tcp,21/tcp。
FTP使用交互式訪問模式,兩個並行TCP鏈接,一個控制鏈接,一個數據鏈接,控制鏈接用於在客戶機和服務器之間發送控制信息,好比用戶和密碼,改變遠程目錄和命令,上傳下載文件等,數據鏈接用於真正發送數據。ftp有兩種工做模式,主動模式(Active),被動模式(Passive)。
數據:
命令鏈接:文件管理類命令,始終在線的鏈接
數據鏈接:數據傳輸,按需建立及關閉的鏈接
數據傳輸格式:
文本傳輸
二進制傳輸
經常使用ftp工具:
Server:wu-ftpd,proftpd,pureftod,vsftpd(Very Secure),ServU;
Client:ftp,lftp(lftpget),wget,curl,filezilla,gftp(Linux GUI),flashfxp,cuteftp;
相應碼:
1xx:信息
2xx:成功類的狀態嗎
3xx:提示需進一步提供補充類信息的狀態碼
4xx:客戶端錯誤
5xx:服務端錯誤
兩種模式:
主動模式:
一、客戶端隨機端口N/tcp向ftp服務器21/tcp端口發送鏈接請求,tcp三次握手創建控制鏈接;
二、客戶端告知ftp服務器N+1/tcp端口用於數據傳輸;
三、ftp服務器20/tcp端口向N+1/tcp端口發送請求創建數據鏈接;
被動模式:
一、客戶端隨機端口N/tcp向ftp服務器21/tcp端口發送鏈接請求,tcp三次握手創建控制鏈接;
二、ftp服務器告知客戶端隨機X/tcp用於數據傳輸;
三、客戶端經過N+1/tcp端口向ftp服務器X/tcp端口發送請求創建數據鏈接;
Vsftpd服務安裝配置:
# yum install vsftpd
# rpm -ql vsftpd :安裝vsftpd生成文件:
# /etc/pam.d/vsftpd :用戶認證配置文件;
# /etc/rc.d/init.d/vsftpd :服務腳本;
# /etc/vsftpd :配置文件目錄;
# vsftpd.conf :主配置文件;
# /usr/sbin/vsftpd :主應用程序;
ftp服務的用戶有三類:
系統用戶:即服務器系統中存在的用戶,其默認訪問的資源位置爲該用戶的家目錄;
匿名用戶:不須要帳號和密碼便可登錄的用戶,此類用戶會被映射爲一個系統用戶ftp,默認訪問資源爲ftp用戶的家目錄:/vat/ftp ;
虛擬用戶:此類用戶在ftp服務器中建立,會映射爲一個系統用戶;
配置文件詳解:
# vim /etc/vsftpd/vsftpd.conf
匿名用戶配置:
> anonymous_enable=YES|NO :是否容許登錄;
> anon_mkdir_write_enable=YES|NO :是否容許上傳;
> anon_ohter_write_enable=YES|NO :是否容許刪除文件
注意:開啓以上選項後,客戶端使用匿名用戶登錄,對/var/ftp目錄仍沒法上傳文件,須要在系統中爲ftp用戶添加對目錄的權限;處於安全考慮可在/var/ftp建立專門用於上傳的目錄,並添加權限;
# cd /var/ftp/
# mkdir upload
# setfacl -R -m u:ftp:rwx upload/
系統用戶配置:
> local_enable=YES|NO :是否容許登錄;
> write_enable=YES|NO :是否容許上傳;
> local_umask=022 :上傳文件默認權限,與系統umask無關;
> chroot_local_user=YES|NO :是否禁錮全部的ftp本地用戶於其家目錄中;
> chroot_list_enable=YES|NO :是否禁錮文件中指定的ftp本地用戶於其家目錄中;
> chroot_list_file=/etc/vsftpd/chroot_list :禁錮用戶文件路徑;
> dirmessage_enable=YES|BO :用戶登陸服務器看到信息;
注意:因爲是系統用戶登陸,此類用戶可訪問其餘的目錄,能夠經過禁錮選項將系統用戶禁錮在其家目錄中。
日誌選項:
> xferlog_enable=YES|NO :是否開啓;
> xferlog_std_format=YES|NO :標準格式;
> xferlog_file=/var/log/xferlog :日誌位置;
改變上傳文件的屬主:
> chown_uploads=YES|NO :是否改變上傳文件的屬主;
> chown_username=whoever :上傳文件的屬主;
控制用戶登陸:
> userlist_enable=YES|NO :是否啓用控制用戶登陸的列表文件;
> userlist_deny=YES|NO :YES黑名單,NO白名單;默認名單文件爲:/etc/vsftpd/user_list;
鏈接限制:
> max_clients= :最大併發鏈接數;
> max_per_ip= :每一個IP可同時發起的併發請求數;
傳輸速率:
> anon_max_rate= :匿名用戶的最大傳輸速率, 單位是「字節/秒」;
> local_max_rate= :本地用戶的最大傳輸速率
vsftpd使用pam完成用戶認證,其用到pam
> pam_service_name=vsftpd
虛擬用戶:
全部的虛擬用戶會被統一映射爲一個指定的系統帳號,訪問的共享位置即爲此係統帳號的家目錄;各虛擬用戶可被賦予不一樣的訪問權限;經過匿名用戶的權限控制參數進行指定;
用戶認證:
虛擬用戶:僅用於訪問某特定服務中的資源;
nsswitch:networkserver switch,名稱解析框架;
配置文件:/etc/nsswitch.conf
模塊:/lib64/libnss*,/usr/lib64/libnss*
pam:pluggableauthentication module,用戶認證框架;
模塊:/lib64/security/
配置文件:/etc/pam.conf,/etc/pam.d/*
虛擬用戶帳號的存儲方式:
文件:編輯文件
奇數行爲用戶名
偶數行爲密碼
此文件須要被編碼爲hash格式;
關係型數據庫中的表中:即時查詢數據庫完成用戶認證;
mysql庫:pam要依賴於pam_mysql
# yum install pam_mysql
注意:pam_mysql來自於epel源;
若是想深刻體驗LINUX系統的新手,也能夠先下載一個方德Linux軟件中心試用一下。
免費下載地址:http://www.nfs-cloud.cn:81/appCenter/open/softcentermysql