FTP服務器是一種常見的用於文件交換的服務,目前大小公司都有在用。最近公司有需求須要搭建FTP服務,就研究了一下。linux
本次主要是基於vsftpd的搭建和配置。sql
1、vsftpd簡介:vim
vsftpd是一個UNIX類操做系統上運行的FTP服務器,它能夠運行在Linux、BSD、Solaris、HP-UNIX等多種操做系統上面,是一個徹底免費的、開發源代碼的ftp服務器軟件。目前主流的Linux發行版中均可以找到vsftpd的身影。安全
它有以下特色:服務器
- 程序小巧輕快,安裝方便。
- 安全性和穩定性較早期FTP有很大進步。
- 配置簡單。
2、學習安裝和配置vsftpd:session
實驗環境:Centos 5.8 x86_64 app 測試環境關掉防火牆和selinux。tcp
|
一、安裝vsftpdide
- yum -y install vsftpd
二、vsftpd相關的目錄及配置文件工具
- /usr/sbin/vsftpd vsftpd主程序。
- /etc/init.d/vsftpd vsftpd服務控制腳本。
- /etc/pam.d/vsftpd 這個是vsftpd使用PAM模塊時的相關配置文件,主要用來驗證登錄FTP用戶帳號的身份。
- /etc/vsftpd/ 配置文件目錄。
- /etc/vsftpd/vsftpd.conf vsftpd服務主配置文件,使用方法:參數=設定值。
- /etc/vsftpd/ftpusers 與PAM模塊的配置文件配合使用,主要填寫FTP用戶帳號,一行一個。
- /etc/vsftpd/user_list vsftpd服務本身的用戶帳戶控制文件,與vsftpd.conf配置文件中的userlist_enable、userlist_deny兩個參數有關。
- /var/ftp/ 默認匿名用戶根目錄。
三、主配置文件vsftpd.conf詳解
- 與服務器環境較相關的設定值
- connect_from_port_20=YES (NO)
- 主動式鏈接時使用FTP服務器的端口號,就是FTP-date的端口號。
- listen_port=21
- vsftpd控制端口。
- dirmessage_enable=YES (NO)
- 當用戶進入某個目錄時,是否顯示該目錄須要注意的內容,顯示信息的文件默認是 .message 。
- message_file=.message
- 當 dirmessage_enable=YES 時,能夠修改默認顯示信息文件的文件名。
- listen=YES (NO)
- 設置爲YES表示以stand alone方式啓動服務器,設置爲NO則表示以super deamon的方式啓動服務器。
- pasv_enable=YES (NO)
- 啓動被動模式(passive mode),必定要設置爲YES。
- use_localtime=YES (NO)
- 啓用本地時間,通常須要設置爲YES。由於vsFTPd默認使用GMT格林威治時間,這比東八區的時間早了8個小時,會使得服務器上的文件時間屬性出現混亂。
- write_enable=YES (NO)
- 是否容許用戶上傳數據。
- connect_timeout=60
- 在數據鏈接主動模式下,發出的鏈接信號在60秒內沒有獲得客戶端的響應,則強制斷線。
- accept_timeout=60
- 在用戶以PASV被動模式進行數據傳輸時,若是主機啓動passive port並等待客戶端超過60秒無迴應,就強制斷線。
- data_connection_timeout=300
- 在客戶端和服務器的數據鏈接已經創建的狀況下,若是在300秒內仍是沒法順利完成數據傳輸,則客戶端的連線會被vsFTPd強制斷開。
- idle_session_timeout=300
- 若是用戶在300秒內沒有命令操做,則斷線。
- max_clients=0
- 當vsFTPd以stand alone模式運行時,這個參數決定同一個IP、同一時間內被服務器容許的鏈接數。
- max_per_ip=0
- 與上面 max_clients 相似,這裏是同一個 IP 同一時間可容許多少聯機?
- pasv_min_port=0, pasv_max_port=0
- 這兩個參數指定pasv模式使用的端口號的範圍,0表示不限制。
- ftpd_banner=一些文字說明
- 用登入FTP時,顯示的歡迎信息,可設定顯示的信息內容較少。
- banner_file=/path/file
- 這個參數能夠彌補FTPd_banner參數的不足,特別是當須要在服務器端展現較多的文字信息時(如站點說明,歡迎文字等等)。
- 與實體用戶較相關的設定值
- guest_enable=YES (NO)
- 開啓訪客用戶,若是開啓則全部的非匿名用戶的均會被假設成訪客身份。訪客默認狀況下使用FTP這個帳戶相關的權限設置,可是能夠經過參數guest_username來修改。
- guest_username=ftp
- 在開啓了guest_enable=YES以後纔會生效,用來指定訪客的身份。
- local_enable=YES (NO)
- 是否容許/etc/passwd中存在的實體用戶賬號登錄vsFTPd服務器。
- local_max_rate=0
- 實體用戶的傳輸速度限制,單位爲bytes/second,0表示不限制。
- chroot_local_user=YES (NO)
- 將實體用戶限制在本身的家目錄以內,默認值爲NO。
- chroot_list_enable=YES (NO)、chroot_list_file=/etc/vsftpd.chroot_list
- 這兩個參數須要配合使用,用以將chroot_list文件中列出的用戶限制在本身的默認目錄中。
- userlist_enable=YES (NO)、userlist_deny=YES (NO)、userlist_file=/etc/vsftpd/user_list
- 參數userlist_enable=YES表示藉助vsFTPd的阻止機制來處理user_list文件中列出的某些不受歡迎的賬號;當userlist_deny=YES時user_list文件中的賬號將被拒絕,當userlist_deny=NO時則表示容許user_list中的賬號登錄服務器;
- 匿名者登入的設定值
- anonymous_enable=YES (NO)
- 是否容許匿名帳戶anonymous登陸,如下參數均在容許狀況下生效。
- anon_world_readable_only=YES (NO)
- 是否容許匿名用戶具備只讀權限。
- anon_other_write_enable=YES (NO)
- 是否容許匿名帳戶具備可寫權限。
- anon_mkdir_write_enable=YES (NO)
- 是否容許匿名用戶具備建立目錄的權限。
- anon_upload_enable=YES (NO)
- 是否容許匿名用戶具備上傳文件的權限。
- deny_email_enable=YES (NO)
- 如果啓動這項功能,則必須提供一個檔案/etc/vsftpd/banner_emails,內容爲email address。如果使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不容許進入。默認值爲NO。
- banned_email_file=/etc/vsftpd/banned_emails
- 若是 deny_email_enable=YES 時,能夠利用這個設定項目來規定哪一個 email address 不可登入咱們的 vsftpd 喔!在上面設定的檔案內,一行輸入一個 email address 便可!
- no_anon_password=YES (NO)
- 此文件用來輸入email address,只有在deny_email_enable=YES時,纔會使用到此檔案。如果使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不容許進入。
- anon_max_rate=0
- 設置匿名登入者使用的最大傳輸速度,單位爲B/s,0 表示不限制速度。默認值爲0。
- anon_umask=077
- 設置匿名登入者新增或上傳檔案時的umask 值。默認值爲077,則新建檔案的對應權限爲700。
- 關於系統安全方面的一些設定值
- ascii_download_enable=YES (NO)
- 設置是否啓用ASCII 模式下載數據。默認值爲NO。
- ascii_upload_enable=YES (NO)
- 設置是否啓用ASCII 模式上傳數據。默認值爲NO
- one_process_model=YES (NO)
- 是否使用單進程模式
- tcp_wrappers=YES (NO)
- 設置vsftpd是否與tcp wrapper相結合來進行主機的訪問控制。默認值爲YES。若是啓用,則vsftpd服務器會檢查/etc/hosts.allow 和/etc/hosts.deny 中的設置,來決定請求鏈接的主機,是否容許訪問該FTP服務器。這兩個文件能夠起到簡易的防火牆功能。
- xferlog_enable=YES (NO)
- 是否啓用上傳/下載日誌記錄。若是啓用,則上傳與下載的信息將被完整紀錄在xferlog_file 所定義的檔案中。預設爲開啓。
- xferlog_file=/var/log/xferlog
- 設置日誌文件名和路徑,默認值爲/var/log/vsftpd.log。
- xferlog_std_format=YES (NO)
- 若是啓用,則日誌文件將會寫成xferlog的標準格式,如同wu-ftpd 通常。默認值爲關閉。
- dual_log_enable=YES, vsftpd_log_file=/var/log/vsftpd.log
- 若是啓用該選項,將生成兩個類似的日誌文件,默認在 /var/log/xferlog 和 /var/log/vsftpd.log 目錄下。前者是 wu-ftpd 類型的傳輸日誌,能夠利用標準日誌工具對其進行分析;後者是Vsftpd類型的日誌。
- nopriv_user=nobody
- 預設vsftpd服務的運行帳戶。
- pam_service_name=vsftpd
- 設置PAM使用的名稱,默認值爲/etc/pam.d/vsftpd。
四、配置實例
基於匿名用戶的配置:
- cd /etc/vsftpd/
- vim vsftpd.conf
|
- mkdir -p /data/vsftpd/upload
- chmod 777 /data/vsftpd/upload
基於本地用戶的配置:
- cd /etc/vsftpd/
- vim vsftpd.conf
|
- useradd test
- echo test | passwd --stdin test
- echo "test" >> user_list
基於虛擬用戶的配置:
- yum -y install db4-utils
- cd /etc/vsftpd/
- vim virtual_userlist.txt
|
- db_load -T -t hash -f /etc/vsftpd/virtual_userlist.txt /etc/vsftpd/virtual_userlist.db
- chmod 600 /etc/vsftpd/virtual_userlist.db
- vim /etc/pam.d/vsftpd.vu
|
- useradd virtual_user -d /data/vsftpd
- chmod 700 /home/ftpsite
- chown virtual_user.virtual_user /data/vsftpd/
- vim /etc/vsftpd/vsftpd.conf
|
關於服務器控制:
- service vsftpd {start|stop|restart|condrestart|status}
客戶端操做:
到此,vsftpd的安裝配置算是告一段落了,若有問題請和我聯繫。。