天天看點

CentOS7 FTP服務搭建(虛拟使用者通路FTP服務)

概述

  最近在搞Oracle在Linux系統下叢集,針對Linux系統,筆人也是一片空白。Liunx外部檔案的傳輸,避免不了使用FTP服務,是以現在就整理下,CentOS7環境下,FTP服務的搭建。FTP伺服器需要安裝vsftp服務端軟體。我們知道,在建立vsftpd使用者時,我們一般是在linux下建立使用者useradd的方式來通路ftp,但有時我們隻想提供ftp服務,而避免使用者用ftp的帳号去登入linux,采用一般的方式隻能是限制該使用者的通路權限,但還是避免不了使用者登入進linux系統,是以比較好的方法是用vsftpd的虛拟使用者(virtual users)。

FTP基于虛拟使用者的配置

一、配置防火牆,開啟FTP伺服器需要的端口

CentOS 7.0預設使用的是firewall作為防火牆,這裡改為iptables防火牆。

1、關閉firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall開機啟動      

2、安裝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 #設定防火牆開機啟動

二、關閉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開機啟動      

四、建立系統使用者vsftpd

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

chown vsftpd:vsftpd /home/wwwroot -R      

五、建立虛拟使用者個人Vsftp的配置檔案和子賬号FTP權限

mkdir /etc/vsftpd/vconf

cd /etc/vsftpd/vconf

touch web1  #這裡建立虛拟使用者配置檔案

mkdir -p /home/wwwroot/web1/http/mydic      

 #設定FTP上傳檔案新增權限,最新的vsftpd要求對主目錄不能有寫的權限是以ftp為755,主目錄下面的子目錄再設定777權限  

  chmod -R 755 /home/wwwroot/web1/http

  chmod R 777 /home/wwwroot/web1/http/mydic

vi web1 #編輯使用者web1配置檔案,其他的跟這個配置檔案類似,輸入下面紅色内容
      

 local_root=/home/wwwroot/web1/http/  #設定FTP賬号根目錄

 write_enable=YES

  anon_world_readable_only=NO

  anon_upload_enable=YES

  anon_mkdir_write_enable=YES

  anon_other_write_enable=YES

:wq! #儲存退出      

六、配置vsftp伺服器

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'

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      

配置檔案說明:

anonymous_enable=NO //設定不允許匿名通路
local_enable=YES //設定本地使用者可以通路。注:如使用虛拟宿主使用者,在該項目設定為NO的情況下所有虛拟使用者将無法通路
chroot_list_enable=YES //使使用者不能離開主目錄
ascii_upload_enable=YES
ascii_download_enable=YES //設定支援ASCII模式的上傳和下載下傳功能
pam_service_name=vsftpd   //PAM認證檔案名。PAM将根據/etc/pam.d/vsftpd進行認證


#以下這些是關于vsftpd虛拟使用者支援的重要配置項,預設vsftpd.conf中不包含這些設定項目,需要自己手動添加
guest_enable=YES //設定啟用虛拟使用者功能
guest_username=vsftpd //指定虛拟使用者的宿主使用者,CentOS中已經有内置的ftp使用者了,通過映射到vsftpd
user_config_dir=/etc/vsftpd/vuser_conf //設定虛拟使用者個人vsftp的CentOS FTP服務檔案存放路徑。存放虛拟使用者個性的CentOS FTP服務檔案(配置檔案名=虛拟使用者名)      

七、建立虛拟使用者名單檔案

touch /etc/vsftpd/virtusers      

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

vi /etc/vsftpd/virtusers
web1
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 #先注釋到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,否則配置失敗;

十、最後重新開機vsftpd伺服器

systemctl restart vsftpd.service      

可通過  tail -f /var/log/secure 指令,檢視伺服器安全日志,便于分析錯誤問題,設定操作效果一定要仔細.....

參考部落格:

CentOS FTP基于虛拟使用者的配置         http://www.cnblogs.com/surge/p/3868385.html

CentOS 7.0安裝配置vsftp伺服器        http://www.linuxidc.com/Linux/2016-09/135636.htm

vsftpd+pam=虛拟使用者登入FTP伺服器 http://blog.chinaunix.net/uid-7553302-id-2978313.html

centos 安裝vsftp 絕對成功包括目錄權限配置 http://blog.csdn.net/openn/article/details/8744650