CentOS7配置FTP服務器加強版~(零基礎學會FTP配置)

ps:原文不知出處,可是原文也不能正常啓動,這裏作了一些修改!若是能正常配置請在下方留言讓更多的人看到,由於以前我本人照着網上的教程安裝卸載了十屢次也沒法正常使用,不但願後面的兄弟繼續浪費時間,若是不能使用,也請勞煩貼出相應的錯誤!
參考:
1、 防火牆設置( CentOS 7.0默認使用的是firewall做爲防火牆,這裏改成iptables防火牆)

1.  安裝iptables防火牆mysql

# 先檢查是否安裝了iptables(若是提示iptables:unrecognized service 則表示系統還沒有安裝)linux

service iptables statusweb

# 安裝iptablessql

yum install iptables數據庫

# 升級iptablesvim

yum update iptables 瀏覽器

# 安裝iptables-services安全

yum install iptables-services服務器

2. 關閉Firewallsession

# 中止firewall 服務

systemctl stop firewalld.service         

# 禁用firewall 服務   

systemctl mask firewalld.service         

# 禁止firewall服務開機啓動 

systemctl disable firewalld.service      

# 查看firewall服務狀態

firewall-cmd --state         

3. 查看Iptables所在目錄與配置文件

#安裝完成後,配置文件默認所在位置

# /etc/sysconfig/iptables

4. 設置現有規則

# 查看iptables現有規則  

iptables -L -n                  

# 先容許全部,否則有可能會杯具

iptables -P INPUT ACCEPT        

# 清空全部默認規則       

iptables -F      

# 清空全部自定義規則                                        

iptables -X         

# 全部計數器歸0                                    

iptables -Z                                             

4.1 iptables 規則設置

# 容許來自於lo接口的數據包(本地訪問)

iptables -A INPUT -i lo -j ACCEPT

# 容許本機對外訪問

iptables -A OUTPUT -j ACCEPT

# 容許接受本機請求以後的返回數據 RELATED,是爲FTP設置的

iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT

# 開放22端口(SSH)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 開放2一、20端口(FTP)

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

iptables -A INPUT -p tcp --dport 20 -j ACCEPT

# 開放80端口(HTTP)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 開放443端口(HTTPS)

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 容許ping

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# 10060到10090是Vsftpd被動模式須要的端口,可自定義一段大於1024的tcp端口

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT

# 這兩條的意思是在INPUT表和FORWARD表中拒絕全部其餘不符合上述任何一條規則的數據包。

而且發送一條host prohibited的消息給被拒絕的主機。

iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

注:防火牆的規則是從上到下解析的

4.2 保存規則設定

 

# 保存上述規則

service iptables save

# 查看iptables現有規則

iptables -L -n   

4.3 開啓iptables服務 

# 最後重啓防火牆使配置生效

systemctl restart iptables.service

# 設置防火牆開機啓動

systemctl enable iptables.service

# 查看狀態

systemctl status iptables.service

# 肯定是否enabled

systemctl list-unit-files | grep iptables

 

2、 關閉SELINUX

vi /etc/selinux/config

#SELINUX=enforcing # 註釋掉

#SELINUXTYPE=targeted # 註釋掉

SELINUX=disabled # 增長

:wq! # 保存退出

 
setenforce 0 # 使配置當即生效
若是出現:setenforce: SELinux is disabled解決辦法(不少是沒有注意到這個細節致使最後ftp沒法訪問!)

若是在使用setenforce命令設置selinux狀態的時候出現這個提示:setenforce: SELinux is disabled

那麼說明selinux已經被完全的關閉了

若是須要從新開啓selinux,請按下面步驟:

vi /etc/selinux/config

更改成:SELINUX=1

必須重啓linux,不重啓是沒辦法馬上開啓selinux的

重啓完之後,使用getenforce,setenforce等命令就不會報「setenforce: SELinux is disabled」了
 
而後再重複:
 
SELINUX=disabled # 增長
 
保存退出
 
setenforce 0 # 使配置當即生效
 
若是沒有出現setenforce: SELinux is disabled就繼續下一步,不然請先將此問題解決!

 

3、 安裝vsftpd 

# 安裝vsftpd

yum install -y vsftpd 

yum -y install ftp vsftpd

