自學linux——18.FTP服務器的搭建

                                                                  Centos7下FTP服務器的搭建php

1、FTP的做用數據庫

文件傳輸協議(File Transfer Protocol,FTP),是一種在互聯網中進行文件傳輸的協議,基於客戶端/服務器模式,默認使用 20、21 號端口,其中20端口是數據端口用於進行數據傳輸,21端口爲命令端口,用於接收客戶端發出的相關FTP命令和參數vim

FTP協議工做模式有兩種:主動模式和被動模式,其中被動模式是默認的工做模式centos

A.主動模式:FTP 服務器主動向客戶端發起鏈接請求安全

B.被動模式:FTP 服務器等待客戶端發起鏈接請求服務器

因爲FTP通常部署在企業內網,若是開啓並配置了防火牆,有時候須要將FTP的工做模式設置爲主動模式,才能夠傳輸數據網絡

2、vsftpd(FTP守護進程)三種認證模式測試

1.匿名開放模式:任何人均可以無需密碼驗證而直接登陸到FTP服務器ui

2.本地用戶模式:是經過Linux系統本地的帳戶密碼信息進行認證的模式centos7

3.虛擬用戶模式:須要爲FTP服務單獨 創建用戶數據庫文件,虛擬出用來進行口令驗證的帳戶信息,而這些帳戶信息在 服務器系統中其實是不存在的,僅供 FTP 服務程序進行認證使用。是三種模式中最安全的一種認證模式,用的最多

3、vsftpd.conf的主要參數(根據實際狀況來進行配置權限)

 

4、搭建流程

1.服務器端vsftpd的安裝

①    經過rpm命令查看是否已經安裝過vsftpd,若是沒有安裝則經過yum命令安裝    

rpm  - q  vsftpd              #查看是否安裝vsftpd                      
yum  -y  install  vsftpd      #下載vsftpd

 

安裝完成後,是否成功查看配置文件/etc/vsftpd/

rpm  -q  vsftpd             #查看是否安裝vsftpd 
ll /etc/vsftpd              #查看配置文件

 2.匹配認證模式

(1)匿名開放模式:匿名用戶能夠上傳、下載、建立、刪除、改名文件的權限

A.服務器端:

①    把主配置文件備份,刪除註釋的參數,再重定向將其覆蓋到主配置文件

cat /etc/vsftpd/vsftpd.conf          #查看配置文件(註釋看多很差看,把註釋刪除)
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #配置文件備份 ll /etc/vsftpd #查看文件(夾) grep -v "#" /etc/vsftpd/vsftpd.conf.bak >/etc/vsftpd/vsftpd.conf #刪除註釋的參數,再重定向將其覆蓋到配置文件 cat /etc/vsftpd/vsftpd.conf #查看配置文件(已沒有註釋參數)

 ②寫入相應的權限

vim /etc/vsftpd/vsftpd.conf       #編輯配置文件
anon_umask=022                    #匿名用戶上傳文件的umask的值 anon_upload_enable=YES #容許匿名用戶上傳文件 anon_mkdir_write_enable=YES #容許匿名用戶建立目錄 anon_other_write_enable=YES #容許匿名用戶其餘的權限(重命名,刪除)

③重啓vsftpd服務,並添加到開機啓動

systemctl restart vsftpd        #重啓服務
systemctl enable vsftpd         #添加到開機啓動

④在/var/ftp/pub/下建立文件

cd /var/ftp/pub/       #切換路徑
touch  文件名   #建立文件

⑤清除防火牆的默認策略(或直接關掉防火牆)

systemctl stop firewalld           #關閉防火牆    
yum -y install iptables-services   #下載iptables
systemctl enable iptables          #開啓自啓
systemctl start  iptables          #啓動iptables
iptables -F                        #清除策略
service iptables save              #保存配置

若直接關閉防火牆則不須要以上的操做,由於實際工做當中爲了安全防火牆是開啓的,而防火牆默認禁止了ftp傳輸的端口,所以清除防火牆的默認策略,centos7中沒有service iptables save指令來保存防火牆的規則,全部採用以上的方式來實現

⑥修改ftp用戶的權限

ll -d /var/ftp/pub                  #查看pub目錄
chown -Rf ftp /var/ftp/pub          #改變ftp用戶的權限
ll -d /var/ftp/pub                  #查看pub目錄

經過查看pub目錄發現只有root用戶纔有寫入的權限,因此直接把pub目錄全部者改成ftp用戶,讓ftp用戶也擁有寫入的權限

⑦修改ftp域相關的規則(或直接關掉SELinux,方法見17)

getenforce                        #查看SELinux的狀態
getsebool -a | grep ftp           #查看ftp的規則
setsebool -P ftpd_full_access=on  #修改ftpd_full_access爲永久打開

實際工做中SELinux通常都是開啓的,當SELinux狀態爲開啓,查看與ftp域相關的策略,修改當中的規則

B.客戶機端:

①經過rpm命令查看是否已經安裝過ftp,若是沒有安裝則經過yum命令安裝  

rpm -q ftp             #查看是否安裝ftp
yum -y install ftp     #下載ftp

②用ftp鏈接下載文件

ftp  服務器地址     #鏈接服務器端

匿名開放認證模式下,帳戶統一爲 anonymous,密碼爲空,進入後

ls               #查看文件/目錄
cd  pud          #切換路徑
ls               #查看文件/目錄
get  文件名       #下載文件
quit(exit)      #退出
ll               #能夠查看到剛下載的目錄

