ftp基礎1

一. 查看服務與端口的對應文件

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


















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章