簡介:
vsftpd 是「very secure FTP daemon」的縮寫,安全性是它的一個最大的特色。linux
vsftpd 是一個 UNIX 類操做系統上運行的服務器的名字,它能夠運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個徹底免費的、開放源代碼的ftp服務器軟件,支持不少其餘的 FTP 服務器所不支持的特徵。vim
好比:很是高的安全性需求、帶寬限制、良好的可伸縮性、可建立虛擬用戶、支持IPv六、速率高等。安全
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特色是小巧輕快,安全易用。bash
特色:
①vsftpd 是以通常身份啓動服務,因此對於 Linux 系統的使用權限較低,對於Linux 系統的危害就相對的減低了。此外, vsftpd 亦利用 chroot() 這個函式進行改換根目錄的動做,使得系統工具不會被vsftpd 這支服務所誤用;
②任何須要具備較高執行權限的 vsftpd 指令均以一支特殊的上層程序( parent process ) 所控制 ,該上層程序享有的較高執行權限功能已經被限制的至關的低,並以不影響Linux 自己的系統爲準;
③全部來自 clients 端,想要使用這支上層程序所提供的較高執行權限之vsftpd 指令的需求,均被視爲『不可信任的要求』來處理,必須要通過至關程度的身份確認後,方可利用該上層程序的功能。例如chown(), Login 的要求等等動做;
④此外,上面提到的上層程序中,依然使用 chroot() 的功能來限制使用者的執行權限。
1.安裝vsftpd
環境:CentOS Linux release 7.6.1810 (Core)服務器
vsftpd版本:vsftpd.x86_64 0:3.0.2-25.el7 app
1.一、執行yum命令安裝
[root@Sungeek ~]# yum -y install vsftpd
1.二、修改配置文件
按照下面修改配置文件
tcp
[root@Sungeek ~]# cd /etc/vsftpd [root@Sungeek ~]# vim vsftpd.conf
#是否容許匿名,默認no anonymous_enable=NO #這個設定值必需要爲YES 時,在/etc/passwd內的帳號才能以實體用戶的方式登入咱們的vsftpd主機 local_enable=YES #具備寫權限 write_enable=YES #本地用戶建立文件或目錄的掩碼 local_umask=022 #當dirmessage_enable=YES時,能夠設定這個項目來讓vsftpd尋找該檔案來顯示訊息!您也能夠設定其它檔名! dirmessage_enable=YES #當設定爲YES時,使用者上傳與下載日誌都會被紀錄起來。記錄日誌與下一個xferlog_file設定選項有關 xferlog_enable=YES
xferlog_std_format=YES #上傳與下載日誌存放路徑 xferlog_file
=/var/log/xferlog #開啓20端口 connect_from_port_20=YES #關於系統安全的設定值: #ascii_download_enable=YES(NO) #若是設定爲YES ,那麼 client 就可使用 ASCII 格式下載檔案。 #通常來講,因爲啓動了這個設定項目可能會致使DoS 的攻擊,所以預設是NO。 #ascii_upload_enable=YES(NO) #與上一個設定相似的,只是這個設定針對上傳而言!預設是NO。 ascii_upload_enable=NO ascii_download_enable=NO
#經過搭配能實現如下幾種效果: #①當chroot_list_enable
=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list文件中列出的用戶,能夠切換到其餘目錄;未在文件中列出的用戶,不能切換到其餘目錄。 #②當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其餘目錄;未在文件中列出的用戶,能夠切換到其餘目錄。 #③當chroot_list_enable=NO,chroot_local_user=YES時,全部的用戶均不能切換到其餘目錄。 #④當chroot_list_enable=NO,chroot_local_user=NO時,全部的用戶都可以切換到其餘目錄。 chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list #這個是pam模塊的名稱,咱們放置在/etc/pam.d/vsftpd pam_service_name=vsftpd #固然咱們都習慣支持TCP Wrappers的啦! tcp_wrappers=YES #不添加下面這個會報錯:500 OOPS: vsftpd: refusing to run with writable root inside chroot() allow_writeable_chroot=YES #ftp的端口號 listen_port=60021
#啓動被動式聯機(passivemode) pasv_enable=YES #上面兩個是與passive mode 使用的 port number 有關,若是您想要使用65400到65410 這 11 個 port 來進行被動式資料的鏈接,能夠這樣設定 pasv_min_port=65400 pasv_max_port=65410 #FTP訪問目錄 local_root=/data/ftp/
1.三、添加防火牆開啓相關端口
這裏要是測試能夠先關閉防火牆ide
[root@tsemongo01 vsftpd]# systemctl stop firewalld
若是是正式環境,最好開啓防火牆,添加相應端口工具
#添加主端口 [root@tsemongo01 vsftpd]# firewall-cmd --permanent --zone=public --add-port=60021/tcp success #添加被動端口 [root@tsemongo01 vsftpd]# firewall-cmd --permanent --zone=public --add-port=65400-65410/tcp success [root@tsemongo01 vsftpd]# firewall-cmd --reload success
二、建立FTP用戶
添加FTP用戶命令:useradd XXX測試
設置FTP用戶密碼:passwd XXX
[root@Sungeek vsftpd]# useradd -d /data/ftp/ -s /sbin/nologin ftpuser [root@Sungeek vsftpd]# passwd ftpuser
查看FTP用戶是否設置不能經過SSH登陸,只能使用FTP
[root@Sungeek vsftpd]# vim /etc/passwd
找到建立的用戶把/bin/bash修改成/sbin/nologin
設置用戶訪問權限:
[root@Sungeek vsftpd]# chown -R ftpuser /data/ftp
三、設置vsftpd服務開機啓動
[root@Sungeek ~]# systemctl enable vsftpd.service
四、啓動暫停查看服務狀態命令
[root@Sungeek ~]# systemctl start vsftpd.service [root@Sungeek ~]# systemctl status vsftpd.service
五、安裝ftp客戶端驗證可否鏈接
隨便用一個ftp客戶端訪問測試是否鏈接成功便可!我用的是FileZilla Client
六、常見問題
6.一、問題1:
這種狀況是說明配置文件裏面設置的chroot_list_file=/etc/vsftpd/chroot_list沒找到這個文件
直接去/etc/vsftpd目錄cp一個user_list或者把配置文件裏面更名就行
6.二、問題2:
這種狀況是selinux沒有關閉,關閉selinux便可
[root@localhost ~]# vim /etc/selinux/config SELINUX=disabled
更多詳細的vsftpd的配置說明:https://baike.baidu.com/item/vsftpd/5254770?fr=aladdin