一、FTP服務
1、Linux下ftp客戶端管理工具
ftp、lftp都是Linux下ftp的客戶端管理工具,但是需要獨立安裝
# yum install ftp lftp -y
☆ ftp工具
# ftp 10.1.1.10
Connected to 10.1.1.10 (10.1.1.10).
220 (vsFTPd 3.0.2)
Name (10.1.1.10:root): 輸入FTP的賬號331 Please specify the password.
Password: 輸入FTP賬號對應的密碼230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
求幫助:
ftp> ?或help
Commands may be abbreviated. Commands are:! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
第一個命令:ls命令
ftp> ls
查看當前連接的FTP目錄下有哪些文件。
第二個命令(快捷鍵):Ctrl + Shift + L
Ctrl + Shift + L代表清屏命令
第三個命令:help命令
ftp> help put
put send one file
第四個命令:put與get命令
ftp> put 本地文件路徑+名稱 上傳
ftp> get 遠程文件路徑+名稱 下載
第五個命令:批量上傳或下載多個文件
ftp> mput 文件名稱1 文件名稱2 文件名稱3 ...
ftp> mget 文件名稱1 文件名稱2 文件名稱3 ...
第六個命令:prompt屏蔽批量輸出信息
ftp> prompt
Interactive mode on. => 開啟提示ftp> prompt
Interactive mode off. => 關閉提示
第七個命令:quit命令
ftp> quit
☆ lftp工具:批量操作
# lftp 用戶名稱@遠程IP地址
Password:用戶名稱對應的密碼
求幫助:help
lftp> help
針對某個命令求幫助:help + 命令
lftp> help mirror
案例:批量上傳(把shop文件夾上傳到FTP服務器端)
lftp> mirror -R 本地文件夾名稱
案例:批量下載(把整個FTP下載到本地)
lftp> mirror 遠程FTP路徑
2、FTP知識點補充
☆ FTP訪問對象控制(黑名單)
ftpusers 黑名單
user_list 默認是黑名單(可以成為白名單)
案例:默認情況下,root賬號是否允許登錄FTP服務器
[root@localhost ftp]# ftp 10.1.1.10
Connected to 10.1.1.10 (10.1.1.10).
220 (vsFTPd 3.0.2)
Name (10.1.1.10:root): root
530 Permission denied.
Login failed.
ftp>
原因:root用戶在黑名單里/etc/vsftpd/ftpusers黑名單中
案例:ftpusers 與 user_list黑名單效果不同點
ftpusers:
[root@localhost ftp]# ftp 10.1.1.10
Connected to 10.1.1.10 (10.1.1.10).
220 (vsFTPd 3.0.2)
Name (10.1.1.10:root): kefu
331 Please specify the password.
Password:
530 Login incorrect. => ftpusers被禁用,可以輸入密碼,返回530
Login failed.user_list:
[root@localhost ftp]# ftp 10.1.1.10
Connected to 10.1.1.10 (10.1.1.10).
220 (vsFTPd 3.0.2)
Name (10.1.1.10:root): kefu
530 Permission denied.
Login failed.
原因:默認情況下user_list文件也是黑名單,如果在該文件里直接拒絕,不給輸入密碼的機會。
案例:user_list可以從黑名單變成白名單(允許某個用戶登錄FTP系統服務器)
user_list要成為白名單,需要再配置文件里增加:
userlist_deny=NO
注意:如果user_list是白名單,那么必須在該文件里的用戶才可以訪問ftp服務。
總結:
- 用戶在ftpusers文件中,那么用戶不能訪問ftp服務器
- 用戶在user_list文件中,如果該文件是白名單,那么只在該文件中的用戶可以訪問ftp服務
- 如果user_list文件是白名單,用戶即在ftpusers中又在user_list中,那么ftpusers拒絕優先
☆ FTP網絡訪問控制(限IP+限速)
FTP必須支持tcp_wrappers
/etc/hosts.allow 允許
/etc/hosts.deny 拒絕
☆ 限制IP地址
案例:如何禁止某個IP或IP網段
# vim /etc/hosts.deny
服務程序:主機
vsftpd:all 全部拒絕
vsftpd:all EXCEPT 192.168.0.2 拒絕所有除了192.168.0.2
vsftpd:192.168.0.254 拒絕單個IP地址vsftpd:192.168.0.254:allow
//以上是允許192.168.0.254訪問,類似/etc/hosts.allow里增加vsftpd:192.168.0.254vsftpd:192.168.0.0/255.255.255.0 拒絕某個網段
vsftpd:192.168.0.0/255.255.255.0 EXCEPT 192.168.0.254 拒絕某個網段,但是除了某個ip地址
注意:子網掩碼不支持192.168.0.0/24這種寫法vim /etc/hosts.deny
vsftpd,sshd:10.1.1.1
案例:如何判斷某個服務是否支持tcp_wrappers
1)./configure –enable-libwrap 表示支持tcp_wrappers訪問控制(源碼安裝看配置項)
2)rpm安裝(也包括yum安裝)
# ldd命令 +二進制程序,查詢某個軟件包含哪些模塊
案例:查詢vsftpd與sshd是否支持tcp_wrappers
# ldd /usr/sbin/vsftpd |grep libwrap*libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f2956480000)# ldd /usr/sbin/sshd |grep libwrap*libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f015ff29000)
☆ 限制FTP流量
# vim /etc/vsftpd/vsftpd.conf
local_max_rate=0
0代表不限速local_max_rate=數值 + 字節
3、使用第三方平臺視頻
第一步:在Linux電腦中安裝httpd(阿帕奇)
# yum install httpd -y
第二步:啟動httpd
# systemctl start httpd
第三步:在/var/www/html項目目錄中創建一個demo.html文件
# vim /var/www/html/demo.html
<iframe height=498 width=815 src='https://player.youku.com/embed/XNDU4OTM3NzM0NA==' frameborder=0 'allowfullscreen'></iframe>
二、NFS服務概述
1、任務背景
① 搭建NFS服務器(用于靜態資源的存儲如圖片、視頻、附件)
② 使用mount指定對NFS服務器進行掛載,掛載到Web服務器中
③ 對NFS服務器中的靜態資源進行實時備份(inotify + rsync)
2、環境準備
編號 主機名稱FQDN IP地址 作用
1 web.itcast.cn 10.1.1.11 Web服務器
2 nfs.itcast.cn 10.1.1.12 NFS服務器
3 backup.itcast.cn 10.1.1.13 Backup服務器
第一步:設置計算機的在主機名稱
Web# hostnamectl set-hostname web.itcast.cn
NFS# hostnamectl set-hostname nfs.itcast.cn
Backup# hostnamectl set-hostname backup.itcast.cn
第二步:設置IP地址
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
IPADDR=10.1.1.11 /10.1.1.13 /10.1.1.13
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
DNS1=119.29.29.29
DNS2=114.114.114.114UUID必須是唯一的,所以要么刪除,要么更改UUID的值(更改后3位)
第三步:關閉防火墻與SELinux
關閉防火墻
# systemctl stop firewalld
# systemctl disable firewalld關閉SELinux
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
第四步:配置YUM源
# yum clean all
# yum mackecache
3、NFS概述
NFS(Network File System)網絡文件系統,主要用于Linux系統上實現文件共享的一種協議,其客戶端主要是Linux
沒有用戶認證機制,且數據在網絡上傳送的時候是明文傳送,一般只能在局域網中使用
支持多節點同時掛載及并發寫入
企業應用:為集群中的web server提供后端存儲(做靜態資源服務器)
4、NFS組成
rpcbind : 負責NFS的數據傳輸,遠程過程調用 tcp/udp協議 端口111
nfs-utils :控制共享哪些文件,權限管理
RPC(Remote Procedure Call Protocol):
遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,不需要了解底層網絡技術的協議。
5、與NFS相關的軟件包
nfs-utils-1.2.3-26.el6.x86_64 nfs服務的一個腳本控制工具(服務端與客戶端)
nfs4-acl-tools-0.3.3-6.el6.x86_64 acl 工具包
nfs-utils-lib-1.1.5-4.el6.x86_64 nfs 庫文件
6、安裝NFS軟件
# yum install rpcbind nfs-utils -y# rpm -q rpcbind
# rpm -aq|grep ^nfs
7、NFS的配置文件
# vim /etc/exports
共享目錄 共享選項
/share *(ro,sync)
/public *(ro,sync)共享主機:
* :代表所有主機
192.168.0.0/24:代表共享給某個網段192.168.0.1 ~ 192.168.0.254
192.168.0.0/24(rw) 192.168.1.0/24(ro) :代表共享給不同網段
192.168.0.254:共享給某個IP
*.itcast.cn:代表共享給某個域下的所有主機共享選項:
ro:只讀
rw:讀寫
sync:實時同步,直接寫入磁盤(安全性最高)
async:異步,先緩存數據在內存然后再同步磁盤(效率最高,但是有丟失文件風險)
anonuid:設置訪問nfs服務的用戶的uid,uid需要在/etc/passwd中存在
anongid:設置訪問nfs服務的用戶的gid
root_squash :默認選項 root用戶創建的文件的屬主和屬組都變成nfsnobody,其他人nfs-server端是它自己,client端是nobody。(訪問NFS服務器時,映射為匿名賬號)
no_root_squash:root用戶創建的文件屬主和屬組還是root,其他人server端是它自己uid,client端是nobody。(訪問NFS服務器時,映射為root管理員賬號)
all_squash: 不管是root還是其他普通用戶創建的文件的屬主和屬組都是nfsnobody說明:
anonuid和anongid參數和all_squash一起使用。
all_squash表示不管是root還是其他普通用戶從客戶端所創建的文件在服務器端的擁有者和所屬組都是nfsnobody;服務端為了對文件做相應管理,可以設置anonuid和anongid進而指定文件的擁有者和所屬組
三、NFS任務解決方案
1、搭建NFS服務器
第一步:安裝軟件
# yum install rpcbind nfs-utils -y
第二步:創建一個共享目錄,如/share
# mkdir /share
2、編寫NFS主配置文件
# vim /etc/exports
共享目錄 共享選項
/share 10.1.1.0/24(rw,sync)
3、啟動相關的NFS服務
# systemctl start rpcbind
# systemctl start nfs# ss -naltp |grep 111 111端口
4、搭建Web服務器
# yum install httpd -y
# systemctl start httpd
當Apache軟件啟動完畢后,會自動占用計算機的80端口。
80端口指向Web服務器的目錄 => /var/www/html
所以項目源代碼都可以直接存放于/var/www/html目錄下
# echo "NFS實戰演練" > /var/www/html/index.html
5、在Web服務器中掛載NFS
# mkdir /var/www/html/media# mount -t nfs 10.1.1.12:/share /var/www/html/media
或
# mount.nfs 10.1.1.12:/share /var/www/html/media# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 5.1G 12G 30% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 28K 182M 1% /run/user/1000
/dev/sr0 4.3G 4.3G 0 100% /run/media/itheima/CentOS 7 x86_64
tmpfs 182M 0 182M 0% /run/user/0
10.1.1.12:/share 17G 5.1G 12G 30% /var/www/html/media如果客戶端沒有安裝nfs工具可能導致掛載失敗:
yum -y install nfs-utils nfs-utils-lib nfs4-acl-tools
6、上傳aws.mp4視頻到NFS服務器的/share
第一步:使用MX上傳aws.mp4到/share目錄(NFS服務器)
第二步:在Web服務器中,ll /var/www/html/media目錄
# ll /var/www/html/media
aws.mp4
7、在html網頁中調用aws.mp4文件
# vim /var/www/html/index.html
<video width="800" height="450" controls><source src="media/aws.mp4">
</video>
8、對NFS服務器進行實時備份
NFS服務器:/share目錄有變化,馬上rsync進行同步Backup備份服務器的/backup目錄
第一步:安裝inotify工具(NFS服務器)
# tar xf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure && make && make install
第二步:編寫rsync.sh腳本,監控/share目錄的變化
# vim rsync.sh
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /share |while read events
dorsync -a --delete /share/ 10.1.1.13:/backup/echo "`date +%F\ %T`出現事件$events" >> /var/log/rsync.log 2>&1
done
第三步:給rsync添加x權限
# chmod +x rsync.sh
第四步:把NFS服務器與Backup備份服務器進行免密登錄
# ssh-keygen
# ssh-copy-id root@10.1.1.13
第五步:在Backup服務器中創建一個/backup目錄,用于實時備份
# mkdir /backup
第六步:在NFS服務器中執行rsync腳本
# nohup ./rsync.sh &