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服務幾個方面去考慮