FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議以傳輸文件。在FTP的使用當中,用戶經常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠程主機拷貝文件至自己的計算機上;"上傳"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上傳(下載)文件。
一般在各種linux的發行版中,默認帶有的ftp軟件是vsftp,從各個linux發行版對vsftp的認可可以看出,vsftp應該是一款不錯的ftp軟件。
搭建Linux FTP服務器的步驟如下:
(1)檢查vsftpd軟件是否安裝
使用如下命令可以檢測出是否安裝了vsftpd軟件,rpm -qa |grep vsftpd ,例如在我的centos 5.6中顯示的結果如下:
如果沒有安裝的話,可以下載安裝,也可以使用軟件源進行安裝。這里不再贅述。
(2)vsftpd軟件的使用
1)使用vsftpd軟件,主要包括如下幾個命令:
啟動ftp:service vsftpd start
停止ftp:service vsftpd stop
重啟ftp:service vsftpd restart

2)或者使用帶有路徑的命令:

(3)vsftpd的配置
ftp的配置文件主要有三個,在centos5.6中位於/etc/vsftpd/目錄下,分別是:
1)ftpusers 該文件用來指定那些用戶不能訪問ftp服務器。
2)user_list 該文件用來指示的默認賬戶在默認情況下也不能訪問ftp
3)vsftpd.conf vsftpd的主配置文件
(4)下面我們使用vi編輯vsftpd的主配置文件:vsftpd.conf文件。
etc/vsftpd/vsftpd.conf是vsftpd的主要配置文件,在此文件中以#開頭的行是注釋行,默認設置如下:
anonymous_enable=YES
#是否允許匿名登錄ftp,YES表示允許。
#local_enable=YES
#是否允許本地用戶登錄,本地用戶即/etc/passwd內帳號,YES表示允許。
#write_enable=YES
#是否開放寫權限。
#local_umask=022
#設置本地用戶的文件的掩碼是022。
#anon_upload_enable=YES
#是否允許匿名用戶上傳文件。
#anon_mkdir_write_enable=YES
#是否允許匿名用戶創建文件夾。
dirmessage_enable=YES
#當使用者進入某個目錄時,會顯示該目錄需要注意的內容,顯示的檔案預設是.message ,需要手工在該目錄下創建,當然,可以使用message_file設定項目來修訂!
xferlog_enable=YES
#激活上傳下載日志,由xferlog_file決定日志文件名。
connect_from_port_20=YES
#啟用FTP數據端口的連接請求(ftp-data)。
#chown_uploads=YES
#是否改變上傳文件的屬主,這個屬主可以由chown_username決定。
#chown_username=whoever
#當chown_uploads值為YES時,上傳文件的屬主就是chown_username定義的值了。
#xferlog_file=/var/log/vsftpd.log
#當xferlog_enable的值為YES時,日志將記錄在xferlog_file定義的文件中。
#xferlog_std_format=YES
#是否使用標准的ftp xferlog模式。
#idle_session_timeout=600
#如果使用者在600秒內都沒有命令動作,強制離線!
#data_connection_timeout=120
#如果數據傳送在120秒內都無法傳送成功,那客戶端的聯機就會被vsftpd強制剔除!
#nopriv_user=ftpsecure
#運行vsftpd需要的非特權系統用戶,默認是nobody。
#async_abor_enable=YES
#當設置為允許時,一個特別的FTP命令“異步退出”將生效。
#ascii_upload_enable=YES
#是否允許使用ascii碼方式上傳文件。
#ascii_download_enable=YES
#是否允許使用ascii碼方式下載文件。
#ftpd_banner=Welcome to blah FTP service.
#定制歡迎信息。
#deny_email_enable=YES
#是否禁止匿名用戶使用某些郵件地址。
#banned_email_file=/etc/vsftpd/banned_emails
#當deny_email_enable=YES時,可以利用這個設定項目來規定那個email address 不可登入vsftpd ,在上面設定的檔案內,一行輸入一個email address 即可!
#chroot_local_user=YES
#是否將所有使用者限制在自己的家目錄之內(chroot)。
#chroot_list_enable=YES
#是否啟用將某些用戶限制在它們的家目錄內。
#chroot_list_file=/etc/vsftpd/chroot_list
#如果chroot_list_enable=YES時,可以設定哪些用戶會被限制在自己的家目錄內而無法離開(chroot),一行一個賬號即可!
#ls_recurse_enable=YES
#是否允許使用ls -R等命令。
listen=YES
#開啟ipv4監聽
#listen_ipv6=YES
#開啟ipv6監聽。
pam_service_name=vsftpd
#使用pam模塊控制,vsftpd文件在/etc/pam.d目錄下。
userlist_enable=YES
#此選項被激活后,vsftpd將讀取userlist_file參數所指定的文件中的用戶列表。當列表中的用戶登錄FTP服務器時,該用戶在提示輸入密碼之前就被禁止了。即該用戶名輸入后,vsftpd就直接禁止掉該用戶,不會再進行詢問密碼等后續步驟。
tcp_wrappers=YES
#是否允許tcp_wrappers管理。
一般配置的話:
以下幾項需要去掉前面的#號:
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
本配置開通了匿名訪問、匿名上傳和下載等功能。
FTP 存放文件默認路徑在/var/ftp/pub目錄下,啟動FTP服務后,可能遇到一些問題,比如不能登錄進去,或者不能寫目錄、寫文件等,需注意的事項是的:
1、pub目錄的權限不能全開,全開會報錯,chmod 755 -R pub
2、但是這樣也會帶來一個問題,當匿名用戶登錄后,在pub下的newftp目錄下想上傳一個文件,會報錯,因為匿名用戶(ftp)無法在該目錄下(該目錄屬於root用戶)創建一個新文件的,因為該目錄下他沒有權限,所以要加入其他用戶(o)的寫權限,chmod o+w /var/ftp/pub/newftp.
現在權限變為:
drwxr-xrwx 2 root root 4096 06-20 16:55 newftp
其實就是757的權限,此時匿名用戶(ftp)就可以在該目錄下上傳文件了。
注:
比如ftp的默認目錄是/var/ftp 想把/mnt/WinSoft文件夾,映射到/var/ftp目錄中
先在/var/ftp目錄中建一個目錄
#mkdir /var/ftp/WinSoft
然后執行mount命令
#mount --bind /mnt/WinSoft /var/ftp/WinSoft
這樣就OK了,還可以通過ln的方式處理。
Linux及Windows下訪問ftp服務只需使用“ftp IP地址”命令即可:
[root@ftkylin ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@ftkylin ~]# ftp 172.19.1.52
Connected to 172.19.1.52 (172.19.1.52).
220 (vsFTPd 2.2.0)
Name (172.19.1.52:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