# 安裝vsftpd虛擬用戶配置依賴包

yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI 

# 啓動

systemctl start vsftpd.service

 

# 查看vsftpd服務的狀態

systemctl status vsftpd.service

systemctl list-unit-files | grep vsftpd.service

# 設置vsftpd開機啓動

systemctl enable vsftpd.service 

 

4、 配置

# 備份默認配置文件

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak 

# 執行如下命令進行設置
sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
 
sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'
 

#以後添加下列內容到vsftpd.conf末尾

vim /etc/vsftpd/vsftpd.conf

 

use_localtime=YES

listen_port=21

chroot_local_user=YES

idle_session_timeout=300

guest_enable=YES

guest_username=vsftpd

user_config_dir=/etc/vsftpd/vconf

data_connection_timeout=1

virtual_use_local_privs=YES

pasv_min_port=10060

pasv_max_port=10090

accept_timeout=5

connect_timeout=1

echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300 \

ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd \

nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES \

npasv_min_port=10060\npasv_max_port=10090 \

naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf

 

5、 創建虛擬用戶名單文件

touch /etc/vsftpd/virtusers

# 編輯虛擬用戶名單文件:(第一行帳號,第二行密碼,注意:不能使用root作用戶名,系統保留)

vi /etc/vsftpd/virtusers

web1

123456

web2

123456

web3

123456

 

6、 生成虛擬用戶數據文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

#設定PAM驗證文件,並指定對虛擬用戶數據庫文件進行讀取

chmod 600 /etc/vsftpd/virtusers.db 

 

7、 在/etc/pam.d/vsftpd文件添加如下信息

# 修改前先備份 

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak

# 將auth及account的全部配置行均註釋掉

vi /etc/pam.d/vsftpd

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

注:若是系統爲32位,上面改成lib,不然配置失敗

 

8、 新建系統用戶vsftpd,用戶目錄爲/home/vsftpd, 用戶登陸終端設爲/bin/false(即:使之不能登陸系統)

useradd vsftpd -d /home/vsftpd -s /bin/false

chown -R vsftpd:vsftpd /home/vsftpd


9、 創建虛擬用戶我的Vsftp的配置文件

mkdir /etc/vsftpd/vconf

cd /etc/vsftpd/vconf

touch web1 web2 web3 # 這裏建立三個虛擬用戶配置文件

mkdir -p /home/vsftpd/web1/

vi web1 # 編輯用戶web1配置文件,其餘的跟這個配置文件相似

local_root=/home/vsftpd/web1/

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

 

10、 重啓vsftpd服務器

systemctl restart vsftpd.service

# 查看vsftpd服務的狀態

systemctl status vsftpd.service

systemctl list-unit-files | grep vsftpd

 
最後在瀏覽器或者個人電腦裏輸入 ftp://192.168.163.126(局域網)測試!
能夠登陸可是沒法上傳下載,接下來:
 mkdir /home/vsftpd/web1/m/
web1目錄的全部者爲root,因此ftp賬號web1不能進行下載

 

chown -R vsftpd:vsftpd /home/vsftpd/web1/m/
這樣 /home/vsftpd/web1/m/  m這個目錄的全部者爲vdftpd即ftp賬號本身,web1賬號就能在m文件夾下進行上傳下載刪除!

 

  /*******************************************************************************************/
通常狀況下,爲了網站更安全,咱們須要給文件或文件夾設置權限,在採用FTP登陸的方式下,常常會用到755,766,777,644等設置。
具體這些數字都表明什麼意思呢?
這三個數字分別表示:不一樣用戶或用戶組的權限。
    第一個數字 表示文件全部者的權限
    第二個數字 表示與文件全部者同屬一個用戶組的其餘用戶的權限
    第三個數字 表示其它用戶組的權限。
權限分爲三種: 讀(r=4),寫(w=2),執行(x=1)。
綜合起來還有可讀可執行5(rx=5=4+1)、可讀可寫6(rw=6=4+2)、可讀可寫可執行7(rwx=7=4+2+1)。
因此,755 設置用戶的權限爲:
1.文件全部者可讀可寫可執行 2.與文件全部者同屬一個用戶組的其餘用戶可讀可執行 3.其它用戶組可讀可執行
相關文章
相關標籤/搜索