linux 下ftp的上傳與下載

FTP服務器

From: http://dev.firnow.com/course/6_system/linux/Linuxjs/20100124/193849.html

  • 概述

FTP服務器,則是互聯網上提供存儲空間的計算機,它們依照FTP協議提供服務。FTP全稱是File Transfer Protocol(文件傳輸協議)。顧名思義,就是專門用來傳輸文件的協議。簡單地說,支持FTP協議的服務器就是FTP服務器。
Linux下實現FTP服務的軟件很多,最常見 又VSFTPD,WU-FTP和Proftp等。Red Hat Linux中默認安裝的是vsftpd.
通常,訪問FTP服務器需要經過驗證,只有經過了FTP服務器的相關驗證,用戶才能訪問和傳輸文本,VSFTPD提供3中登陸形式:
[root@localhost root]#rpm –qa|grep vsftpd
//查看vsftpd是否安裝,如果沒有安裝,在“主菜單”—“系統設置”—“添加/刪除應用程序”—找到“FTP服務器”在前面打勾—“更新”根據系統的提示點擊“CD-ROM進行切換linux的鏡像”
Vsftpd-1.1.3-8
[root @localhost root]#service vsftpd start
//在系統終端啓動vsftpd服務,也可以用
[root@localhost root]#/etc/rc.d/init.d/vsftpd start

  • 配置vsftpd

在Red hat linux 9.0中,關於vsftpd服務的配置的文件有三個:
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
其中vsftpd.conf是主配置文件,vsftpd.ftpusers指定了有那些用戶不能訪問FTP服務器。 Vsftpd.user_list指定了可能訪問FTP服務器的用戶,其中的用戶在默認情況下不能訪問FTP服務器,僅當在vsftpd.conf中設定userlist_enable=No是才能訪問。

  • 下面關於vsftpd服務器的配置文件vsftpd.conf的部分內容及其解釋(忽略了以#號開頭的內容)。用戶可以用cat顯示內容,用vi文本編輯工具編輯它。

[root @localhost root]#cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
//在配置前可以先備份,以便錯了可以恢復原始配置
[root @localhost root]# vi /etc/vsftpd/vsftpd.conf
//#號開頭的省略,進入vsftpd.conf的配置文件,
Anonymous_enable=YES //允許匿名用戶登陸
No_anon_password=YES //匿名用戶登陸不用密碼
Local_enable=YES //允許本地用戶登陸
Wirte_enable=YES //開放本地用戶寫的權限
Local_umask=022 //將本地用戶的上傳文件的掩碼(umask)設爲022
Dirmessage_enable=YES //允許爲目錄顯示信息,顯示每個目錄下面message_file文件的內容
Xferlog_enable=YES //啓用記錄上傳/下載活動日誌功能
Connect_from_prot_20=YES //設置啓用FTP服務器數據端口的連接請求
Xferlog_std_fromat=YES //設置使用標準的xferlog日誌格式
Pam_service_name=vsftpd //設置PAM認證服務的配置文件名,存放在/etc/pam.d目錄下。
Userlist_enable=YES //設定在vsftpd.user_list文件中的列出的用戶不能訪問這個FTP服務器
Listen=YES //設置服務器採用獨立啓動方式
Tcp_wrappers=YES //設置使用tcp_wrappers作爲主機訪問控制方式
//在沒有設置前系統是默認匿名用戶是沒有上傳,創建文件的權限,接下來是一下。
按ESC鍵
:q!
不保存退出

  • Vsftpd.ftpuser文件的說明

vsftpd.ftpusers指定了下列用戶不能訪問FTP服務器,root用戶默認是不允許登陸FTP服務器,但允許添加不允許登陸的用戶到vsftpd.ftpusers裏面來,每個用戶一行。
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
~

  • Vsftpd.user_list文件的說明

Vsftpd.user_list指定了可能訪問FTP服務器的用戶,其中的用戶在默認情況下不能訪問FTP服務器,僅當在vsftpd.conf中設定userlist_enable=No是才能訪問
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

  • 連接ftp,匿名用戶實現下載

[root@localhost root]#cd /var/ftp/pub
//默認下載的文件目錄在/var/ftp/pub目錄,切換到pub目錄,創建一個文本,提供下載。
[root @localhost pub]#vi test.txt
//創建test.txt文件,並輸入helloworld,按ESC,
:wq //保存退出
[root @localhost root]# cd
//切換到root目錄下
[root @localhsot root]#ftp localhost
//ftp 後面跟的是主機IP或主機名
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.1.3)
Name (localhost:root):anonymous //匿名用戶anonymous
331 Please specify the password.
Password: //匿名用戶登陸不需要密碼,直接回車,
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls //顯示文件,看到默認上傳下載目錄。
227 Entering Passive Mode (127,0,0,1,79,16)
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Feb 28 2003 pub
226 Directory send OK.
ftp> cd pub //進入pub目錄
250 Directory successfully changed.
ftp> ls //顯示文件,可以看到剛纔創建的test.txt
227 Entering Passive Mode (127,0,0,1,212,160)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 10 Jan 02 06:35 test.txt
226 Directory send OK.
ftp> mget test.txt
mget test.txt? //直接回車
227 Entering Passive Mode (127,0,0,1,65,220)
150 Opening BINARY mode data connection for test.txt (10 bytes).
226 File send OK.
10 bytes received in 4.9e-05 secs (2e+02 Kbytes/sec)
ftp> !ls //顯示test.txt下載到當前root目錄下
anaconda-ks.cfg install.log install.log.syslog test.txt
ftp> mkdir test //沒有給匿名用戶創建目錄權限,是不能創目錄的
550 Permission denied.
ftp> put install.log //沒有給匿名用戶上傳權限,也不能上傳
local: install.log remote: install.log
227 Entering Passive Mode (127,0,0,1,29,70)
550 Permission denied.
ftp> bye
221 Goodbye.

  • 連接ftp,匿名用戶實現上傳

