Ⅰ 什麼是ftp的主動模式,被動模式,如何設
在使用ftp的時侯,經常遇到ftp鏈接後出現文件列表錯誤的情況,只是因為ftp的模式不正確,如何設置ftp的工作模式,什麼是主動模式,什麼又是被動模式,主動模式和被動模式有什麼區別,今天搜集了相關資料和常用ftp軟體工作模式的設置的方法:
一、什麼是PASV和PORT方式
(1)PORT其實是Standard模式的另一個名字,又稱為Active模式。中文意思是「主動模式。
(2)PASV也就是Passive的簡寫。中文就是「被動模式。
二、兩者不同
不同之處是由於PORT(主動)這個方式需要在接上TCP 21埠後,伺服器通過自己的TCP 20來發出數據。並且需要建立一個新的連接來傳送檔案。而PORT的命令包含一些客戶端沒用的資料,所以有了PASv的出現。而PASV模式擁有PORT模式的優點,並去掉一些PORT的缺點。PASV運行方式就是當伺服器接收到客戶端連接請求時,就會自動從埠1024到5000中隨機選擇一個和客戶端建立連接傳遞數據。由於被動且自動建立連接,容易受到攻擊,所以安全性差。
三、常見的FTP客戶端軟體PORT方式與PASV方式的切換方法
大部分FTP客戶端默認使用PASV方式。IE默認使用PORT方式。 在大部分FTP客戶端的設置里,常見到的字眼都是「PASV」或「被動模式」,極少見到「PORT」或「主動模式」等字眼。因為FTP的登錄方式只有兩種:PORT和PASV,取消PASV方式,就意味著使用PORT方式。
(1)IE:工具 -> Internet選項 -> 高級 -> 「使用被動FTP」(需要IE6.0以上才支持)。
(2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> 「PASV Mode」 或File -> Site Manager,在左邊選中站點 -> Edit -> 「Use PASV mode」 。
(3)FlashGet:工具 -> 選項 -> 代理伺服器 -> 直接連接 -> 編輯 -> 「PASV模式」。
(4)FlashFXP:選項 -> 參數選擇 -> 代理/防火牆/標識 -> 「使用被動模式」 或 站點管理 -> 對應站點 -> 選項 -> 「使用被動模式」或快速連接 -> 切換 -> 「使用被動模式」。
Ⅱ 怎麼通過linux訪問伺服器上的ftp
這個直接推薦你看看這里:http://www.linuxprobe.com/chapter-11.html
文件傳輸協議(FTP,File Transfer Protocol),即能夠讓用戶在互聯網中上傳、下載文件的文件協議,而FTP伺服器就是支持FTP傳輸協議的主機,要想完成文件傳輸則需要FTP服務端和FTP客戶端的配合才行。
通常用戶使用FTP客戶端軟體向FTP伺服器發起連接並發送FTP指令,伺服器收到用戶指令後將執行結果返回客戶端。
FTP協議佔用兩個埠號:
21埠:命令控制,用於接收客戶端執行的FTP命令。
20埠:數據傳輸,用於上傳、下載文件數據。
FTP數據傳輸的類型:
主動模式:FTP服務端主動向FTP客戶端發起連接請求。
被動模式:FTP服務端等待FTP客戶端的連接請求。
11.2 安裝vsftpd服務程序
Vsftpd即「Very Secure FTP Daemon」是一款運行在類Unix操作系統的FTP服務端程序,Vsftpd主打的是安全性、完全開源及免費、速率高、支持IPv6、虛擬用戶功能等等其他FTP服務端軟體不具備的功能。
安裝vsftpd服務程序包:
[root@linuxprobe ~]# yum install vsftpd -y
Loaded plugins: langpacks, proct-id, subscription-manager
…………………省略部分安裝過程………………
---> Package vsftpd.x86_64 0:3.0.2-9.el7 will be installed
--> Finished Dependency Resolution
…………………省略部分安裝過程…………………
Installed:
vsftpd.x86_64 0:3.0.2-9.el7
Complete!
清空默認的防火牆默認規則:
[root@linuxprobe ~]# iptables -F
保存清空後的防火牆規則表:
[root@linuxprobe ~]# service iptables save
Vsftpd的程序與配置文件:
主程序 /usr/sbin/vsftpd
用戶禁止登陸列表 /etc/vsftpd/ftpusers
/etc/vsftpd/user_list
主配置文件 /etc/vsftpd/vsftpd.conf
先來分析下vsftpd程序的主配置文件吧:
[root@linuxprobe ~]# cat /etc/vsftpd/vsftpd.conf
主配置文件長達123行,但大部分是以#號開始的,這些都是注釋信息,我們可以過濾掉它們。
備份vsftpd的主配置文件:
[root@linuxprobe ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
過濾掉所有包含#號的行,並將過濾結果寫回到vsftpd.conf文件中:
[root@linuxprobe ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
此時再分析下vsftpd程序的主配置文件吧:
[root@linuxprobe ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
vsftpd程序配置文件參數的作用:
參數 作用
listen=[YES|NO] 是否以獨立運行的方式監聽服務。
listen_address=IP地址 設置要監聽的IP地址。
listen_port=21 設置FTP服務的監聽埠。
download_enable=[YES|NO] 是否允許下載文件。
userlist_enable=[YES|NO]
userlist_deny=[YES|NO] 是否啟用「禁止登陸用戶名單」。
max_clients=0 最大客戶端連接數,0為不限制。
max_per_ip=0 同一IP地址最大連接數,0位不限制。
anonymous_enable=[YES|NO] 是否允許匿名用戶訪問。
anon_upload_enable=[YES|NO] 是否允許匿名用戶上傳文件。
anon_umask=022 匿名用戶上傳文件的umask值。
anon_root=/var/ftp 匿名用戶的FTP根目錄。
anon_mkdir_write_enable=[YES|NO] 是否允許匿名用戶創建目錄。
anon_other_write_enable=[YES|NO] 是否開放匿名用戶其他寫入許可權。
anon_max_rate=0 匿名用戶最大傳輸速率(位元組),0為不限制。
local_enable=[YES|NO] 是否允許本地用戶登陸FTP。
local_umask=022 本地用戶上傳文件的umask值。
local_root=/var/ftp 本地用戶的FTP根目錄。
chroot_local_user=[YES|NO] 是否將用戶許可權禁錮在FTP目錄,更加的安全。
local_max_rate=0 本地用戶最大傳輸速率(位元組),0為不限制。
11.3 Vsftpd的驗證方式
vsftpd程序提供的FTP服務可選認證方式,分別為匿名訪問、本地用戶和虛擬用戶:
匿名訪問:任何人無需驗證口令即可登入FTP服務端。
本地用戶:使用FTP伺服器中的用戶、密碼信息。
虛擬用戶:創建獨立的FTP帳號資料。
顧名思義匿名訪問就是所有人均可隨意登入FTP服務,這樣自然會產生安全問題,一般用於存放公開的數據。
而本地用戶與虛擬用戶則需要用戶提供帳號及口令後才能登入FTP服務,更加的安全,而虛擬用戶則是最安全的。
下面的實驗環節將使用兩台紅帽RHEL7系統的主機,讀者需要提前配置網卡的IP地址等信息:
主機名稱 操作系統 IP地址
FTP服務端 紅帽RHEL7操作系統 192.168.10.10
FTP客戶端 紅帽RHEL7操作系統 192.168.10.20
11.3.1 匿名訪問模式
FTP匿名訪問模式是比較不安全的服務模式,尤其在真實的工作環境中千萬不要存放敏感的數據,以免泄露。
vsftpd程序默認已經允許匿名訪問模式,我們要做的就是開啟匿名用戶的上傳和寫入許可權,寫入下面的參數:
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
參數 作用
anonymous_enable=YES 允許匿名訪問模式。
anon_umask=022 匿名用戶上傳文件的umask值。
anon_upload_enable=YES 允許匿名用戶上傳文件
anon_mkdir_write_enable=YES 允許匿名用戶創建目錄
anon_other_write_enable=YES 允許匿名用戶修改目錄名或刪除目錄
確認填寫正確後保存並退出vsftpd.conf文件,然後重啟vsftpd服務程序並設置為開機自啟動。
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
因為在紅帽RHCSA、RHCE或RHCA考試後都要重啟您的實驗機再執行判分腳本。
所以請讀者在日常工作中也要記得將需要的服務加入到開機啟動項中:"systemctl enable vsftpd"。
如果重啟vsftpd服務程序時沒有報錯,此時便可以使用FTP客戶機(192.168.10.20)嘗試登入FTP服務了。
ftp命令用於使用FTP服務,格式為:「ftp [參數] [FTP主機]」。
紅帽RHEL7系統中ftp命令默認沒有安裝,請執行"yum install ftp -y"即可安裝完畢。
在客戶端嘗試登入FTP服務:
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:敲擊回車
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Permission denied.
上面操作中已經將防火牆規則清空,在vsftpd.conf文件中也已經允許匿名用戶創建目錄與寫入許可權,那怎麼會被拒絕了呢?
這里建議讀者先不要往下看,思考後用自己的方法解決下這個問題,長期這樣你的Linux的排錯能力一定會練出來的。
回想前面的參數細節,匿名訪問模式的FTP根目錄為/var/ftp:
[root@linuxprobe ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 root root 16 Jul 13 14:38 /var/ftp/pub
原來匿名用戶的FTP根目錄所有者/組都是root,所以匿名用戶沒有寫入許可權,那我們將所有者修改為ftp試試吧。
[root@linuxprobe ~]# chown ftp /var/ftp/pub
此時再用ftp命令嘗試登入FTP服務並創建文件:
ftp> mkdir files
550 Create directory operation failed.
可惡!又報錯了!!雖然這次報錯代碼還是550,但前面提示許可權拒絕,這次是操作失敗,馬上想到是SELinux服務在搗鬼。
查看所有與ftp相關的SELinux規則:
[root@linuxprobe ~]# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
設置SELinux服務對ftp服務的訪問規則策略為允許。
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on
此時再來創建文件或目錄就沒有問題了:
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:敲擊回車
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
257 "/pub/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
請注意:當您完成本實驗後請還原虛擬機快照再進行下一個實驗,否則可能導致配置文件沖突而報錯。
11.3.2 本地用戶模式
既然要使用本地用戶模式,而本地用戶模式確實要比匿名訪問模式更加的安全,所以本實驗中會關閉匿名訪問模式。
vsftpd服務程序默認已經允許本地用戶模式,我們要做的是添加設置本地用戶模式許可權的參數:
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
參數 作用
anonymous_enable=NO 禁止匿名訪問模式。
local_enable=YES 允許本地用戶模式。
write_enable=YES 設置可寫入許可權。
local_umask=022 本地用戶模式創建文件的umask值。
userlist_deny=YES 參數值為YES即禁止名單中的用戶,參數值為NO則代表僅允許名單中的用戶。
userlist_enable=YES 允許「禁止登陸名單」,名單文件為ftpusers與user_list。
確認填寫正確後保存並退出vsftpd.conf文件,然後重啟vsftpd服務程序並設置為開機自啟動。
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
因為在紅帽RHCSA、RHCE或RHCA考試後都要重啟您的實驗機再執行判分腳本。
所以請讀者在日常工作中也要記得將需要的服務加入到開機啟動項中:」systemctl enable vsftpd「。
如果重啟vsftpd服務程序時沒有報錯,此時便可以使用FTP客戶機(192.168.10.20)嘗試登入FTP服務了~
我們先來看下ftpusers或user_list文件中禁止登陸用戶名單:
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
vsftpd服務為了讓FTP服務更加的安全,默認禁止以root身份登入,那麼創建個普通用戶吧:
[root@linuxprobe ~]# useradd linuxprobe
為linuxprobe用戶設置密碼:
[root@linuxprobe ~]# passwd linuxprobe
Changing password for user linuxprobe.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
在客戶端嘗試登入FTP服務:
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): linuxprobe
331 Please specify the password.
Password:輸入用戶的本地密碼
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
550 Create directory operation failed.
有了上面配置匿名訪問模式的經驗,這次再遇到了「操作被拒絕」,應該馬上想到SELinux了吧。
查看所有與ftp相關的SELinux規則:
[root@linuxprobe ~]# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
設置SELinux對FTP服務的規則為允許:
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on
此時再來創建文件或目錄就沒有問題了:
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): linuxprobe
331 Please specify the password.
Password:輸入用戶本地密碼
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
257 "/home/linuxprobe/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
Ⅲ LINUX系統什麼命令是查FTP是否打開
檢查Linux系統上FTP服務是否開啟:
1.通過查詢提供FTP服務的進程是否存在
[root@localhostroot]#ps-ef|grepftp
#並未找到任何包含ftp關鍵字的進程信鉛差臘息,可判斷服務未開啟。
2.通過查詢是vsftpd服務是否存在
[root@localhostroot]#servicevsftpdstatus
#vsftpd是最常見的FTP伺服器,發現stopped狀態即為關閉。
3.開啟慶轎Linux上的FTP服務
[root@localhostroot]#servicevsftpdstart
Startingvsftpdforvsftpd:槐滑[OK]
#再次查看發現已經處於啟動狀態:
[root@localhostroot]#servicevsftpdstatus
vsftpd(pid4510)isrunning...
Ⅳ Linux系統中FTP和Sftp的區別有哪些
Linux操作系統文件傳輸的方式有很多種,但在日常工作以及實際項目開發中最常使用的文件傳輸方式就是FTP和SFTP,那麼Linux系統中FTP和Sftp的區別有哪些?這兩個傳輸方式各有什麼特點呢?接下來我們一起來看看詳細的介紹。
第一、FTP協議
FTP是TCP/IP協議組中的協議之一,TP協議由兩個部分組成:1、FTP伺服器,用來存儲文件;2、FTP客戶端,用戶可以使用FTP客戶端通過FTP協議訪問位於FTP伺服器上的資源。
默認情況下FTP協議使用TCP埠中的20和21這兩個埠。21埠用於傳輸控制信息,而是否使用20作為傳輸數據的埠與FTP使用的傳輸模式有關,如果採用被動模式則具體使用哪個埠要伺服器端和客戶端協商決定。FTP傳輸模式分為兩種:
①主動模式
FTP客戶端首先和FTP伺服器的TCP21埠建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。PROT命令包含了客戶端用什麼埠接收數據。在傳輸數據的時候,伺服器端通過自己的TCP
20埠連接至客戶端的指定埠發送數據。
②被動模式
在建立控制通道與主動模式相似,但建立連接後是Pasv命令。FTP伺服器收到Pasv命令後便隨機打開一個高端埠並且通知客戶端在這個埠上傳送數據的請求,客戶端連接FTP伺服器此埠,通過三次握手建立通道,然後FTP伺服器將通過這個埠進行數據的傳送。
第二、SFTP協議
SFTP是SSH File Transfer
Protocol的縮寫,安全文件傳送協議。SFTP與FTP有著幾乎一樣的語法和功能。SFTP為SSH的其中一部分,是一種傳輸檔案至Blogger伺服器的安全方式。其實在SSH軟體包含中,已經包含了一個叫作SFTP的安全文件信息傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程來完成相應的連接和答復操作,所以從某種意義上來說,SFTP並不像一個伺服器程序,而更像是一個客戶端程序。
第三、二者的主要區別
鏈接方式:FTP使用TCP埠21上的控制連接建立連接。而SFTP是在客戶端和伺服器之間通過SSH協議建立的安全連接來傳輸文件。
安全性:SFTP使用加密傳輸認證信息和傳輸的數據,所以使用SFTP相對於FTP是非常安全。
效率:SFTP這種傳輸方式使用了加密解密技術,所以傳輸效率比普通的FTP要低很多。
Ⅳ linux伺服器中某個文件ftp怎麼設置
配置ftp有三種模式,但是這里字數有限,下面這個是匿名的。詳細的你可以看下最後那個連接
vsftpd服務程序中匿名開放是一種最不安全的驗證模式,任何人都可以無需密碼驗證就登陸到FTP服務端主機,這種模式一般只用來保存不重要的公開文件,尤其是在生產環境中更要注意不放敏感文件,當然也非常推薦用咱們第八章中學習的防火牆管理工具(例如Tcp_wrappers)將vsftpd服務程序的允許訪問主機范圍設置為企業內網,這樣還算能夠保證基本的安全性。
vsftpd服務程序默認已經開啟了匿名訪問模式,咱們需要做的就是進一步允許匿名用戶的上傳、下載文件的許可權,以及讓匿名用戶能夠創建、刪除、更名文件的許可權,這些許可權對於匿名用戶來講非常的危險,咱們只是為了練習Linux系統中vsftpd服務程序的配置能力,十分不推薦在生產環境中使用,匿名用戶的許可權參數及介紹:
參數
作用
anonymous_enable=YES
允許匿名訪問模式。
anon_umask=022
匿名用戶上傳文件的umask值。
anon_upload_enable=YES
允許匿名用戶上傳文件
anon_mkdir_write_enable=YES
允許匿名用戶創建目錄
anon_other_write_enable=YES
允許匿名用戶修改目錄名或刪除目錄
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
確認參數填寫正確後保存並退出vsftpd服務程序的主配置文件,還需要重啟vsftpd服務程序來讓新的配置服務參數生效,並且同學們在生產環境中或者紅帽RHCSA、RHCE、RHCA認證考試中也請記得一定要把配置過的服務程序加入到開機啟動項中,以保證下次伺服器重啟後依然能夠為用戶正常提供ftp文件傳輸服務:
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
這樣咱們就可以在客戶端上面使用ftp命令連接到遠程的FTP伺服器上面了,FTP服務的匿名開放模式的帳號統一為anonymous,密碼為空。匿名模式登陸到FTP伺服器後默認所在位置為/var/ftp目錄,咱們可以切換至裡面的pub目錄中,然後嘗試創建一個新的目錄文件來檢驗是否已經有了寫入許可權:
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:此處敲擊回車即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Permission denied.
剛剛咱們已經把iptables防火牆策略清空,而且也在vsftpd服務程序的主配置文件中添加了允許匿名用戶創建目錄和寫入文件的許可權,那麼為什麼還會被拒絕呢?建議同學們先不要往下面看,思考後用自己的方法嘗試解決下這個問題,長期這樣您的Linux系統排錯能力就一定會練出來的。
回想起前面操作的細節,咱們FTP服務的匿名開放模式是默認登陸到了/var/ftp目錄中,查看下這個目錄的許可權後才發現原來只有root管理員用戶才有寫入許可權的,怪不得會提示寫入出錯呢,咱們只需要把目錄的所有者身份改成系統帳戶ftp即可,這樣就應該可以了吧~
[root@linuxprobe ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 root root 16 Jul 13 14:38 /var/ftp/pub
[root@linuxprobe ~]# chown -Rf ftp /var/ftp/pub
[root@linuxprobe ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 ftp root 16 Jul 13 14:38 /var/ftp/pub
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:此處敲擊回車即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Create directory operation failed.
又報錯了!!此時再次使用ftp命令登入到FTP伺服器主機後依然會提示寫入操作失敗,但細心的同學一定發現報錯信息已經產生了變化,在剛剛沒有寫入許可權的時候提示說許可權拒絕(Permission denied.)所以咱們懷疑是許可權的問題,但現在是提示創建目錄的操作失敗(Create directory operation failed.)那麼咱們同學應該也能馬上意識到是SELinux服務在限制這個操作了吧,查看下所有與ftp相關的SELinux域策略有那些吧:
[root@linuxprobe ~]# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
根據策略的名稱和經驗可以猜測出是哪一條規則策略,咱們在設置的時候請記得使用-P參數來讓配置過的策略永久生效,保證在伺服器重啟後依然能夠順利寫入文件,咱們可以分別嘗試下創建目錄文件、對文件進行改名以及刪除目錄文件等等操作。最後,恭喜同學們完成了這個實驗課程,建議您在進行一次實驗課程前還原虛擬機到最初始的狀態,以免多個配置參數之間產生沖突。
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:此處敲擊回車即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
257 "/pub/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
樓主可以看下http://www.linuxprobe.com/chapter-11.html#112_Vsftpd查看下詳情,有圖會比較方便理解
Ⅵ 怎麼查看ftp當前是主動還是被動,是否輸入pass顯示passive mode on證明輸入pa
如果客戶程序不支持被動模式,它就會返回?Invaild command;如果客戶程序支持被動模式,而伺服器不支持,就會返回"PASV:command not understood",PASV是一個FTP協議命令,使伺服器進入到被動模式。
使用默認數據傳輸埠
在FTP協議中,除了被動模式和主動模式之外,還有另外一種數據傳輸模式。如果客戶程序既不向伺服器發出PASV命令也不發送PORT命令,FTP伺服器就會使用FTP協議的數據傳輸埠(20)和客戶端的控制連接源埠建立一個數據傳輸連接。這就需要客戶程序在這個埠上監聽。在客戶程序上使用sendport命令可以關閉FTP協議的PORT控制指令,然後需要使用passive命令關閉被動模式。整個過程如下:
客戶程序從本地埠N初始化一個FTP控制連接。
用戶使用sendport命令和passive命令(某些客戶程序在默認情況下,被動模式是打開的)關閉主動模式和被動模式,然後使用數據傳輸指令,例如:ls、get等。這樣客戶程序就會在本地埠N上監聽FTP服務緝發起的數據傳輸連接。
伺服器通過TCP常式(例如:getpeername())確定客戶端的埠N。然後從FTP數據傳輸埠(20)發起一個連接。
不過,這種方式有一個最大的缺點就是無法在很短的時間之內連續輸入數據傳輸命令,用戶經常會遇到"bind:Address Already in use等錯誤。這是TCP協議造成的。因此,這種模式並不常用。
Ⅶ 如何檢測linux系統下ftp伺服器是否開啟
檢測linux系統下ftp伺服器是否開啟的方法如下:
1、第一步,打開一台Linux的電腦,進入到輸入shell指令的命令行狀態下,如下圖所示。
Ⅷ 如何判斷ftp當前是主動模式 被動模式設置
FTP只通過TCP連接,沒有用於FTP的UDP組件.FTP不同於其他服務的是它使用了兩個埠, 一個數據埠和一個命令埠(或稱為控制埠)。通常21埠是命令埠,20埠是數據埠。當混入主動/被動模式的概念時,數據埠就有可能不是20了。
主動模式FTP:
主動模式下,FTP客戶端從任意的非特殊的埠(N > 1023)連入到FTP伺服器的命令埠--21埠。然後客戶端在N+1(N+1 >= 1024)埠監聽,並且通過N+1(N+1 >= 1024)埠發送命令給FTP伺服器。伺服器會反過來連接用戶本地指定的數據埠,比如20埠。
以伺服器端防火牆為立足點,要支持主動模式FTP需要打開如下交互中使用到的埠:
l FTP伺服器命令(21)埠接受客戶端任意埠(客戶端初始連接)
l FTP伺服器命令(21)埠到客戶端埠(>1023)(伺服器響應客戶端命令)
l FTP伺服器數據(20)埠到客戶端埠(>1023)(伺服器初始化數據連接到客戶端數據埠)
l FTP伺服器數據(20)埠接受客戶端埠(>1023)(客戶端發送ACK包到伺服器的數據埠)
用圖表示如下:
在第1步中,客戶端的命令埠與FTP伺服器的命令埠建立連接,並發送命令「PORT 1027」。然後在第2步中,FTP伺服器給客戶端的命令埠返回一個"ACK"。在第3步中,FTP伺服器發起一個從它自己的數據埠(20)到客戶端先前指定的數據埠(1027)的連接,最後客戶端在第4步中給伺服器端返回一個"ACK"。
主動方式FTP的主要問題實際上在於客戶端。FTP的客戶端並沒有實際建立一個到伺服器數據埠的連接,它只是簡單的告訴伺服器自己監聽的埠號,伺服器再回來連接客戶端這個指定的埠。對於客戶端的防火牆來說,這是從外部系統建立到內部客戶端的連接,這是通常會被阻塞的。
主動FTP的例子:
下面是一個主動FTP會話的實際例子。當然伺服器名、IP地址和用戶名都做了改動。在這個例子中,FTP會話從 testbox1.slacksite.com (192.168.150.80),一個運行標準的FTP命令行客戶端的Linux工作站,發起到testbox2.slacksite.com (192.168.150.90),一個運行ProFTPd 1.2.2RC2的Linux工作站。debugging(-d)選項用來在FTP客戶端顯示連接的詳細過程。紅色的文字是 debugging信息,顯示的是發送到伺服器的實際FTP命令和所產生的回應信息。伺服器的輸出信息用黑色字表示,用戶的輸入信息用粗體字表示。
仔細考慮這個對話過程我們會發現一些有趣的事情。我們可以看到當 PORT 命令被提交時,它指定了客戶端(192.168.150.80)上的一個埠而不是伺服器的。當我們用被動FTP時我們會看到相反的現象。我們再來關注PORT命令的格式。就象你在下面的例子看到的一樣,它是一個由六個被逗號隔開的數字組成的序列。前四個表示IP地址,後兩個組成了用於數據連接的埠號。用第五個數乘以256再加上第六個數就得到了實際的埠號。下面例子中埠號就是((14*256) + 178) = 3762。我們可以用netstat來驗證這個埠信息。
testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
Connected to testbox2.slacksite.com.
220 testbox2.slacksite.com FTP server ready.
Name (testbox2:slacker): slacker
---> USER slacker
331 Password required for slacker.
Password: TmpPass
---> PASS XXXX
230 User slacker logged in.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
ftp: setsockopt (ignored): Permission denied
---> PORT 192,168,150,80,14,178
200 PORT command successful.
---> LIST
150 Opening ASCII mode data connection for file list.
drwx------ 3 slacker users 104 Jul 27 01:45 public_html
226 Transfer complete.
ftp> quit
---> QUIT
221 Goodbye.
Ⅸ 在linux下怎麼查詢FTP是否打開怎麼啟動FTP服務
1、查看FTP服務是否在運行,active(running),表示服務運行中,inactive(dead)表示服務未運行;
servicevsftpdstatus
2、如果FTP服務未運行,可以啟動服務;
servicevsftpdstart