運維基本功(十九):文件共享服務之FTP解決方案

本文是在課程課件基礎上修改的學習筆記
課程原地址:https://www.bilibili.com/video/BV1nW411L7xm
若有侵刪
運維基本功(一):Linux系統安裝
運維基本功(二):Linux基本命令
運維基本功(三):Linux文件管理
運維基本功(四):Linux文件管理-Vim編輯器概述
運維基本功(五):Linux文件管理-用戶管理
運維基本功(六):Linux用戶管理-遠程管理
運維基本功(七):Linux的權限管理操做
運維基本功(八):Linux自有服務與軟件包管理
運維基本功(九): Linux自有服務-防火牆&計劃任務
運維基本功(十): Linux計劃任務以及進程檢測與控制
運維基本功(十一): LAMP項目部署實戰
運維基本功(十二): Linux命令回顧與擴展
運維基本功(十三): 再談用戶組管理
運維基本功(十四):Linux下yum源配置實戰
運維基本功(十五):Linux系統優化基礎
運維基本功(十六):遠程管理SSH服務
運維基本功(十七):遠程管理SSH服務免密登陸解決方案
運維基本功(十八): Linux系統下數據同步服務RSYNC解決方案
運維基本功(十九): 文件共享服務之FTP解決方案linux

任務背景

某創業公司剛剛起步,隨着業務量的增多,諮詢和投訴的用戶也愈來愈多,公司的客服部門由原來的2個增長到5個。客服部門平時須要處理大量的用戶反饋,不論是郵件,仍是QQ,仍是電話,客服人員都會針對每一次的用戶反饋作詳細的記錄 ,可是因爲客觀緣由,客服人員沒有成熟穩定的客戶服務系統,因此但願運維部門可以協助搭建一個文件共享服務來管理這些文檔,而且隨時跟蹤客戶的反饋狀況。web

任務要求

  1. 客服人員必須使用用戶名密碼(kefu/123)的方式登陸服務器來下載相應文檔
  2. 不容許匿名用戶訪問
  3. 客服部門的相關文檔保存在指定的目錄裏/data/kefu local_root=/data/kefu
  4. 客服用戶使用用戶kefu/123登陸後就只能在默認的/data/kefu目錄裏活動

理論儲備

FTP服務概述

一、FTP服務介紹

FTP(File Transfer Protocol)是一種應用很是普遍而且古老的一個互聯網文件傳輸協議。shell

文件傳輸:文件上傳與文件下載vim

在這裏插入圖片描述

  • 主要用於互聯網中文件的雙向傳輸(上傳/下載)、文件共享
  • 跨平臺 Linux、Windows
  • FTP是C/S架構,擁有一個客戶端和服務端,使用TCP協議做爲底層傳輸協議,提供可靠的數據傳輸
  • FTP的默認端口 21號(命令端口) 20號(數據端口,主動模式下) 默認被動模式
  • FTP程序(軟件)vsftpd

FTP軟件名稱 => vsftpd => vs(very secure ftp daemon)瀏覽器

二、FTP服務的客戶端工具

  • Linux:ftp、lftp(客戶端程序)
  • Windows:FlashFXP(虛擬主機)、FileZilla、IE、Chrome、Firefox
  • lftp和ftp工具區別:
    • lftp:默認是以匿名用戶訪問
    • ftp:默認是以用戶名/密碼方式訪問
    • lftp能夠批量而且下載目錄

三、FTP的兩種運行模式

在FTP服務中,其一共擁有兩種模式(主動模式 + 被動模式)服務器

參考點,FTP的服務器端。若是是FTP服務器端主動鏈接客戶端=>主動模式,若是是客戶端主動鏈接FTP服務器端=>被動模式。架構

主動模式

在這裏插入圖片描述

cmd:命令端口(發送FTP請求)app

data:數據端口(後期用於傳輸數據)運維

1. 客戶端打開大於1023的隨機命令端口和大於1023的隨機數據端口向服務的的21號端口發起請求
2. 服務端的21號命令端口響應客戶端的隨機命令端口
3. 服務端的20號端口主動請求鏈接客戶端的隨機數據端口
4. 客戶端的隨機數據端口進行確認

被動模式

在這裏插入圖片描述

1. 客戶端打開大於1023的隨機命令端口和大於1023的隨機數據端口向服務的的21號端口發起請求
2. 服務端的21號命令端口響應客戶端的隨機命令端口
3. 客戶端主動鏈接服務端打開的大於1023的隨機數據端口
4. 服務端進行確認

FTP默認使用的就是被動模式!tcp

四、搭建FTP服務

1. 關閉防火牆和selinux
2. 配置yum源(mount /dev/sr0 /mnt)
3. 軟件三部曲
4. 瞭解配置文件
5. 根據需求修改配置文件來完成服務的搭建
6. 啓動服務,開機自啓動
7. 測試驗證

第一步:關閉防火牆與SELinux

# systemctl stop firewalld
# systemctl disable firewalld

# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled

第二步:配置YUM源

