1.NFS前端
NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它容許網絡中的計算機之間經過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用能夠透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件同樣。linux
好處:ios
.
.web
2.Sambavim
Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通訊協議,它爲局域網內的不一樣計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機經過該協議能夠訪問服務器上的共享文件系統、打印機及其餘資源。經過設置「NetBIOS over TCP/IP」使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。windows
好處:後端
.
.centos
3.FTP瀏覽器
FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱爲「文傳協議」。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不一樣的操做系統有不一樣的FTP應用程序,而全部這些應用程序都遵照同一種協議以傳輸文件。在FTP的使用當中,用戶常常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠程主機拷貝文件至本身的計算機上;"上傳"文件就是將文件從本身的計算機中拷貝至遠程主機上。服務器
好處:
.
.
.
1.NFS
1.1語法:
nfsstat(選項) -s:僅列出NFS服務器端狀態; -c:僅列出NFS客戶端狀態; -n:僅列出NFS狀態,默認顯示nfs客戶端和服務器的狀態; -2:僅列出NFS版本2的狀態; -3:僅列出NFS版本3的狀態; -4:僅列出NFS版本4的狀態; -m:打印以加載的nfs文件系統狀態; -r:僅打印rpc狀態。
1.2 安裝
[root@linuxview ~]# yum install -y nfs-utils
1.3配置
NFS的經常使用目錄 /etc/exports NFS服務的主要配置文件 /usr/sbin/exportfs NFS服務的管理命令 /usr/sbin/showmount 客戶端的查看命令 /var/lib/nfs/etab 記錄NFS分享出來的目錄的完整權限設定值 /var/lib/nfs/xtab 記錄曾經登陸過的客戶端信息 [root@linuxview ~]# vim /etc/exports [root@linuxview ~]# cat /etc/exports /server/source 192.168.0.0/16(rw,no_root_squash,sync) [root@linuxview ~]# systemctl restart nfs [root@linuxview ~]# cd /server/source/ [root@linuxview source]# touch linuxview.txt [root@linuxview source]# echo hello >> linuxview.txt [root@linuxview source]# ls linuxview.txt [root@linuxview source]# systemctl status nfs ● nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled) Active: active (exited) since Thu 2018-09-13 22:36:14 CST; 6s ago Process: 2695 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS) Process: 2692 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS) Process: 2690 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS) Process: 2715 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS) Process: 2708 ExecStartPre=/bin/sh -c /bin/kill -HUP `cat /run/gssproxy.pid` (code=exited, status=0/SUCCESS) Process: 2707 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) Main PID: 2715 (code=exited, status=0/SUCCESS) CGroup: /system.slice/nfs-server.service Sep 13 22:36:14 linuxview systemd[1]: Starting NFS server and services... Sep 13 22:36:14 linuxview systemd[1]: Started NFS server and services. [root@linuxview source]#
1.4 客戶端掛載
[root@web2 ~]# showmount -e 192.168.1.9 Export list for 192.168.1.9: /server/source 192.168.0.0/16 [root@web2 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 17811456 2445572 15365884 14% / devtmpfs 1919556 0 1919556 0% /dev tmpfs 1931784 4 1931780 1% /dev/shm tmpfs 1931784 11824 1919960 1% /run tmpfs 1931784 0 1931784 0% /sys/fs/cgroup /dev/sda1 1038336 145092 893244 14% /boot tmpfs 386360 0 386360 0% /run/user/0 [root@web2 ~]# mount -t nfs 192.168.1.9:/server/source /mnt/ [root@web2 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 17811456 2445592 15365864 14% / devtmpfs 1919556 0 1919556 0% /dev tmpfs 1931784 4 1931780 1% /dev/shm tmpfs 1931784 11828 1919956 1% /run tmpfs 1931784 0 1931784 0% /sys/fs/cgroup /dev/sda1 1038336 145092 893244 14% /boot tmpfs 386360 0 386360 0% /run/user/0 192.168.1.9:/server/source 17811456 2445312 15366144 14% /mnt [root@web2 ~]# cd /mnt/ [root@web2 mnt]# ls linuxview.txt [root@web2 mnt]# cat linuxview.txt hello [root@web2 mnt]#
1.5 參數說明
exports文件的編寫格式
<輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其餘)] [客戶端2 選項(訪問權限,用戶映射,其餘)]
輸出目錄爲NFS目錄,客戶端爲要鏈接到NFS的客戶端,訪問權限指客戶端的操做權限,用戶映射能夠限制用戶權限客戶端經常使用的指定方式
指定ip地址的主機 192.168.0.200
指定子網中的全部主機 192.168.0.0/24
指定域名的主機 a.liusuping.com
指定域中的全部主機 .liusuping.com
全部主機
訪問權限選項
設置輸出目錄只讀 ro
設置輸出目錄讀寫 rw
用戶映射選項
all_squash 將遠程訪問的全部普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody);
no_all_squash 與all_squash取反(默認設置);
root_squash 將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置);
no_root_squash 與rootsquash取反;
anonuid=xxx 將遠程訪問的全部用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx);
anongid=xxx 將遠程訪問的全部用戶組都映射爲匿名用 戶組帳戶,並指定該匿名用戶組帳戶爲本地用戶組帳戶(GID=xxx);
其它選項
secure 限制客戶端只能從小於1024的tcp/ip端口鏈接nfs服務器(默認設置);
insecure 容許客戶端從大於1024的tcp/ip端口鏈接服務器;
sync 將數據同步寫入內存緩衝區與磁盤中,效率低,但能夠保證數據的一致性;
async 將數據先保存在內存緩衝區中,必要時才寫入磁盤;
wdelay 檢查是否有相關的寫操做,若是有則將這些寫操做 一塊兒執行,這樣能夠提升效率(默認設置);
no_wdelay 如有寫操做則當即執行,應與sync配合使用;
subtree 若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
no_subtree 即便輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣能夠提升效率;
2.Samba
2.1 安裝
[root@linuxview ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@linuxview ~]# uname -a Linux linuxview 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [root@linuxview ~]# getenforce Disabled [root@linuxview ~]# yum install -y samba samba-client samba-swat
2.2 共享文件
[root@linuxview ~]# useradd linuxview [root@linuxview ~]# smbpasswd -a linuxview New SMB password: Retype new SMB password: Added user linuxview. [root@linuxview ~]# vim /etc/samba/smb.conf [smbshare] comment = share path = /server/data browseable = yes writable = yes available = yes admin users = linuxview valid users = linuxview public = yes [root@linuxview ~]# mkdir -p /server/data [root@linuxview ~]# systemctl restart smb [root@linuxview ~]# systemctl status smb ● smb.service - Samba SMB Daemon Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled) Active: active (running) since Sun 2018-09-16 13:57:17 CST; 3s ago Main PID: 28641 (smbd) Status: "smbd: ready to serve connections..." CGroup: /system.slice/smb.service ├─28641 /usr/sbin/smbd --foreground --no-process-group ├─28643 /usr/sbin/smbd --foreground --no-process-group ├─28644 /usr/sbin/smbd --foreground --no-process-group └─28645 /usr/sbin/smbd --foreground --no-process-group Sep 16 13:57:17 linuxview systemd[1]: Starting Samba SMB Daemon... Sep 16 13:57:17 linuxview smbd[28641]: [2018/09/16 13:57:17.272004, 0] ../lib/u...y) Sep 16 13:57:17 linuxview smbd[28641]: STATUS=daemon 'smbd' finished starting ...ns Sep 16 13:57:17 linuxview systemd[1]: Started Samba SMB Daemon. Hint: Some lines were ellipsized, use -l to show in full.
2.3 客戶端掛載
Windows訪問
Linux訪問掛載
[root@client ~]# smbclient -U linuxview //192.168.1.9/smbshare Enter SAMBA\linuxview's password: Try "help" to get a list of possible commands. smb: \> ls . D 0 Sun Sep 16 17:59:15 2018 .. D 0 Sun Sep 16 13:50:31 2018 test N 0 Sun Sep 16 17:05:39 2018 17811456 blocks of size 1024. 15328676 blocks available 掛載文件 [root@client /]# #mount //192.168.1.9/smbshare /mnt -o username=linuxview [root@client /]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 17811456 2472244 15339212 14% / devtmpfs 1919556 0 1919556 0% /dev tmpfs 1931784 4 1931780 1% /dev/shm tmpfs 1931784 11836 1919948 1% /run tmpfs 1931784 0 1931784 0% /sys/fs/cgroup /dev/sda1 1038336 145092 893244 14% /boot tmpfs 386360 0 386360 0% /run/user/0 [root@client /]# mount //192.168.1.9/smbshare /mnt -o username=linuxview Password for linuxview@//192.168.1.9/smbshare: ****** [root@client /]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 17811456 2472244 15339212 14% / devtmpfs 1919556 0 1919556 0% /dev tmpfs 1931784 4 1931780 1% /dev/shm tmpfs 1931784 11836 1919948 1% /run tmpfs 1931784 0 1931784 0% /sys/fs/cgroup /dev/sda1 1038336 145092 893244 14% /boot tmpfs 386360 0 386360 0% /run/user/0 //192.168.1.9/smbshare 17811456 2482316 15329140 14% /mnt [root@client /]# cd /mnt/ [root@client mnt]# ls test [root@client mnt]#
2.4 Samba共享目錄下操做命令
smb: \> help ? allinfo altname archive backup blocksize cancel case_sensitive cd chmod chown close del deltree dir du echo exit get getfacl geteas hardlink help history iosize lcd link lock lowercase ls l mask md mget mkdir more mput newer notify open posix posix_encrypt posix_open posix_mkdir posix_rmdir posix_unlink posix_whoami print prompt put pwd q queue quit readlink rd recurse reget rename reput rm rmdir showacls setea setmode scopy stat symlink tar tarmode timeout translate unlock volume vuid wdel logon listconnect showconnect tcon tdis tid logoff .. ! smb: \>
3.FTP
3.1 安裝[root@linuxview ~]# yum install -y vsftpd
3.2 建立ftp用戶
[root@linuxview ~]# useradd ftpuser [root@linuxview ~]# passwd ftpuser Changing password for user ftpuser. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all authentication tokens updated successfully. [root@linuxview ~]# getenforce Disabled [root@linuxview ~]#
3.3 啓動ftp服務
[root@linuxview ~]# service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] [root@linuxview ~]# ps -aux |grep vsftpd Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ root 2587 0.0 0.0 52124 812 ? Ss 21:34 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 2591 0.0 0.0 103324 856 pts/0 S+ 21:35 0:00 grep vsftpd [root@linuxview ~]#
3.4 客戶端訪問並掛載
瀏覽器訪問:
命令行訪問:
1.NFS
NFS 的基本原則是「允許不一樣的客戶端及服務端經過一組RPC分享相同的文件系統」,它是獨立於操做系統,允許不一樣硬件及操做系統的系統共同進行文件的分享。
NFS在文件傳送或信息傳送過程當中依賴於RPC協議。RPC,遠程過程調用 (Remote Procedure Call) 是能使客戶端執行其餘系統中程序的一種機制。NFS自己是沒有提供信息傳輸的協議和功能的,但NFS卻能讓咱們經過網絡進行資料的分享,這是由於NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。能夠說NFS自己就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。因此只要用到NFS的地方都要啓動RPC服務,不管是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能經過RPC來實現PROGRAM PORT的對應。能夠這麼理解RPC和NFS的關係:NFS是一個文件系統,而RPC是負責負責信息的傳輸。
工做流程原理:
當訪問程序經過NFS客戶端向NFS服務端存取文件時,其請求數據流程以下幾點:
首先用戶訪問網站程序,由程序在NFS客戶端上發出NFS文件存取功能的詢問請求,這時NFS客戶端(即執行程序的服務器)RPC服務(portmap 或rpcbind服務)就會經過網絡向NFS服務端的RPC服務(即portmap或rpcbind服務)的111端口發出NFS文件存取功能的詢問請求。
NFS服務端的RPC服務(即portmap或rpcbind服務)找到對應的已註冊的NFSdaemon端口後,通知NFS客戶端的RPC服務(即portmap或rpcbind服務)。
此時NFS客戶端就可獲取到正確的端口,而後就直接與NFS daemon聯機存取數據了。
NFS客戶端把數據存取成功後,返回給前端程序,告訴用戶存取結果,做爲網站用戶,咱們就完成了一次存取操做。
因爲NFS的各項功能都須要向RPC服務(即portmap或rpcbind)註冊,因此RPC服務(即portmap或rpcbind服務)才能獲取到NFS服務的各項對應的端口號(portnumber)、PID、NFS在主機所監聽的IP等,而NFS客戶端纔可以經過向RPC服務(即portmap或rpcbind服務)詢問從而找到正確的端口。也就是說,NFS須要有RPC服務(即portmap或rpc服務),NFS服務只需在服務端後於RPC服務啓動,客戶端無需啓動NFS服務。
NFS的rpc服務,在CentOS5.X下名稱爲portmap,在CentOS6.x下名稱爲rpcbind。
2.Samba
SAMBA主要提供的是SMB/CIFS或者NETBIOS協議的。
因此只要使用了SAMBA,就能實現讓Linux出如今Windows的網上鄰居里,或者,讓Windows的文件共享在Linux上--
一旦在linux上安裝以後,有兩個主要進程:
1.nmbd :提供NETBIOS 名稱解析的
2.smdb : 提供文件共享的。而因爲NETBIOS協議對於windows來說監聽TCP的139端口和UDP的137,138端口 ,因此nmbd在linux上模擬出了udp的137和138端口,以及tcp的139端口,smdb上模擬出 tcp的445端口。而SAMBA將在Linux上同時監聽這4個端口。
主要部分
兩個守護程序:smbd 和 nmbd(對客戶端提供NetBIOS名服務)
配置文件:/etc/smb.conf
使用工具:smbclient,smbstatus,smbmount,smbumount,smbprint,smbprint.sysv,smbrun
samba的啓動腳本在/etc/rc.d/init.d/smb
3.FTP
FTP的傳輸使用的是TCP封包協議。
FTP服務器使用了兩個聯機,分別是:
命令信道
數據流通道(ftp-data)
兩個聯機通道的關係是怎麼樣的?以FTP預設的主動式(active)聯機來作說明:
主動指的是FTP服務器主動聯機客戶端,做爲數據通道;
創建命令通道的聯機
客戶端會隨機取一個大於 1024 以上的端口 (port AA) 來與 FTP服務器端的 port 21 達成聯機, 這個過程固然TCP三次握手了!
達成聯機後客戶端即可以透過這個聯機來對 FTP 服務器下達指令, 包括查詢文件名、下載、上傳等指令
通知 FTP 服務器端,使用 active 且告知鏈接的端口號
客戶端在須要數據的狀況下,會告知服務器端要用什麼方式來聯機,若是是主動式 (active) 聯機時, 客戶端會先隨機啓用一個端口號 (圖21.1-1 當中的 port BB) ,且透過命令通道告知 FTP 服務器這兩個信息,並等待 FTP 服務器的聯機;
FTP 服務器『主動』向客戶端聯機
FTP 服務器由命令通道瞭解客戶端的需求後,會主動的由 20 這個端口號向客戶端的 port BB 聯機, 這個聯機固然也會通過TCP三次握手!此時 FTP 的客戶端與服務器端共會創建兩條聯機,分別用在命令的下達與數據的傳遞。 而預設 FTP服務器端使用的主動聯機端口號就是 port 20 !
如此一來則成功的創建起『命令』與『數據傳輸』兩個信道!不過,要注意的是,數據傳輸信道是在有數據傳輸的行爲時纔會創建的通道喔!並非一開始鏈接到FTP 服務器就馬上創建的通道
由上可見,主動式聯機使用到的端口號:
命令通道的 ftp (默認爲 port 21)
數據傳輸的 ftp-data (默認爲 port 20)
在主動聯機的 FTP 服務器與客戶端之間具備防火牆的聯機問題
通常來講,不少的局域網絡都會使用防火牆(iptables) 的 NAT 功能,那麼在 NAT 後端的 FTP 用戶如何鏈接到 FTP 服務器呢?
服務器主動連到 NAT 等待轉遞至客戶端的聯機問題:
因爲透過 NAT 的轉換後, FTP 服務器只能得知 NAT 的 IP 而不是客戶端的IP , 所以 FTP 服務器會以 port 20 主動的向 NAT 的 port BB 發送主動聯機的要求。 但你的 NAT 並無啓動 port BB 來監聽 FTP 服務器的聯機啊!
解決辦法:
使用iptables所提供的FTP偵測模塊
ip_conntrack_ftp 及 ip_nat_ftp 等模塊主動的分析『目標是 port 21 的聯機』信息,獲得port BB 的資料,
此時若接受到 FTP 服務器的主動聯機,就可以將該封包導向正確的後端主機了。
客戶端選擇被動式(Passive)聯機模式
主動式,是指 服務器主動聯機客戶端。那被動式,就是客戶端聯機服務器。這裏都是指的數據傳輸聯機。
21.1.3 客戶端選擇被動式聯機模式
用戶與服務器創建命令信道
客戶端發出 PASV 的聯機要求
發出聯機要求,病等待服務器的迴應
FTP 服務器啓動數據端口口,並通知客戶端聯機
這個端口號碼不是主動式的port 20 ,而是隨機的。
告知客戶端這個 port PASV;
客戶端隨機取用大於 1024 的端口號進行鏈接