說明:本文是參考了 CSDN的博主:xiaocia 的文章《 CentOS7 搭建FTP服務器》進行親手操作驗證可行的。但是有一個不足之處就是:
linux系統重啟后,ftp就無法訪問呢了。我對此也提供了修正方法,具體請查看本文第七節
軟件環境:
+ CentOS7a明:我的環境安裝時CentOS最小化安裝,所有很多工具和軟件都是沒有默認安裝的
一:安裝FTP軟件包
1 :安裝軟件包: yum install vsftpd -y

2:安裝完后,有/etc/vsftpd/vsftpd.conf文件,該文件是vsftp的配置文件。


二:專門新建一個FTP服務器的用戶
1:建立用戶:
命令:useradd ftpuser 新增一個用戶ftpuser
passwd ftpuser 為ftpuser設定密碼,期間會有兩次提示輸入密碼確認。

三:為FTP服務器設置防火牆
ftp默認端口是21,而centos默認是沒有開啟的,所以要修改iptables文件
vi /etc/sysconfig/iptables


-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT 最后:wq 保存
重啟防火牆:service iptables restart
注意:會出現iptables.service文件不存在,由於Centos7默認是firewall作為防火牆,這里改為iptables防火牆
systemctl start firewalld.service #啟動firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
[root@bogon ~]# setsebool -P allow_ftpd_full_access on
[root@bogon ~]# setsebool -P ftp_home_dir on
最后安裝iptables防火牆
sudo yum install iptables-services
設置防火牆開機啟動
sudo systemctl enable iptables

四、修改seliunx
注意:如果外網是可以訪問上去了,可是發現沒法返回目錄(使用ftp的主動模式,被動模式還是無法訪問),也上傳不了,因為selinux作怪了。

setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on
執行上面命令,再返回的結果看到兩行都是off,代表,沒有開啟外網的訪問
會發現狀態已經是on了
這樣應該沒問題了(如果,還是不行,看看是不是用了ftp客戶端工具用了passive模式訪問了,如提示Entering Passive mode,就代表是passive模式,默認是不行的,因為ftp passive模式被iptables擋住了,下面會講怎么開啟,如果懶得開的話,就看看你客戶端ftp是否有port模式的選項,或者把passive模式的選項去掉。如果客戶端還是不行,看看客戶端上的主機的電腦是否開了防火牆,關吧)

五、關閉匿名訪問
修改/etc/vsftpd/vsftpd.conf文件
vi /etc/vsftpd/vsftpd.conf

重啟FTP服務:service vsftpd restart
六、開啟被動模式
默認是開啟的,但是要指定一個端口范圍,打開vsftpd.conf文件,在后面加上
pasv_min_port=30000
pasv_max_port=30999
表示端口范圍為30000~30999,這個可以隨意改。改完重啟一下vsftpd
由於指定這段端口范圍,iptables也要相應的開啟這個范圍,所以像上面那樣打開iptables文件。
也是在21上下面另起一行,更那行差不多,只是把21改為30000:30999,然后:wq保存,重啟下iptables。這樣就搞定了。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
修改前:

修改后:

-=======================================================================================================================================
修改 vsftpd 表示端口范圍為30000~30999。改完重啟一下

===============================================================================================================================================================================================================
ttp工具測試:因為ip 為 192.168.1.3 所以ftp的連接IP為此值


===========================================================
在linux下開啟FTP服務
1. 首先服務器要安裝ftp軟件,查看是否已經安裝ftp軟件下:
#which vsftpd
如果看到有vsftpd的目錄說明服務器已經安裝了ftp軟件
2. 查看ftp 服務器狀態
#service vsftpd status
3. 啟動ftp服務器
#service vsftpd start
4. 重啟ftp服務器
#service vsftpd restart
5. 查看服務有沒有啟動
#netstat -an | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
如果看到以上信息,證明ftp服務已經開啟。
6.如果需要開啟root用戶的ftp權限要修改以下兩個文件
#vi /etc/vsftpd.ftpusers中注釋掉root
#vi /etc/vsftpd.user_list中也注釋掉root
然后重新啟動ftp服務。
7. vsftpd 500 OOPS: cannot change directory
登陸報錯:
C:\>ftp 192.168.0.101
Connected to 192.168.0.101.
220 (vsFTPd 2.0.5)
User (192.168.0.101:(none)): frank
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/frank
Login failed.
ftp> ls
500 OOPS: child died
Connection closed by remote host.
解決方法:
setsebool ftpd_disable_trans 1
service vsftpd restart
就OK了!
這是SELinux的設置命令,在不熟悉SELnux前,把SELinux關掉也可以的。
======================================================================================================================
處理方法1: 運行ntsysv命令,然后選擇上ftp的服務,下次重啟機器就會自動啟動ftp服務了。<注:此次借鑒百度問答>
具體操作步驟如下:
1:如下圖:輸入 ntsysv ,再按下回車鍵

2:如下圖,找到 ftp的服務,光標切換到ftp選項,按下空格使其處於選中狀態,在用 tab 按鈕 使其光標切換到 OK 鍵,敲下回車按鈕即可。

3:重啟linux系統:reboot ;等系統重啟完畢后,再次用ftp工具鏈接測試通過


方法二:[root@localhost ~]# chkconfig vsftpd on <注:該方法我沒有測試過。借鑒於:csdn:JAVA_DIRECTION>

