NFS,SAMBA都是基於RPC的網絡文件系統,用戶能夠掛載共享目錄到本地來使用,與本地磁盤分區上的文件系統使用方式無區別。
FTP是不用RPC而基於C/S模式來運行的7層協議,提供文件傳輸服務。vim
一 兩種工做模式windows
主動模式:服務端命令鏈接監聽在端口21,數據鏈接使用端口20。客戶端經過某個本地端口(如12340)去鏈接服務端,服務端經過21端口接收客戶端的命令。當有數據傳輸時客戶端又再打開一個本地端口12340+1(如這個端口已被佔用,再+1)並通知服務端,服務端使用20端口主動去請求鏈接客戶端新打開的端口,完成數據傳輸。安全
被動模式:服務端命令鏈接監聽在端口21。客戶端經過某個本地端口(如12340)去鏈接服務端,服務端經過21端口接收客戶端的命令。當有數據傳輸需求時,服務端打開一個隨機端口並通知客戶端(服務端會發送兩個數字如[123,31],客戶端經過計算123*256+31的結果得知端口號),而後客戶端再打開一個本地端口12340+1(如這個端口已被佔用,再+1)去請求鏈接服務端打開的隨機端口,完成數據傳輸。因爲每次數據鏈接端口都是隨機的,因此也就有了多用戶同時下載功能。bash
客戶端爲了網絡安全都有防火牆,通常不會容許外部的鏈接請求,從而致使主動模式的ftp數據傳輸失敗。服務器工做於被動模式下的同時使用防火牆的鏈接追蹤功能能夠避免這個問題。服務器
二 數據傳輸格式
流式化數據有兩種形式:文本格式/二進制格式。
不能流式化的數據不能經過網絡發送,也不能存儲到文件中(文件就是文件流)。
ftp能傳輸文本格式和二進制格式的數據。http傳輸二進制數據的功能,是基於mime協議以base64編碼二進制格式數據爲文本格式後再傳輸的。
數據傳輸安全
sftp(基於ssh協議)
ftps(基於ssl協議)網絡
三 程序包
服務端程序:vsftpd
客戶端程序:GUI(flashfxp,cuteftp),CLI(ftp,lftp,wget)
安裝 yum -y install vsftpd ftpssh
主配置文件:/etc/vsftpd/vsftpd.conf(配置項行首無空格,等號兩邊無空格)
基於pam認證用戶的配置文件:/etc/pam.d/vsftpd(rpm包方式安裝纔有,主要包括:身份檢查/帳號檢查/會話檢查/修改密碼檢查等)
ftp用戶家目錄:/var/ftp/(匿名用戶默認被禁錮在這個目錄,windows上匿名用戶登陸用anonymous)
全部三種類型的用戶上傳文件的umask都爲077ui
四 匿名用戶登陸控制編碼
容許匿名用戶登陸 anonymous_enable=YES 容許匿名用戶上傳(須要文件系統權限+服務權限),最好在/var/ftp目錄下新建任意目錄,並給這個目錄加facl權限rwx給ftp用戶 anon_upload_enable=YES #上傳文件 anon_other_write_enable=YES #刪除文件 anon_mkdir_write_enable=YES #建立目錄 指定匿名用戶上傳文件的屬主 chown_uploads=YES chown_username=ftp 若是開啓了SELinux,還須要命令行中修改域 setsebool -P ftpd_full_access=on
五 本地用戶登陸控制命令行
容許本地用戶登陸 local_enable=YES 容許本地用戶上傳 write_enable=YES 匿名用戶或ftp用戶都默認被禁錮在家目錄中,爲了安全,本地用戶也應該禁錮在各自家目錄中 chroot_local_user=YES 或者使用下面的(用戶名寫入文件,每行一個,寫入的所有禁錮) chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 控制本地用戶登陸機制 1./etc/pam.d/vsftpd中定義了規則,限制寫在文件/etc/vsftpd/ftpusers文件中的用戶不能登錄。 2.還能夠在主配置文件中設置 userlist_enable=YES #啓用文件/etc/vsftpd/user_list userlist_deny=YES #默認值,表示黑名單,若是是NO則是白名單 3.ftpusers文件中的規則優先於user_list文件
六 虛擬用戶登陸控制
建立虛擬用戶庫文件 cd /etc/vsftpd vim vuser.txt #寫入用戶名密碼,單數行寫用戶名,雙數行寫密碼 zhangsan 123456 lisi 123 db_load -T -t hash -f vuser.txt vuser.db chmod 600 vuser.db rm -rf vuser.txt 建立一個本地用戶,用於虛擬用戶映射 useradd -d /var/ftproot -s /sbin/nologin virtual chmod -Rf 755 /var/ftproot 提供pam認證規則,寫入這個文件中/etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser 在主配置文件中支持虛擬用戶 anonymous_enable=NO #啓用虛擬用戶必須關閉匿名用戶 local_enable=YES guest_enable=YES guest_username=virtual #虛擬用戶映射的本地用戶名 pam_service_name=vsftpd.vu #pam規則配置文件 allow_writeable_chroot=yes #vsftpd2.2 中不支持這一項,能夠不用 user_config_dir=/etc/vsftpd/vuser_dir #虛擬用戶權限控制文件存放目錄 給虛擬用戶分別設置訪問權限 mkdir /etc/vsftpd/vuser_dir vim /etc/vsftpd/vuser_dir/zhangsan anon_upload_enable=YES anon_other_write_enable=YES anon_mkdir_write_enable=YES 重啓vsftpd服務便可檢查虛擬用戶登陸效果