有網配置公網YUM源(阿里、清華、華爲),沒網就配置本地YUM源
# mount /dev/sr0 /mnt
# yum clean all
# yum makecache

第三步:安裝vsftpd軟件(FTP => vsftpd)

# yum install vsftpd -y

第四步:啓動ftp服務並添加到開機啓動項中

# systemctl start vsftpd
# systemctl enable vsftpd

第五步:測試FTP是否安裝成功

# ifconfig ens33
inet 10.1.1.10  netmask 255.255.255.0  broadcast 10.1.1.255

☆ 基於瀏覽器的訪問

在這裏插入圖片描述

☆ 基於Windows資源管理器的訪問

在這裏插入圖片描述

☆ 基於FlashFxp、FileZilla軟件

在這裏插入圖片描述

☆ 基於ftp以及lftp命令進行鏈接(Linux與Linux之間的FTP文件傳輸)

yum install ftp lftp -y
# ftp 10.1.1.10

五、FTP的配置文件詳解

在Server服務器端,使用rpm -ql vsftpd

# rpm -ql vsftpd
/usr/lib/systemd/system/vsftpd.service	啓動腳本
/etc/vsftpd								配置文件的目錄
/etc/vsftpd/ftpusers				    用戶列表文件,黑名單
/etc/vsftpd/user_list				    用戶列表文件,可黑可白(默認是黑名單)
/etc/vsftpd/vsftpd.conf					配置文件(主配置文件)
/usr/sbin/vsftpd						程序自己(二進制的命令)
/var/ftp								匿名用戶的默認數據根目錄
/var/ftp/pub							匿名用戶的擴展數據目錄

vsftpd配置文件詳解:

# grep -v ^# /etc/vsftpd/vsftpd.conf
anonymous_enable=YES			支持匿名用戶訪問	
local_enable=YES				支持非匿名用戶,普通帳號登陸,默認進入到本身家目錄
write_enable=YES				寫總開關
local_umask=022					反掩碼  file:644  rw- r-- r-- dir:755
dirmessage_enable=YES			啓用消息功能
xferlog_enable=YES				開啓或啓用xferlog日誌
connect_from_port_20=YES		支持主動模式(默認被動模式)
xferlog_std_format=YES			xferlog日誌格式
listen=YES					    ftp服務獨立模式下的監聽

pam_service_name=vsftpd			指定認證文件
userlist_enable=YES				啓用用戶列表
tcp_wrappers=YES				支持tcp_wrappers功能(FTP限速操做)

# man 5 vsftpd.conf

解決方案

一、任務背景

簡單來講:根據咱們所學的內容(FTP)搭建一個客戶服務系統(主要涉及客服資料上傳與下載)

1. 客服人員必須使用用戶名密碼(kefu/123)的方式登陸服務器來下載相應文檔
2. 不容許匿名用戶訪問
3. 客服部門的相關文檔保存在指定的目錄裏/data/kefu    local_root=/data/kefu
4. 客服用戶使用用戶kefu/123登陸後就只能在默認的/data/kefu目錄裏活動

二、建立客服帳號(Server)

# useradd kefu
# echo 123 |passwd --stdin kefu

三、不容許匿名用戶訪問

# vim /etc/vsftpd/vsftpd.conf
12行 anonymous_enable=NO

配置修改完畢後,必定要重啓vsftpd服務

# systemctl restart vsftpd

四、指定帳號訪問的目錄

# mkdir /data/kefu -p
# vim /etc/vsftpd/vsftpd.conf
17行 local_root=/data/kefu

五、限定kefu/123只能在/data/kefu目錄下活動

禁錮kefu用戶只能在/data/kefu目錄下

# vim /etc/vsftp/vsftpd.conf
18行 chroot_local_user=YES

配置修改完畢後,必定要重啓vsftpd服務

# systemctl restart vsftpd

一些知識點

一、500 OOPS

在這裏插入圖片描述

以上問題主要出如今FTP2.3.5之後的版本中,固然你可使用

# rpm -qi vsftpd 查看版本信息

解決方案:

① 去除寫權限(治標不治本)

# chmod a-w /home/dhj

② 核心解決方案,添加一個選項

# vim /etc/vsftpd/vsftpd.conf19行 allow_writeable_chroot=YES

二、沒法上傳

之因此沒法上傳,主要緣由在於kefu這個帳號對於/data/kefu文件夾沒有w寫權限

# setfacl -R -m u:kefu:rwx /data/kefu# systemctl restart vsftpd

三、禁錮目錄補充

18行 chroot_local_user=YES  禁錮全部用戶

需求:咱們能不能給一小部分用戶開通非禁錮權限。

# vim /etc/vsftpd/vsftpd.conf105行 chroot_list_enable=YES 開啓用戶列表文件107行 chroot_list_file=/etc/vsftpd/chroot_list 指定用戶列表文件echo kefu >> /etc/vsftpd/chroot_list 表明客服這個帳號不會被禁錮在指定目錄# systemctl restart vsftpd