天天看點

linux下的ftp

FTP的基本概念

1。FTP是什麼?

FTP叫做檔案傳輸協定,它的作用就是上傳下載下傳檔案

2。FTP的傳輸模式(站在伺服器角色去看)

⑴主動FTP模式:

第一個過程是客戶機主動去連接配接伺服器

第二個過程伺服器會打開21端口來接受用戶端的通路,以後這個連結就會傳輸指令

第三個當客戶機要從伺服器上下載下傳東西的時候,會發一條指令給伺服器

第四個過程伺服器會打開自己的20端口,并把資料主動送到客戶機的一個随機端口上

⑵被動FTP模式:

第四個過程伺服器會打開一個随機端口,并通過21告訴客戶機打開的端口号,并等待客戶機的連接配接

原因:因為現在大多數的使用者都使用ADSL來連接配接網絡,ADSL的連接配接方式中客戶機是沒有靜态IP位址的,如果使用ADSL撥号,公網位址會被綁定到ADSL的外接口上,那如果FTP伺服器主動把資料送到用戶端的話,那資料隻能到達ADSL的外接口,但是無法到區域網路中的客戶機上。這是為什麼現實生活中大部分的FTP都是被動模式的原因。IE浏覽器中有預設配置

3。WINDOWS和LINUX下常見的FTP伺服器端軟體

LINUX下:

wu-ftpd:

優點:

①出現的早,穩定,功能完善

缺點:

①代碼零亂,不是很規整

②安全性比較差

proftpd:為了改善wu-ftpd的缺點

①代碼規整了很多

②安全性有所提升

③在限制權限角度,功能還是很強的

①工作效率不是非常的高

②搭建一些虛拟的伺服器不是特别強大

vsftpd:

①安全性非常高

②傳輸效率很高

①對權限的限制不是很靈活

②對上傳下載下傳的速率限制也不是很靈活

二、vsftpd伺服器的安裝和配置

1。安裝軟體包

在第1張CD光牒中,名字叫做vsftpd

安裝rpm  -ivh  vsftpd….rpm

2。目錄結構

⑴主目錄:/etc/vsftpd

vsftpd.conf就是它的主配置檔案

注:為了擷取vsftpd.conf中配置語句的含義,可以使用man  vsftpd.conf

主配置檔案中的語句含義:

①anonymous_enable=yes

使用匿名賬戶可以登入FTP伺服器

跟它相關的:

local_enable=yes:使實名賬戶可以登入FTP

guest_enable=yes:使虛拟賬戶可以登入FTP

②write_enable=yes

使用本地賬戶可以上傳檔案到伺服器

③local_umask=022

umask:類似于netmask,作用如下:

檔案的目前權限+umask值=666

檔案夾的目前權限+umask值=777

例如:上面是022,那上傳檔案的權限就是:

檔案權限+022=666              上傳的檔案權限預設是644

④dirmessage_enable=yes

dir:目錄

message:消息

含義:能夠顯示目錄消息,作用是當使用者切換目錄時,可以顯示切換後目錄的注意事項

配置方法:在切換後的目錄下放一個.message檔案,裡面寫入注意事項内容就可以了

⑤xferlog_enable=YES

啟用日志功能

跟它相關:

xferlog_std_format=YES

以标準的日志格式寫日志

⑥connect_from_port_20=YES

在主動模式中使用,允許使用20端口進行連接配接

⑦pam_service_name=vsftpd

FTP登入時的認證子產品的名字

認證子產品通常位于/etc/pam.d下,好多伺服器都使用認證子產品進行登入認證

⑧listen=YES

伺服器處于監聽狀态

tcp_wrappers=YES<b> </b>

<b>使用FTP</b><b>支援TCP_wrapper</b><b>功能,可以使用防火牆進行通路控制</b>

<b>3</b><b>。兩個對使用者登入起到限制作用的檔案</b>

<b>⑴/etc/vsftpd.ftpusers</b>

<b>所有添加到這個檔案中的使用者都不能登入FTP</b><b>伺服器</b>

<b>⑵黑白名單</b>

<b>在主配置檔案啟用userlist_enable=yes</b><b>,啟用user  list</b><b>功能</b>

<b>黑名單:</b>

<b>userlist_deny=yes</b><b>(禁止userlist</b><b>中的使用者)</b>

<b>userlist_file=/etc/vsftpd.user_list</b><b>(預設的檔案名,可以修改)</b>

<b>白名單:</b>

<b>userlist_deny=no</b><b>(允許userlist</b><b>中的使用者)</b>

<b></b>

<b>注:如果一個使用者同時被添加到/etc/vsftpd.ftpusers</b><b>裡和白名單中,那使用者也是不能登入FTP</b><b>伺服器的</b>

<b>4</b><b>。啟動被登入FTP</b><b>伺服器</b>

<b>⑴登入賬戶:</b>

<b>匿名賬戶:anonymous</b><b>和ftp</b><b>兩個</b>

<b>實體賬戶:大家在伺服器中自己建立</b>

<b>⑵登入FTP</b><b>伺服器</b>

<b>ftp  </b><b>伺服器的IP</b><b>位址</b>

<b>⑶登入後的主目錄</b>

<b>匿名賬戶:/var/ftp</b><b>下,通過 anon_root=</b><b>目錄名 </b><b>來進行修改</b>

