Linux是以後作業系統的趨勢所在,目前的大部分國產作業系統,甚至於安卓系統都是與Linux離不開關係。其中,FTP作為其中共用手段存在已久,我們今天就來看看怎麼搭建簡單的FTP伺服器吧。
FTP 是檔案傳輸通訊協定(File Transfer Protocol)的縮寫。顧名思義,FTP用於電腦之間通過網路進行檔案傳輸。你可以通過FTP在電腦賬戶間進行檔案傳輸,也可以在賬戶和案頭電腦之間傳輸檔案,或者訪問線上軟體歸檔。但是,需要注意的是多數的FTP網站的使用率非常高,可能需要多次重連才能串連上。
今天來說一下在RHEL5下使用VSftpd來搭建ftp伺服器,在搭建之前首先要考慮自己的工作環境,我搭建ftp幹什麼,公司的具體要求是什麼,然後再根據公司的需求來具體實施。下面是搭建的具體實驗步驟:
一、首先確定系統中已經安裝了VSftpd軟體包,可以使用如下命令來查看並安裝:
liwei@linux# rpm -qa|grep vsftpd (如果有的話執行第二條就行了,若沒安裝,可以使用如下命令來安裝)
liwei@linux# mount /dev/cdrom /media //掛載光碟片到系統中
liwei@linux# rpm -vih /media/Server/vsftpd-版本號碼 //安裝VSftpd
二、安裝好VSftpd軟體包後,然後就是給伺服器配置一個靜態IP地址,當然動態也可以,但一般伺服器最好使用靜態IP。配置IP地址的方法如下,我以配置192.168.0.1地址為例:
liwei@linux# vi /etc/sysconfig/network-scritps/ifcfg-eth0
在開啟的設定檔中修改:
複製代碼 代碼如下:
DEVICE=eth0
BOOTPROTO=static
HAWADDR=00:0C:29:A2:8B:B8
ONBOOT=yes
IPADDR=192.168.0.1
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
三、配置好IP地址後,然後就可以根據你自己的要求來修改vsftpd的設定檔來達到你的目標了,vsftpd的主設定檔為/etc/vsftpd/vsftpd.conf。下面用幾個例子來說明一下vsftpd的各個配置選項的作用。
1.匿名使用者配置:
在vsftpd.conf設定檔中,預設是允許匿名使用者登入FTP伺服器的,但不允許上傳檔案、不允許在伺服器上建立目錄,我們可以修改以下一些配置項來達到自己的要求:
複製代碼 代碼如下:
anonymous_enable=YES //接受匿名使用者
no_anon_password=YES //匿名使用者登入時不詢問口令
anon_root=目錄路徑 //匿名使用者登入後所在的位置,可以根據自己的實際需求來修改
write_enable=YES //可以上傳(全域控制)
file_open_mode=0666 //上傳檔案的許可權,配合umask使用
anon_upload_enable=NO //匿名使用者可以上傳
anon_mkdir_write_enable=YES //匿名使用者可以建立目錄
anon_other_write_enable=YES //匿名使用者可以重名名、刪除等許可權
anon_world_readable_only=YES //如果設為YES,匿名使用者登入者會被允許下載可閱讀的文檔
chown_uploads=YES //所有匿名上傳的檔案的所屬使用者將會被更改為chown_username
chown_username=user //匿名上傳檔案所屬使用者名稱
除了以上這些匿名使用者的選項外我們還可以添加一些設定FTP伺服器的公用選項,通過這些選項可以為FTP伺服器設定一些不同的歡迎資訊。
複製代碼 代碼如下:
ftpd_banner=Welcom to my FTP Server!!! //登入時顯示的歡迎資訊
dirmessage_enable=YES //允許為目錄配置顯示資訊,顯示每個目錄下面message_file檔案的內容
setproctitle_enable=YES //顯示工作階段狀態資訊
下面來舉個例子來說明一下匿名使用者的應用:
為了公司的員工工作方便,公司決定搭建一台FTP伺服器,要達到的功能如下:
1.允許公司的任何員工把自己的一些文檔傳上FTP伺服器上儲存起來以便下次使用,
2.允許員工自己建立目錄
3.員工登入成功後顯示歡迎資訊
如果要達到以上的要求只需要在vsftpd.conf設定檔中修改以下選項就OK了,如果預設沒有一些選項,可以自己手動添加:
複製代碼 代碼如下:
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
ftpd_banner=Welcom to my FTP Server!!!
注意:如果只設定了anon_upload_enable=YES,但選項write_enabl未設定(或者設定成了NO),則匿名使用者仍然不能上傳檔案。還有別忘記了修改FTP所處的檔案夾的許可權。
修改完以上設定檔後,使用命令service vsftpd restart重啟一下vsftpd服務然後測試就OK了,其實上面這個例子很不安全,我只是舉個例子,如果實際中使用,可以使用下面講到的另兩種方法都可以。
2.本機使用者配置:
複製代碼 代碼如下:
local_enable=YES //啟用本機使用者
local_umask=022 //本機使用者上傳的檔案的許可權,可以參考linux許可權部分來瞭解
local_root=目錄路徑 //本機使用者登入FTP伺服器後所處的目錄
chroot_local_user=YES //限制本機使用者的根目錄為自己的主目錄
chroot_list_enable=YES //如果啟動這項功能,則所有列在chroot_list_file之中的使用者都不能更改根目錄
chroot_list_file=限制的使用者所處的檔案路徑
在FTP伺服器上通常會有很多的本機使用者,那麼有時候我們希望一些使用者可以登入FTP伺服器,而有的使用者我們不希望他們登入,遇到這種情況該怎麼解決呢?可以使用如下選項來實現些功能:
複製代碼 代碼如下:
userlist_enable=YES //啟用userlist功能模組
userlist_deny=YES //拒絕userlist檔案中列出的使用者登入FTP伺服器
userlist_file=userlist檔案的的路徑
以上選項的意思就是我們假如不想讓一部分人登入FTP伺服器,那麼我們可以寫一個檔案把這些使用者加入到這個檔案中去,然後把上面這個功能開啟然後在userlist_file選項那指向這個檔案的所在地,這樣這個檔案中的使用者就不能登入FTP伺服器了。相反假如我們userlist_deny設定成NO的話,意思就是userlist_file指向的那個檔案裡的使用者可以登入FTP伺服器,其它使用者則不能登入FTP伺服器。
本機使用者的應用比較簡單,只要系統中可以登入的使用者要登入FTP伺服器,直接輸入系統的使用者名稱和密碼就可以登入了,預設登入後是在自己的家目錄裡,也就是/home/使用者檔案夾裡。許可權的控制就是修改這個目錄的許可權來控制就OK了。如果想控制某些使用者禁止登入,則可以按照上面的userlist功能來進行限制就行了。
除了以上匿名使用者和本機使用者外的一些參數外還有網路和串連參數及下面會提到的日誌功能配置。
四、網路和串連參數配置,
下面是一些常用的網路和串連參數:
複製代碼 代碼如下:
max_clients=1000 //可接受的最大串連數,可以根據自己的實際情況來修改
max_per_ip=5 //每個IP地址的最大串連數,可以根據自己的實際情況來修改
anon_max_rate=51200 //匿名使用者的頻寬(b/s)
local_max_rate=5120000 //本機使用者的頻寬(b/s)
idle_session_timeout=600 //空閑連線逾時時間
data_connection_timeout=120 //資料轉送逾時時間
ACCEPT_TIMEOUT=60 //PAVS請求逾時時間
connect_timeout=60 //PORT模式連線逾時時間
connect_from_port_20=YES //使用標準的20連接埠來串連FTP
listen_address=地址或網段 //綁定到某個IP或網段,其他IP不能訪問該FTP
listen_port=2121 //綁定到某個連接埠
ftp_data_port=2020 //資料轉送連接埠
pasv_max_port=0 //PASV串連模式時可以使用port範圍的上界,0表示任意。
pasv_min_port=0 //PASV串連模式時可以使用port範圍的下界,0表示任意。
以上各個選項後都有說明,有需要的可以自己根據自己的情況來添加,這裡就不再詳述了。其中PORT模式是FTP工作模式中的主動模式,PASV模式是FTP工作模式中的被動模式。
五、日誌功能配置
vsftpd可啟用日誌功能,這樣,檔案的上傳與下載資訊將被完整地記錄在xferlog_file選項所設定的記錄檔中,設定日誌功能的選項如下:
複製代碼 代碼如下:
xferlog_enable=YES //開啟日誌功能
xferlog_file=檔案路徑 //記錄檔的存放位置
xferlog_std_format=YES //使用標準格式記錄日誌
vsftpd的專用記錄模式配置選項:
複製代碼 代碼如下:
dual_log_enable=YES //採用vsftpd自己專用的日誌記錄方式
log_ftp_enable=YES //記錄所有的FTP命令日誌
vsftpd_log_file=檔案路徑 //指定vsftpd記錄檔的位置
當以上兩種日誌功能都設定為NO時,還可以使用系統日誌來記錄FTP的日誌,設定選項如下:
syslog_enable=YES //啟用後,預設的日誌寫入到/var/log/messages裡
雖然可以使用這種方式來記錄FTP日誌,但是推薦使用最上面的兩種,因為這樣查看日誌時候比較清楚,容易分析日誌。
六、其他常用選項設定
複製代碼 代碼如下:
ascii_upload_enable=YES //用ASCII模式上傳,
ascii_download_enable=YES //用ASCII模式下載
dirmessage_enable=YES //設定每個子目錄的歡迎資訊。
banner_file=檔案路徑 //設定歡迎資訊的檔案
ls_recurse_enable=YES //允許使用者使用ls -R命令
pam_service_name=vsftpd //定義PAM使用的名稱,預設為vsftpd
guest_enable=YES //將所有的非匿名使用者都視為guest,即啟用虛擬使用者
guest_username=virtual //定義guest的使用者名稱
好了,這篇就寫到這了,下篇是“建立基於虛擬使用者的vsftpd服務“。