[root@localhost root]#vi /etc/vsftpd/vsftpd.conf
//下面修改匿名用戶的,找到
#anon_upload_enable=YES //允許匿名用戶上傳文件
#anon_mkdir_write_enable=YES //開放匿名用戶的創建目錄和寫權限
//按ESC,保存退出
[root @localhost root]#service vsftpd restart
//重啓vsftpd服務
當配置文件修改後,還是不能在pub目錄下創建目錄,但可以上傳,默認情況下,pub的權限是目錄所屬的用戶有執行、讀寫權限,組用戶和其他用戶,只有執行、讀的權限
[root@localhost root]#cd /var/ftp
//切換到ftp目錄下,查看賦給pub目錄的屬性
[root @localhost ftp]# ls –l
總用量 4
drwxr-xr-x 2 root root 4096 1月 2 15:02 pub
[root @localhost ftp]#chmod o+w pub
//給其他用戶加上讀的權限,組用戶可以添加權限,可以實現anonymous用戶的上傳目的。因爲anonymous用戶屬於其他用戶。
[root@localhost ftp]# chmod o+w pub
[root@localhost ftp]# ls -l
總用量 4
drwxr-xrwx 2 root root 4096 1月 2 15:02 pub
[root @localhost ftp]#cd
//回到root目錄下
[root@localhost root]# ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.1.3)
Name (localhost:root): anonymous
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,209,189)
150 Here comes the directory listing.
drwxr-xrwx 2 0 0 4096 Jan 02 07:02 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (127,0,0,1,79,120)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 10 Jan 02 06:35 test.txt
226 Directory send OK.
ftp> mkdir test
257 "/pub/test" created //在pub目錄下創建test目錄
ftp> ls
227 Entering Passive Mode (127,0,0,1,87,79)
150 Here comes the directory listing.
drwx------ 2 14 50 4096 Jan 02 07:04 test //說明創建成功
-rw-r--r-- 1 0 0 10 Jan 02 06:35 test.txt
226 Directory send OK.t
ftp>bye
221 Goodbye.
[root@localhost root]#mkdir /var/ftp/income
//創建一個負責裝上傳文件的目錄income
[root @localhost root]#chmod a+wrx /var/ftp/income
//給所以用戶給income目錄執行、讀、寫權限
[root @localhost root]#chown ftp:ftp /var/ftp/income
//把income目錄賦給ftp組和用戶
[root @localhost root]#cd /var/ftp
//切換到/var/ftp目錄下
[root@localhost ftp]# ll
//顯示所以可見文件
總用量 8
drwxrwxrwx 2 ftp ftp 4096 1月 2 15:17 income
drwxr-xrwx 2 root root 4096 1月 2 15:04 pub
[root @localhost ftp]#cd
//切換到root目錄測試一下
[root@localhost root]# ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.1.3)
Name (localhost:root): anonymous
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,85,23)
150 Here comes the directory listing.
drwxrwxrwx 2 14 50 4096 Jan 02 07:17 income
drwxr-xrwx 2 0 0 4096 Jan 02 07:04 pub
//顯示目錄相關信息

 

226 Directory send OK.
ftp> cd income //切換到income目錄
250 Directory successfully changed.
ftp> ls //顯示income目錄爲空
227 Entering Passive Mode (127,0,0,1,109,195)
150 Here comes the directory listing.
226 Directory send OK.
ftp> !ls //查看文件
anaconda-ks.cfg install.log install.log.syslog test.txt
ftp> put install.log //上傳install.log文件
local: install.log remote: install.log
227 Entering Passive Mode (127,0,0,1,152,59)
150 Ok to send data.
226 File receive OK.
29187 bytes sent in 0.000236 secs (1.2e+05 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (127,0,0,1,184,110)
150 Here comes the directory listing.
-rw------- 1 14 50 29187 Jan 02 07:29 install.log
226 Directory send OK.
ftp> bye
221 Goodbye.
[root@localhost root]#vi /etc/vsftpd/vsftpd.conf
設置連接服務器的最在併發連接數和用戶的最在線程數
作爲FTP服務器,必然要爲多用戶擔任服務,如果在同一段登陸FTP服務器的用戶過多或下載的數據過量,則會影響服務器的性能。因此,在建立FTP服務器

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