③用ftp鏈接建立目錄

ftp  服務器地址      #鏈接服務器端
anonymous  用戶名  密碼爲空
mkdir  文件名        #建立目錄
ls                  #查看剛建立的目錄
rmdir 文件名 #刪除目錄

回服務器端,用 ll  /var/ftp/pub能夠查看剛從客戶機端建立的目錄

(2)本地用戶模式

 A.服務器端:

①關閉匿名模式,開啓本地匿用戶模式,並添加相應的參數

anonymous_enable=NO            #關閉匿名模式登陸
local_enable=YES               #容許本地用戶登陸
write_enable=YES               #可寫權限
local_umask=022                #本地用戶模式建立文件的 umask 值
userlist_enable=YES            #啓用「禁止用戶名單」  
userlist_deny=YES              #開啓用戶做用名單文件功能

vsfftpd服務默認開啓了匿名模式和本地用戶模式,若是沒有手動配置一下

②重啓vsftpd服務

systemctl restart vsftpd       #重啓
systemctl enable vsftpd        #自啓

③建立用戶設置密碼

useradd  用戶名    #添加用戶
passwd   用戶名    #給用戶設置密碼

輸入密碼指令後,會提示輸入密碼和確認密碼

B.客戶機端

用ftp鏈接服務器後,用剛建立的用戶密碼登陸就能夠進行操做。

注意:

a.本地用戶模式不用修改用戶的權限,由於鏈接後默認訪問的是該用戶的家目錄(/home/ftptest)

b.該模式下默認禁止root和大部分系統用戶登陸,若是非登不可,就在服務器端刪除/etc/vsftpd/user_list和/etc/vsftpd/ftpusers路徑下的同個用戶名

(3)虛擬用戶模式

 A.服務器端

①在vuser.list中建立用戶信息

cd /etc/vsftpd/      #切換路徑
vim vuser.list       #建立用戶信息
用戶1
密碼
用戶2
密碼

②轉換用戶文件格式(db_load命令)

db_load                #查看是否安裝此命令(如有顯示以下)
usage: db_load [-nTV] [-c name=value] [-f file]
        [-h home] [-P password] [-t btree | hash | recno | queue] db_file
usage: db_load -r lsn | fileid [-h home] [-P password] db_file
yum -y install db4      #若沒有則下載(有就略過此步)
db_load -T -t hash -f vuser.list vuser.db   #明文的vuser.list文件轉換爲了vuser.db格式的文件
file vuser.db           #看是否轉換成功(成功以下)
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
ll vuser.db            #查看
chmod 600 vuser.db     #下降該文件的權限
rm -rf vuser.list      #刪除明文文件

③建立PAM文件

vim /etc/pam.d/vsftpd.vu      #建立並編輯.du文件
auth required pam_userdb.so db=/etc/vsftpd/vuser     #db參數
account required pam_userdb.so db=/etc/vsftpd/vuser  #db參數

.vu的文件名能夠任意,用於虛擬用戶認證,db參數爲上一步db_load命令生成的數據庫文件的路徑,不用寫後綴名

④建立本地用戶來映射虛擬用戶

useradd -d /var/ftpdir -s /sbin/nologin virtual   #建立虛擬用戶的映射帳戶
chmod -Rf 755 /var/ftpdir/       #修改權限

建立本地用戶來映射虛擬用戶,避免 系統沒法處理虛擬用戶所建立文件的屬性權限

⑤添加虛擬用戶模式的參數

anonymous_enable=NO      #禁止匿名開放模式
local_enable=YES         #容許本地用戶模式
guest_enable=YES         #開啓虛擬用戶模式
guest_username=virtual   #指定虛擬用戶帳戶
pam_service_name=vsftpd.vu(將vsftpd修改成vsftpd.vu)  #指定PAM文件,存放於/etc/pam.d/目錄下
allow_writeable_chroot=YES    #容許對禁錮的FTP根目錄執行寫入操做,並且不拒絕用戶的登陸請求

在本地模式的基礎上添加虛擬用戶模式的參數,必須關閉匿名模式,開啓本地模式,且修改pam_service_name參數爲vsftpd.vu

⑥設置虛擬用戶的權限

mkdir /etc/vsftpd/a(任意)      #建立用戶目錄,此目錄對應以前建立的用戶
cd a/                           #切換到建立的目錄路徑
touch 用戶1(默認查看權限)        #建立以前同樣的用戶並寫入相應的權限    
vim  用戶2                      #建立以前同樣的用戶並寫入相應的權限    
anon_upload_enable=YES          #上傳權限
anon_mkdir_write_enable=YES     #寫的權限
anon_other_write_enable=YES     #重命名,刪除權限

vim /etc/vsftpd/vsftpd.conf    #定義虛擬用戶不一樣權限的配置文件所存放的路徑
user_config_dir=/etc/vsftpd/a(文件中添加)

 ⑦重啓vsftpd服務

systemctl restart vsftpd

B.客戶機端

ftp鏈接用虛擬用戶1和用戶2登陸進行測試了,實現各自以前設置的權限便可

 

總結:

1.涉及到服務的配置,要考慮防火牆和SELinux的因素

2.配置了服務,都要加入開機啓動中,讓其每次重啓自動生效

3.出現問題從用戶權限、目錄權限、網絡防火牆、SELinux服務幾個方面去考慮

相關文章
相關標籤/搜索