一. 查看服務與端口的對應文件
vim /etc/services
二. ftp是工作在應用層上的
FTP:基於tcp協議 兩個鏈接
一個事命令(控制)鏈接 一個事數據鏈接
當你連上服務器 發現有你想要的的文件時 發出下載請求 會開啓數據鏈接
分爲兩種工作模式
1.主動模式(默認端口:21傳指令,20傳數據)
客戶端請求服務器的21端口,服務器響應,建立命令鏈路;當想要傳輸數據時,客戶端會發送PORT指令告訴服務器,“我開啓了xxx端口,來連我吧”,然後服務器就會開啓20端口,與客戶端建立數據鏈路,傳輸數據。
2.被動模式(端口:21端口傳指令,開一個大於1024的隨機端口傳數據)
客戶端請求服務器的21端口,服務器響應,建立命令鏈路;當想要傳輸數據時,客戶端會發送PASV指令告訴服務器,我要發數據,服務器就會告訴客戶端自己開了哪個端口,之後等待客戶端來連接,客戶端就按照服務器的指示來連接那個大於1024的端口,建立數據鏈路。
ftp命令 (get 下載 mget對文件下載 put上傳 mput多文件上傳 )
http傳輸時 會利用mine把二進制變成文本傳輸,而ftp傳輸時,原本是什麼格式,就用什麼格式傳輸,二進制就傳輸
二進制,文本就傳輸文本
三.vsftp 在redhat裏
/var/ftp:作爲其提供服務的根目錄(除了root外 任何人不能有些權限)
要上傳下載文件時,需要在/var/ftp/目錄下建個子目錄,給子目錄寫權限,用ftp來上傳文件時,首先要現金這個新建的目錄,在裏面進行上傳和下載 否則會報錯553 Could not create file.
爲安全,不要給ftp用戶登錄系統的權限
root@lyw:/etc/pam.d# finger ftp
產看ftp用戶的家目錄在哪
root用戶可以直接通過修改“/etc/passwd” 文件來修改用戶的登錄shell,也可以使用usermod命令來進行修改
usermod -s /bin/csh ftp
linux系統裏一般都用vsftp(安全的ftp)
ftp用戶分爲3類:
匿名用戶-------> 需要對應一個系統用戶 一般是ftp
系統用戶
虛擬用戶---------> 需要對應一個系統用戶 一般是ftp
//------------------------------------------------------------------------------------------------------------
1.匿名用戶形式:在默認安裝的情況下,系統只提供匿名用戶訪問
2.本地用戶形式:以/etc/passwd中的用戶名爲認證方式
3.虛擬用戶形式:支持將用戶名和口令保存在數據庫文件或數據庫服務器中。相對於ftp的本地用戶形式來說,虛擬用戶只是ftp服務器的專有用戶,虛擬用戶只能訪問ftp服務器所提供的資源,這大大增強了系統本身的安全性。
相對於匿名用戶而言,虛擬用戶需要用戶名和密碼才能獲取ftp服務器中的文件,增加了對用戶和下載的可管理性。
對於需要提供下載服務,但又不希望所有人都可以匿名下載,即需要對下載用戶進行管理,又考慮到主機安全和管理
方便的ftp站點來說,虛擬用戶是一種極好的解決方案。
//-------------------------------------------------------------------------------------------------------------
debian安裝vsftp (用系統用戶登錄ftp,默認都登錄到他的家目錄下)
1. apt-get install -y vsftpd
2.添加ftp賬號和目錄
useradd -d /data/vsftpd -s /bin/false pwftp
3.修改賬戶密碼
passwd pwftp
4.修改指定目錄的權限
mkdir -p /data/vsftpd
chown -R pwftp.pwftp /data/vsftpd
root@lyw:/lib64# ls -ld /data/vsftpd/
drwxr-xr-x 2 pwftp pwftp 4096 Oct 19 09:14 /data/vsftpd
5.配置vsftp
vim /etc/vsftpd.conf
將配置文件中“anonymous_enable=YES” 改爲 “anonymous_enable=NO” 是否允許匿名用戶登錄
取消如下配置前的註釋符號:
local_enable=YES
write_enable=YES 定義本地用戶是否能上傳文件
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
chroot_list_user 是否將所有用戶限制在主目錄,YES爲請用 NO爲禁用(該項默認值是NO,即在安裝vsftpd後不做配置的話,ftp用戶是可以向上切換到主目錄之外的)
ftp 127.0.0.1 登陸報錯
530 Login incorrect.
Login failed.
解決方法:
vim /etc/pam.d/vsftpd
#auth required pam_shells.so 將這行註釋掉
問題:遠程連接登錄不上ftp
解決:
vim /etc/vsftpd.conf
在最下面添加以下信息
pasv_enable=YES 開啓被動模式 (主動模式下對方可能有防火牆限制連接不進去)
pasv_min_port=4000 隨機最小端口
pasv_min_port=4005 隨機最大端口
然後在加載內核
root@lyw:~# modprobe ip_conntrack_ftp
root@lyw:~# modprobe ip_nat_ftp
重啓服務器
root@lyw:/lib64# /etc/init.d/vsftpd restart
//------------------------------------------------------------------------------
添加匿名用戶登錄
anonymous_enable=YES 運行匿名用戶登錄
anon_root=/home/luyiwei 匿名用戶登錄後的位置
anon_upload_enable=yes 支持匿名用戶上傳
anon_mkdir_write_enable=yes 支持匿名用戶創建目錄
注意:/home/luyiwei/ 這個目錄只能給root寫權限別人都沒寫權限 然後在/home/luyiwei 下在建立一個目錄,這個目錄可以讓所有人或者ftp用戶有寫權限 把要下載的東西放入這個新建的目錄。讓用戶上傳下載 都進入這個新的目錄進行操作。
匿名登錄時,也需要填賬號名 anonymous或ftp 不需要添加密碼
ftp>help 查詢命令幫助
具體的信息可以通過抓包工具來查看
如:tcpdump抓包
tcpdump -i eth0 prot 80 -vv -X -nn
//-------------------------------------------------------------
xferlog_enable=YES 是否打開傳輸日誌
xferlog_file=/var/log/vsftpd.log 傳輸日誌位置
Listen=YES ftp是否工作在一個獨立守護進程(每次登陸ftp時,使用時間都很長就用獨立守護進程)
//--------------------------------------------------------------
安全通信方式
ftps:ftp+ssl/tls
sftp: openssh提供的子系統SubSystem,sftp(基於ssh實現安全的傳輸功能)
參考文章:
http://www.cnblogs.com/ilinuxer/p/5087447.html
http://blog.csdn.net/bluishglc/article/details/42398811