<b>實體賬戶:預設登入到自己的宿主目錄下,可以通過 local_root=</b><b>目錄名 </b><b>來進行修改</b>

<b>三、解決安全性問題</b>

<b>1</b><b>。禁锢使用者在自己的主目錄下</b>

<b>⑴禁锢所有的本地使用者在登入後的目錄下</b>

<b>vi  /etc/vsftpd/vsftpd.conf</b>

<b>添加 chroot_local_user=yes </b><b>就OK</b><b>了</b>

<b>⑵禁锢指定的本地使用者在登入後的目錄下</b>

<b>在主配置檔案添加或者啟用下面兩句</b>

<b>chroot_list_enable=yes</b>

<b>chroot_list_file=/etc/vsftpd.chroot_list</b>

<b>把要禁锢的本地使用者名添加到上面的檔案就可以達到目的</b>

<b>2</b><b>.使用虛拟使用者登入FTP</b><b>伺服器</b>

<b>⑴建立虛拟使用者的檔案</b>

<b>vi  /etc/vsftpd/test.txt</b>

<b>内容寫法:奇數行是使用者名,偶數行是密碼</b>

<b>⑵轉換成hash</b><b>寫法</b>

<b>指令:db_load  -T  -t  hash  -f  /etc/vsftpd/test.txt  /etc/vsftpd/test.db</b>

<b>-T</b><b>:把檔案内容轉換成跟berkerly</b><b>格式想相容的寫法</b>

<b>-t</b><b>:把檔案内容寫成hash</b><b>寫法</b>

<b>-f</b><b>:指明轉換的源檔案是誰</b>

<b>⑶把上面生成的.db</b><b>檔案寫成一個pam</b><b>子產品,供FTP</b><b>去使用</b>

<b>vi  /etc/pam.d/vsftpd.test</b>

<b>auth  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/test</b>

<b>account  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/test</b>

<b>注:雖然我們上面生成的檔案叫test.db</b><b>,但是在pam</b><b>檔案中指出後面的db</b><b>檔案時,不能加.db</b><b>擴充名,因為PAM</b><b>檔案會自動追加.db</b><b>的擴充名</b>

<b>⑷生成一個虛拟使用者在系統内的運作賬戶</b>

<b>原因:因為虛拟賬戶是我們自己寫的,系統内根本就沒有,那系統也就無法識别虛拟賬戶,為了讓系統正常識别,我們要在系統内建立一個賬戶身份,當虛拟使用者登入FTP</b><b>時,在系統内就使用剛剛建立起的賬戶身份去運作</b>

<b>指令如下:</b>

<b>mkdir  /ftpsite -------</b><b>在/</b><b>下為賬戶建立他的主目錄</b>

<b>useradd  virtual  -d  /ftpsite  -M</b>

<b>解釋:</b><b>使用者名為virtual</b><b>;-d</b><b>是指明使用者的宿主目錄;-M</b><b>是指删除其home</b><b>下的主目錄</b>

<b>⑸把上面建立好的PAM</b><b>檔案,賬戶身份都添加主配置檔案中</b>

<b>vi   /etc/vsftpd/vsftpd.conf</b>

<b>guest_enable=yes----------</b><b>啟用虛拟使用者</b>

<b>guest_username=virtual---------</b><b>指明虛拟使用者在系統中的真實身份</b>

<b>修改pam_service_name=vsftpd.test---------</b><b>把系統中原來的認證子產品改成vsftpd.test</b><b>檔案</b>

<b>⑹重新開機伺服器,登入進行驗證</b>

<b>3</b><b>.給虛拟使用者限制權限</b>

<b>⑴建立一個存放虛拟使用者權限限制檔案的目錄</b>

<b>mkdir  /etc/vsftpd/test_dir</b>

<b>⑵把建立好的上面的目錄寫入到主配置檔案,讓FTP</b><b>也能識别</b>

<b>user_config_dir=/etc/vsftpd/test_dir</b>

<b>⑶寫不同虛拟使用者的權限限制檔案</b>

<b>vi  /etc/vsftpd/test_dir/aa</b>

<b>vi  /etc/vsftpd/test_dir/bb</b>

<b>寫入内容:</b>

<b>anon_upload_enable=yes         --------</b><b>控制虛拟使用者可以上傳檔案</b>

<b>anon_world_readable_only=NO      --------</b><b>控制使用者能否下載下傳檔案</b>

<b>注意:注意内容的含義,如果是 </b><b>隻讀=NO</b><b>,就是能下載下傳</b>

<b>如果是  </b><b>隻讀=YES</b><b>,那就不能下載下傳</b>

<b>anon_mkdir_write_enable=YES</b><b> </b><b>    -------</b><b>讓使用者能夠建立目錄</b><b></b>

<b>anon_other_write_enable=YES     -------</b><b>讓使用者能夠執行删除,改名的操作</b><b></b>

<b>注:除了上面的語句,其它的前面是</b><b>anon</b><b>的語句都可以用來限制虛拟賬戶通路</b><b>FTP</b>

<b>比如限制上面下載下傳的速度可以使用</b><b>anon_max_rate=</b>

<b>改變虛拟使用者登入的主目錄可以使用</b><b>anon_root=</b>

繼續閱讀