FTP伺服器vsftpd安裝架設 yum install vsftpd 2.啟動/重啟/關閉vsftpd伺服器[root@localhost ftp]# /sbin/service vsftpd restartShutting down vsftpd: [ OK ]Starting vsftpd for vsftpd: [ OK ]OK表示重啟成功了.啟動和關閉分別把restart改為start/stop即可.如果是源碼安裝的,到安裝資料夾下找到start.sh和shutdown.sh檔案,執行它們就可以了. 3.與vsftpd伺服器有關的檔案和檔案夾vsftpd伺服器的設定檔的是: /etc/vsftpd/vsftpd.conf vsftpd伺服器的根目錄,即FTP伺服器的主目錄:在/var/ftp處pub處如果你想修改伺服器目錄的路徑,那麼你只要修改/var/ftp到別處就行了 4.添加FTP本機使用者有的FTP伺服器需要使用者名稱和密碼才能登入,就是因為設定了FTP使用者和許可權.FTP使用者一般是不能登入系統的,只能進入FTP伺服器自己的目錄中,這是為了安全.這樣的使用者就叫做虛擬使用者了.實際上並不是真正的虛擬使用者,只是不能登入SHELL了而已,沒能力登入系統. /usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin test這個命令的意思是:使用命令(adduser)添加test使用者,不能登入系統(-s /sbin/nologin),自己的檔案夾在(-d /opt/test_ftp)),屬於組ftp(-g ftp)然後你需要為它設定密碼 passwd test這樣就添加了一個FTP使用者了.下面的樣本可以協助你進入FTP伺服器了. [root@localhost ftp]# ftpftp> open 192.168.0.33Connected to 192.168.0.33 (192.168.0.33).220 (vsFTPd 2.0.5)Name (192.168.0.33:gxl): test331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> quit 在windows中,只要在瀏覽器中輸入 ftp://192.168.0.33 進入FTP伺服器,然後 右鍵 登入,輸入使用者名稱和密碼就可以登入自己的目錄了.當然你要保證自己能讀寫自己的目錄,就要在設定檔vsftpd.conf裡設定一下就可以讀寫了.local_enable=yeswrite_enable=yeslocal_umask=022 5.匿名上傳下載修改設定檔即可vsftpd.conf,確定有以下幾行,沒有自己添加進去就可以了.anonymous_enable=yesanon_upload_enable=yesanon_mkdir_write_enable=yesanon_umask=022 然後你可以建立一個檔案夾,修改它的許可權為完全開放,任何使用者就可以登入這個檔案夾,並上傳下載檔案:mkdir /var/ftp/guestchmod 777 /var/ftp/guest 6.定製進入FTP伺服器的歡迎資訊在vsftpd.conf檔案中設定:dirmessage_enable=yes然後進入使用者目錄建立一個.message檔案,輸入歡迎資訊即可(我這裡寫入的是Welcome to gxlinux's FTP!):[root@localhost test_ftp]# ftp 192.168.0.33Connected to 192.168.0.33 (192.168.0.33).220 (vsFTPd 2.0.5)Name (192.168.0.33:gxl): test331 Please specify the password.Password:230-Welcome to gxlinux's FTP!230 Login successful.Remote system type is UNIX.Using binary mode to transfer files. 7.實現虛擬路徑將某個目錄掛載到FTP伺服器下供使用者使用,這就叫做虛擬路徑.比如將gxl使用者的目錄掛載到FTP伺服器中,供FTP伺服器的使用者使用,使用如下命令即可:[root@localhost opt]# mount --bind /home/gxl /var/ftp/pub #使用掛載命令[root@localhost opt]# ls /var/ftp/pubLumaQQ Screenshot.png 案頭 8.開啟vsFTPd的日誌功能添加下面一行到vsftpd.conf檔案中,一般情況下該檔案中有這一行,只要把前面的注釋符號#去掉即可,沒有的話就添加,或者修改:xferlog_file=/var/log/vsftpd.log 9.限制連結數,以及每個IP最大的連結數修改設定檔中,例如vsftp最大支援連結數100個,每個IP能支援5個連結:max_client=100max_per=5 10.限制傳輸速度修改設定檔中,例如讓匿名使用者和vsftd上的使用者(即虛擬使用者)都以80KB=1024*80=81920的速度下載anon_max_rate=81920local_max_rate=81920 11.將使用者(一般指虛擬使用者)限制在自家目錄修改設定檔中,這樣使用者就只能訪問自己家的目錄了:chroot_local_user=yes如果只想某些使用者僅能訪問自己的目錄,其它使用者不做這個限制,那麼就需要在chroot_list檔案(此檔案一般是在/etc/vsftpd/中)中添加此使用者.編輯此檔案,比如將test使用者添加到此檔案中,那麼將其寫入即可.一般的話,一個使用者佔一行.[root@localhost vsftpd]# cat chroot_listtest 12.綁定某個IP到vsFTPd有時候要限制某些IP訪問伺服器,只允許某些IP訪問,例如只允許192.168.0.33訪問這個FTP,同樣修改設定檔:listen_address=192.168.0.33 配置vsftpd.conf anonymous_enable=NO #禁止匿名 local_enable=YES #允許本地登入 write_enable=YES #允許寫,如需上傳,則必須 local_umask=027 #將上傳檔案的使用權限設定為:777-local_umask anon_upload_enable=YES #允許虛擬使用者和匿名使用者上傳 anon_other_write_enable=YES #允許虛擬使用者和匿名使用者修改檔案名稱和刪除檔案 dirmessage_enable=YES xferlog_enable=YES #開啟日誌記錄 connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log #日誌存放位置 xferlog_std_format=YES #標準日誌格式 idle_session_timeout=600 #空閑連線逾時 data_connection_timeout=120 ftpd_banner=Welcome to ChinaRise FTP service #歡迎資訊 guest_enable=yes #允許虛擬使用者 guest_username=vsftpdguest #虛擬使用者使用的系統帳號 virtual_use_local_privs=YES #虛擬使用者擁有本地系統許可權 chroot_local_user=NO chroot_list_enable=YES #以上兩行將虛擬使用者限制在其目錄下,不能訪問其他目錄,或者直接用 chroot_local_user=YES listen=yes #監聽/被動模式 listen_port=21 #監聽連接埠 chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #虛擬使用者名稱單儲存在檔案/etc/vsftpd/vsftpd.chroot_list 中 user_config_dir=/etc/vsftpd/vsftpd_user_conf #每個虛擬使用者名稱的更加詳細的培植儲存在/etc/vsftpd/vsftpd_user_conf 中 虛擬使用者其他設定 在/etc/vsftpd/vsftpd.chroot_list 檔案中寫入允許登陸的虛擬使用者名稱稱,每行一個 在/etc/vsftpd/vsftpd_user_conf 檔案夾中建立一個以虛擬使用者使用者名稱命名的檔案, 寫入:local_root = /var/FTP/子目錄名 然後在/var/FTP下建立一個對應的目錄即可 可能遇到的問題以及解決方案: 在執行ftp IP 登入時出現500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp 的錯誤訊息 需要在vsftpd.conf中加入了ftp_username=ftpuser(使用者)這一行,ftp_username的預設使用者應該是ftp /etc/init.d/vsftpd restart後成功登陸如果出現“550 create directory operation failed” 是SELinux安裝機制搞的鬼.只要disable SELinux就可以了. # vi /etc/selinux/config將 SELINUX=XXX -->XXX 代表層級改為SELINUX=disabled或者setsebool -P ftpd_disable_trans on + service vsftpd restart 或者 setsebool -P ftp_home_dir on + service vsftpd restart 即可如果不能執行,提示“Could not change active booleans: Invalid boolean” 可以執行以下命令setsebool allow_ftpd_full_access 1setsebool allow_ftpd_use_cifs 1setsebool allow_ftpd_use_nfs 1 setsebool ftp_home_dir 1setsebool httpd_enable_ftp_server 1setsebool tftp_anon_write 以下是具體實踐步驟可供參考1開啟防火牆ftp連接埠 vi /etc/sysconfig/iptables #編輯防火牆設定檔 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT(允許21連接埠通過防火牆) -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT(允許20連接埠通過防火牆) -A INPUT -m state --state NEW -m tcp -p tcp --dport 9000:9045 -j ACCEPT(設定ftp被動模式的連接埠範圍)注意:如果ftp連接埠修改為其它的連接埠(比如2222),這時防火牆就要開啟2222連接埠,這裡防火牆是以CentOS 6.0為例 -A INPUT -m state --state NEW -m tcp -p tcp --dport2222 -j ACCEPT(允許2222連接埠通過防火牆)/etc/init.d/iptables restart #重啟防火牆使配置生效 2、檢查系統是否已安裝vsftprpm -q vsftpdpackage vsftpd is not installed #說明系統沒有安裝vsftpd3、安裝vsftpdyum install vsftpd按Y斷行符號,系統自動安裝/etc/init.d/vsftpd start #啟動vsftpdservice vsftpd restart #重啟service vsftpd stop #停止chkconfig vsftpd on #設定開機時自動運行4、配置vsftp伺服器設定檔說明:/etc/vsftpd/vsftpd.conf vsftpd的核心設定檔/etc/vsftpd/ftpusers 用於指定哪些使用者不能訪問FTP伺服器/etc/vsftpd/user_list 指定允許使用vsftpd的使用者列表檔案/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些變數和設定指令碼/var/ftp/ 預設情況下匿名使用者的根目錄========================================================================配置/etc/vsftpd/vsftpd.conf配置前先備份cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.confbak恢複檔案cp /etc/vsftpd/vsftpd.confbak /etc/vsftpd/vsftpd.conf vi /etc/vsftpd/vsftpd.conf #配置 use_localtime=YES #ftp時間和系統同步,如果啟動有錯誤,請登出reverse_lookup_enable=NO #添加此行,解決用戶端登陸緩慢問題!重要!預設vsftpd開啟了DNS反響解析!這裡需要關閉,如果啟動有錯誤,請登出! listen_port=21 #預設無此行,ftp連接埠為21,添加listen_port=2222把預設連接埠修改為2222,注意:防火牆同時要開啟2222連接埠anonymous_enable=NO #禁止匿名使用者local_enable=YES設定本機使用者可以訪問。注意:主要是為虛擬宿主使用者,如果該項目設定為NO那麼所有虛擬使用者將無法訪問write_enable=YES #全域設定,是否容許寫入(無論是匿名使用者還是本機使用者,若要啟用上傳許可權的話,就要開啟他)local_umask=022 設定上傳後檔案的許可權掩碼。anon_upload_enable=NO 禁止匿名使用者上傳。anon_mkdir_write_enable=NO 禁止匿名使用者建立目錄。dirmessage_enable=YES 設定開啟目錄標語功能。xferlog_enable=YES 設定開啟日誌記錄功能。connect_from_port_20=YES 設定連接埠20進行資料連線。chown_uploads=NO 設定禁止上傳檔案更改宿主。xferlog_file=/var/log/vsftpd.log 日誌儲存路徑(先建立好檔案)xferlog_std_format=YES #使用標準格式async_abor_enable=YES 設定支援非同步傳輸功能。ascii_upload_enable=YESascii_download_enable=YES 設定支援ASCII模式的上傳和下載功能。ftpd_banner=Welcome to Awei FTP servers 設定Vsftpd的登陸標語。chroot_local_user=YES 禁止本機使用者登出自己的FTP主目錄。pam_service_name=vsftpd 設定PAM服務下Vsftpd的驗證設定檔名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd檔案配置。userlist_enable=YES 設為YES的時候,如果一個使用者名稱是在userlist_file參數指定的檔案中, 那麼在要求他們輸入密碼之前,會直接拒絕他們登陸。tcp_wrappers=YES 是否支援tcp_wrappersidle_session_timeout=300 #逾時設定data_connection_timeout=1 #空閑1秒後伺服器斷開#########################################################以下這些是關於Vsftpd虛擬使用者支援的重要設定項目。預設Vsftpd.conf中不包含這些設定項目,需要自己手動添加配置#########################################################guest_enable=YES 設定啟用虛擬使用者功能。guest_username=vsftpd 指定虛擬使用者的宿主使用者(這個是我們後面要建立的使用者)user_config_dir=/etc/vsftpd/vconf 設定虛擬使用者個人Vsftp的設定檔存放路徑。 也就是說,這個被指定的目錄裡,將存放每個Vsftp虛擬使用者個性的設定檔,一個需要注意的 地方就是這些設定檔名必須和虛擬使用者名稱相同。 比如說vsftpd.conf的設定檔,你複製到這個目錄下,你要mv一下,配置成虛擬使用者的名稱 virtual_use_local_privs=YES #當該參數啟用(YES)時,虛擬使用者使用與本機使用者相同的許可權。 #當此參數關閉(NO)時,虛擬使用者使用與匿名使用者相同的許可權。預設情況下此參數是關閉的(NO)。pasv_min_port=9000 (設定被動模式的連接埠範圍)pasv_max_port=9045 (設定被動模式的連接埠範圍)accept_timeout=5 #保持5秒connect_timeout=1 #1秒後重新串連 5、先建立虛擬使用者名稱單檔案:touch /etc/vsftpd/virtusers編輯虛擬使用者名稱單檔案:(第一行帳號,第二行密碼,注意:不能使用root做使用者名稱,系統保留)vi /etc/vsftpd/virtusersweb1123456web2123456web3123456=======================================================================6、產生虛擬使用者資料檔案:db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.dbchmod 600 /etc/vsftpd/virtusers.db #設定PAM驗證檔案,並指定對虛擬使用者資料庫檔案進行讀取=======================================================================7、在/etc/pam.d/vsftpd的檔案頭部加入以下資訊(在後面加入無效)修改前先備份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak恢複cp /etc/pam.d/vsftpdbak /etc/pam.d/vsftpdvi /etc/pam.d/vsftpd auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusersaccount sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers注意:如果系統為64為,則上面的lib改為lib64,否則配置失敗8、建立一個系統使用者vsftpd,使用者家目錄為/home/wwwroot, 使用者登入終端設為/bin/false(即使之不能登入系統) useradd vsftpd -d /home/wwwroot -s /bin/falsechown vsftpd:vsftpd /home/wwwroot -Rchown apache:apache /home/wwwroot -R #如果虛擬使用者的宿主使用者為apache,需要這樣設定。9、建立虛擬使用者個人Vsftp的設定檔系統營運 溫馨提醒:qihang01原創內容著作權,轉載請註明出處及原文連結mkdir /etc/vsftpd/vconfcd /etc/vsftpd/vconftouch web1 web2 web3 #這裡建立三個虛擬使用者設定檔 vi web1 #編輯使用者web1設定檔,其他的跟這個設定檔類似 local_root=/home/wwwroot/web1/write_enable=YESanon_world_readable_only=NOanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES10、最後重啟vsftpd伺服器/etc/init.d/vsftpd restart 備忘:guest_username=vsftpd #指定虛擬使用者的宿主使用者(就是我們前面建立的使用者)如ftp的目錄是指向網站根目錄的,用來上傳網站程式的話guest_username=apache #指定虛擬使用者的宿主使用者為apache運行賬戶,可以避免很多使用權限設定問題 如果產生虛擬使用者資料檔案的時候出現以下錯誤users.db-bash: db_load: command not found因為在執行db命令時候軟體包沒有安裝db4db4-develdb4-javadb4-tcldb4-utils 可以運行yum install db4* 命令安裝 至此,vsftpd安裝配置完成。