轉自:http://blog.chinaunix.net/space.php?uid=26069663&do=blog&id=2200929
今天介紹下檔案分享權限設定最常執行的 AppFTP,這是一個十分古老的基於tcp的檔案傳輸通訊協定,誕生40年之久,全稱:File Transfer Protocol,用於Internet上的控制檔案的雙向傳輸,同時它也是一個C/S架構的服務系統,基於不同的作業系統有不同的FTP應用程式,這個協議與其他早期的協議都相同,設計之初都是明文傳送的!
下面簡單介紹下這個協議!
一、FTP的兩種串連:
command命令串連:監聽在21號連接埠,只要開啟ftp服務就一直處於活動狀態
data資料連線:只在下載或上傳檔案是才會開啟串連,資料連線又分為倆種模式:
active 主動模式(有些地方也寫做Standard):此模式下FTP用戶端首先和伺服器的TCP 21連接埠建立串連,用來發送命令,用戶端需要接收資料的時候在這個通道上發送PORT命令。PORT命令包含了用戶端用什麼連接埠接收資料。在傳送資料的時候,伺服器端通過自己的TCP 20連接埠串連至用戶端的指定連接埠發送資料。FTP server必須和用戶端建立一個新的串連用來傳送資料,一般是伺服器端的20號連接埠與用戶端發送請求的連接埠加1的連接埠建立新的串連
,如:用戶端通過7000連接埠向伺服器端的21號連接埠發送命令請求建立串連,而在進行資料傳送的時候通過伺服器端的20號連接埠和用戶端的7001連接埠建立新的串連來傳輸資料。
passive 被動模式:建立控制通道和主動模式類似,但建立串連後發送Pasv命令。伺服器收到Pasv命令後,開啟一個臨時連接埠(連接埠號碼大於1023小於65535)並且通知用戶端在這個連接埠上傳送資料的請求,用戶端串連FTP伺服器此連接埠,然後FTP伺服器將通過這個連接埠傳送資料。
倆種傳輸模式是為了保護資料的安全,被動模式下服務端資料轉送的連接埠是臨時開啟的,不容易被竊聽,然而一般情況下FTP伺服器都是位於防火牆之後的,在做存取控制的時候這種模式會比較複雜,而主動模式下防火牆的設定相對簡單的多。
二、FTP的使用者類型:
匿名使用者:這就是我們常說的匿名登入,ftp伺服器支援匿名登入時通常當使用者匿名訪問可以使用ftp/anoymous這兩個使用者匿名登入。
本機使用者:這類使用者是指在FTP服務上擁有帳號,帳號名稱,密碼資訊存放在passwd,shadow檔案中。當這類使用者登入FTP伺服器的時候,其預設的主目錄就是其帳號命名的目錄。但是,其還可以變更到其他目錄中去。如系統的主目錄等等,這將十分的危險,下面介紹vsftp的時候會稍作介紹!
虛擬使用者(有些地方也叫GUEST使用者):使用獨立的帳號/密碼資料檔案,這個賬戶有個特點,就是其只能夠訪問自己的主目錄。伺服器通過這種方式來保障FTP服務上其他檔案的安全性。這類帳戶,在Vsftpd軟體中就叫做Guest使用者。擁有這類使用者的帳戶,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的檔案。
三、常見的FTP伺服器程式:
windows:IIS、Serv-U
LINUX:wu-ftpd Proftpd vsftpd 在這裡主要說下vsftpd,這是紅帽預設提供的FTP伺服器程式,全稱:Very Sceure FTP Dacmon,安全效能出眾也能提供較完整的ftp服務,稍微說下Proftpd這是款功能十分強大的ftp伺服器程式,能滿足自己的各種定製和需求!
四、常見的FTP用戶端程式:
ftp命令
CuteFTP 、FlashFXP(號稱是最快的FTP用戶端)、LeapFTP、Filezilla
gftp、kuftp
當然我們也可以通過IE等瀏覽器直接登入FTP伺服器等等,不過以上所說的都是專業的FTPFTP用戶端服務程式。這裡不多做說明了。為了避免selinux對後面的實際操作產生影響,我們使用setenforce 0臨時關閉掉selinux。
下面主要介紹下 vsftpd這款伺服器程式:我們通過yum直接安裝此軟體包:
yum -y install vsftpd會不會很驚奇的發現這個安裝包只有140k大小呢!通過這種方法安裝,
主程式檔案安裝在/usr/sbin/vsftpd,設定檔在/etc/vsftpd下:有3個檔案:
ftpusers 配置禁止登陸ftp的使用者列表
user_list 定義了一些使用者列表,這些使用者是否可以登入取決於主設定檔的設定
vsftpd.conf 主設定檔這是這個程式的設定檔,所有的設定都在此定義,裡面能定義的選項十分多
有興趣的可以自己看看稍微介紹下幾個常用的選項(詳見百科或其他資料):
1、預設配置:
anonymous_enable=YES #允許匿名使用者存取
local_enable=YES #允許本機使用者訪問
write_enable=YES #具有寫入權限
local_umask=022 #本機使用者建立檔案或目錄的掩碼
connect_from_port_20=YES #開啟20連接埠
2、允許匿名使用者具有寫入權限(上傳/建立目錄)
在預設配置下添加以下內容:
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO 允許匿名帳號寫 另外還需具有所有許可權的目錄
3、屏蔽本地所有使用者瀏覽其他目錄的許可權(除了家目錄,匿名使用者本身只能訪問家目錄)
在預設配置下添加以下內容:
chroot_local_user=YES4、屏蔽部分本機使用者瀏覽其他目錄的許可權
在預設配置下添加以下內容:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
另外再建立檔案/etc/vsftpd.chroot_list,並添加需要屏蔽的使用者。
相關的命令十分簡單常用的有以下幾個,跟其他能被service調用的服務基本相同:service vsftpd start/stop/restart/reload