1. 程式人生 > >centos7 搭建ftp伺服器 供多使用者上傳檔案

centos7 搭建ftp伺服器 供多使用者上傳檔案

Liunx外部檔案的傳輸,避免不了使用FTP服務,所以現在就整理下,CentOS7環境下,FTP服務的搭建。FTP伺服器需要安裝vsftp服務端軟體。我們知道,在建立vsftpd使用者時,我們一般是在linux下建立使用者useradd的方式來訪問ftp,但有時我們只想提供ftp服務,而避免使用者用ftp的帳號去登入linux,採用一般的方式只能是限制該使用者的訪問許可權,但還是避免不了使用者登入進linux系統,所以比較好的方法是用vsftpd的虛擬使用者(virtual users)。

CentOS 7.0預設使用的是firewall作為防火牆,這裡改為iptables防火牆(有的已經有iptable防火牆).

1、安裝iptables防火牆(有iptables防火牆的可以忽略這一步)

  yum install iptables-services #安裝

  vi /etc/sysconfig/iptables      #編輯防火牆配置檔案,新增下面紅色部分進入iptables,說明:21埠是ftp服務埠;10060到10090是Vsftpd被動模式需要的埠,可自定義一段大於1024的tcp埠 

  -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 

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

 :wq! #儲存退出

 systemctl restart iptables.service #最後重啟防火牆使配置生效

 systemctl enable iptables.service #設定防火牆開機啟動

二、關閉防火牆

1、關閉firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall開機啟動
2關閉SELINUX
vi /etc/selinux/config

#SELINUX=enforcing #註釋掉

#SELINUXTYPE=targeted #註釋掉

SELINUX
=disabled #增加 :wq! #儲存退出 setenforce 0 #使配置立即生效

三、安裝vsftpd

rpm -qc vsftpd #查詢vsftpd是否安裝

yum install -y vsftpd #安裝vsftpd

yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI  #安裝vsftpd虛擬使用者配置依賴包

systemctl start vsftpd.service #啟動

systemctl enable vsftpd.service #設定vsftpd開機啟動

四、配置vsftp伺服器

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak #備份預設配置檔案

執行以下命令進行設定 (注:  sed -i  "s/str1/str2/g" /file_path   該命令為將file_paht中的str1全部替換為str2)

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' (注:ASCII 方式傳輸資料)

sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf' (注:ASCII 方式下載資料)

sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'  (注:登陸成功後提示語)

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

如下圖:


五、建立虛擬使用者名稱單檔案

touch /etc/vsftpd/virtusers

編輯虛擬使用者名稱單檔案:(第一行賬號,第二行密碼,注意:不能使用root做使用者名稱,系統保留)

vi /etc/vsftpd/virtusers

web1

123456

web2

123456

web3

123456

:wq! #儲存退出

六、生成虛擬使用者資料檔案

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

chmod 600 /etc/vsftpd/virtusers.db #設定PAM驗證檔案,並指定對虛擬使用者資料庫檔案進行讀取

七、在/etc/pam.d/vsftpd的檔案頭部加入以下資訊(在後面加入無效)

修改前先備份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak

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位,上面lib64改為lib,否則配置失敗

八、新建系統使用者vsftpd,使用者目錄為/home/wwwroot, 使用者登入終端設為/bin/false(即使之不能登入系統)

useradd vsftpd -d /home/wwwroot -s /bin/false  #使用者目錄為/home/wwwroot, 使用者登入終端設為/bin/false(即使之不能登入系統)

chown vsftpd:vsftpd /home/wwwroot -R

chown www:www /home/wwwroot -R     #如果虛擬使用者的宿主使用者為www,需要這樣設定。

九、建立虛擬使用者個人Vsftp的配置檔案

mkdir /etc/vsftpd/vconf

cd /etc/vsftpd/vconf

touch web1 web2 web3    #這裡建立三個虛擬使用者配置檔案

mkdir -p /home/wwwroot/web1  #建立上傳目錄

vim web1    #編輯使用者web1配置檔案,其他兩個(web2  web3 注意要建立使用者上傳的目錄)的跟這個配置檔案類似

local_root=/home/wwwroot/web1      #web1使用者訪問的根目錄

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

十、最後重啟vsftpd伺服器

systemctl restart vsftpd.service

這樣就OK了.

可通過  tail -f /var/log/secure 指令,檢視伺服器安全日誌,便於分析錯誤問題.