Centos7安裝搭建FTP服務器(最簡便方法)


簡介:

vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個最大的特點。

vsftpd 是一個 UNIX 類操作系統上運行的服務器的名字,它可以運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個完全免費的、開放源代碼的ftp服務器軟件,支持很多其他的 FTP 服務器所不支持的特征。

比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可創建虛擬用戶、支持IPv6、速率高等。

vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。

 

特點:

①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 

1.1、執行yum命令安裝

[root@Sungeek ~]# yum -y install vsftpd

1.2、修改配置文件

按照下面修改配置文件

[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.3、添加防火牆開啟相關端口

這里要是測試可以先關閉防火牆

[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

2、創建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

3、設置vsftpd服務開機啟動

[root@Sungeek ~]# systemctl enable vsftpd.service

4、啟動暫停查看服務狀態命令

[root@Sungeek ~]# systemctl start vsftpd.service 
[root@Sungeek ~]# systemctl status vsftpd.service 

 

5、安裝ftp客戶端驗證能否連接

隨便用一個ftp客戶端訪問測試是否連接成功即可!我用的是FileZilla Client

6、常見問題

6.1、問題1:

這種情況是說明配置文件里面設置的chroot_list_file=/etc/vsftpd/chroot_list沒找到這個文件

直接去/etc/vsftpd目錄cp一個user_list或者把配置文件里面改名就行

6.2、問題2:

 這種情況是selinux沒有關閉,關閉selinux即可

[root@localhost ~]# vim /etc/selinux/config

SELINUX=disabled

更多詳細的vsftpd的配置說明:https://baike.baidu.com/item/vsftpd/5254770?fr=aladdin


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM