2018-07-13(NFS,FTP搭建)

14.1 NFS介紹

NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它容許網絡中的計算機之間經過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用能夠透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件同樣
NFS最先由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新爲4.1版本
NFS數據傳輸基於RPC協議,RPC爲Remote Procedure Call的簡寫。
NFS應用場景是:A,B,C三臺機器上須要保證被訪問到的文件是同樣的,A共享數據出來,B和C分別去掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致
2018-07-13(NFS,FTP搭建)
NFS原理圖: 服務端須要啓動一個NFS服務,服務端要想給客戶端提供服務,須要藉助RPC協議,RPC協議是由rpcbind服務實現;在centos 5或者以前的版本叫portmap服務;以後的版本叫rpcbind服務;NFS服務默認不會監放任何端口;最終實現NFS服務,須要藉助rpcbind服務產生的RPC協議,RPC協議默認監聽的端口是111; 整個流程爲:服務端的NFS服務監聽一個端口經過RPC協議監聽的端口,告訴客戶端RPC協議,而後客戶端經過本機的RPC端口回傳數據信息到服務端NFS監聽的端口,最終實現通訊
2018-07-13(NFS,FTP搭建)
NFS的優缺點分析mysql

優勢 linux

  • 節省本地存儲空間,將經常使用的數據存放在一臺NFS服務器上且能夠經過網絡訪問,那麼本地終端將能夠減小自身存儲空間的使用。
  • 要在網絡中的每一個機器上都建有Home目錄,Home目錄能夠放在NFS服務器上且能夠在網絡上被訪問使用。
  • 一些存儲設備如軟驅、CDROM和Zip(一種高儲存密度的磁盤驅動器與磁盤)等均可以在網絡上被別的機器使用。這能夠減小整個網絡上可移動介質設備的數量。

缺點
有上面的工做原理能夠看出,由較少的客戶端訪問相對較小的數據集時這種結構工做的很好,經過直接鏈接的存儲器可以收到顯著的效益(就象你PC上的磁盤);也就是數據可以由多個客戶端共享,可以由任何有NFS能力的客戶端訪問。但是若是大量的客戶端須要訪問數據或太大的數據集時,NFS服務器很快就變成了一個瓶頸,抑制了系統性能。
[NFS 處理高性能計算(HPC)一直不夠理想。高性能計算涉及到的數據文件很是龐大,而且 NFS 客戶機的數量可能達到幾千臺。(想想擁有數千個計算節點的計算集羣或網格)。在這裏,NFS 是一個負擔,由於 NFS 服務器的侷限性 — 好比帶寬、存儲容量和處理器速度 — 限制了整體計算性能。NFS 在這裏成了瓶頸。]—IBM解釋nginx

14.2 NFS服務端安裝配置

準備工做:
兩臺或以上機器,一臺做爲服務端,其餘爲客戶端,
這裏用192.168.66.132做爲服務端,安裝nfs-utils和rpcbind包,192.168.66.131爲客戶端,安裝nfs-utils包
服務端安裝配置sql

一、 #安裝nfs-utils和rpcbind
[root@02 ~]# yum install -y nfs-utils rpcbind                           
二、#安裝完後修改配置文件,指定要進行分享的目錄;指定要共享該目錄的機器,ip能夠ip段,也能夠寫ip
[root@02 ~]# vim /etc/exports                                      
/home/nfstestdir 192.168.66.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
三、#建立分享目錄並制定權限,這裏爲了實驗把權限設置爲777
[root@02 ~]# mkdir /home/nfstestdir
[root@02 ~]# chmod 777 /home/nfstestdir  
四、#啓動服務並查看
[root@02 ~]# systemctl start rpcbind
[root@02 ~]# ps aux |grep rpcbind                                        
rpc        1593  0.2  0.1  65000  1040 ?        Ss   09:56   0:00 /sbin/rpcbind -w
root       1595  0.0  0.0 112720   972 pts/0    S+   09:56   0:00 grep --color=auto rpcbind
[root@02 ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1593/rpcbind  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      812/nginx: master p 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      790/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1112/master         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      812/nginx: master p 
tcp6       0      0 :::111                  :::*                    LISTEN      1593/rpcbind        
tcp6       0      0 :::22                   :::*                    LISTEN      790/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1112/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1095/mysqld         
udp        0      0 0.0.0.0:920             0.0.0.0:*                           1593/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1593/rpcbind        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           535/chronyd         
udp6       0      0 :::920                  :::*                                1593/rpcbind        
udp6       0      0 :::111                  :::*                                1593/rpcbind        
udp6       0      0 ::1:323                 :::*                                535/chronyd         
raw6       0      0 :::58                   :::*                    7           543/NetworkManager 
五、#啓動nfs服務,在啓動nfs服務後會自動啓動rpc相關的其餘服務。
[root@02 ~]# systemctl start nfs
[root@02 ~]# ps aux |grep rpc
rpc        1593  0.0  0.1  65000  1416 ?        Ss   09:56   0:00 /sbin/rpcbind -w
rpcuser    1629  0.0  0.1  42420  1756 ?        Ss   10:04   0:00 /usr/sbin/rpc.statd
root       1631  0.0  0.0      0     0 ?        S<   10:04   0:00 [rpciod]
root       1640  0.0  0.0  19360   400 ?        Ss   10:04   0:00 /usr/sbin/rpc.idmapd
root       1643  0.0  0.0  42608   944 ?        Ss   10:04   0:00 /usr/sbin/rpc.mountd
root       1682  0.0  0.0 112720   972 pts/0    R+   10:05   0:00 grep --color=auto rpc
六、#若是想讓nfs服務開機自啓動,還須要執行如下命令。
[root@02 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

14.3 NFS配置選項

[root@02 ~]# cat /etc/exports
/home/nfstestdir 192.168.66.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)     #括號裏面的爲權限相關的一些配置選項

NFS配置選項的含義:shell

• rw 讀寫vim

• ro 只讀windows

• sync 同步模式,內存數據實時寫入磁盤centos

• async 非同步模式數組

• no_root_squash 客戶端掛載NFS共享目錄後,root用戶不受約束,權限很大安全

• root_squash 與上面選項相對,客戶端上的root用戶收到約束,被限定成某個普通用戶

• all_squash 客戶端上全部用戶在使用NFS共享目錄時都被限定爲一個普通用戶

• anonuid/anongid 和上面幾個選項搭配使用,定義被限定用戶的uid和gid

客戶端上作一個掛載

一、安裝rpcbind,rpcbind包是由nfs-utils自帶的包一塊兒安裝的。

[root@01 ~]# yum install -y nfs-utils

二、查看服務端分享的目錄,這showmount -e 加服務端的ip查看

[root@01 ~]# showmount -e 192.168.66.132
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

#若是出現上面的報錯,說明網絡不通,沒有辦法和192.168.66.132的111端口通信,要麼是對方的rpcbind服務沒有開啓,若是服務開啓了還不行,那就是防火牆的關係致使。須要配置防火牆放行nfs服務和rpcbind服務的端口

這是做測試用,把服務端和客戶端的防火牆都關閉,包括selinux。

[root@02 ~]# systemctl stop firewalld  關閉服務端防火牆
[root@02 ~]# setenforce 0
[root@01 ~]# systemctl stop firewalld  關閉客戶端防火牆
[root@01 ~]# setenforce 0

再用showmount -e查看,就能夠看到服務端分享的目錄和容許的ip

[root@01 ~]# showmount -e 192.168.66.132
Export list for 192.168.66.132:
/home/nfstestdir 192.168.66.0/24

三、把服務端分享的目錄掛載到本地

[root@01 ~]# mount -t nfs 192.168.66.132:/home/nfstestdir /mnt
[root@01 ~]# df -h
文件系統                         容量  已用  可用 已用% 掛載點
/dev/sda3                         18G  7.1G   11G   40% /
devtmpfs                         479M     0  479M    0% /dev
tmpfs                            489M     0  489M    0% /dev/shm
tmpfs                            489M  6.8M  482M    2% /run
tmpfs                            489M     0  489M    0% /sys/fs/cgroup
/dev/sda1                        197M   97M  100M   50% /boot
tmpfs                             98M     0   98M    0% /run/user/0
192.168.66.132:/home/nfstestdir   18G  5.4G   13G   30% /mnt

14.4 exportfs命令

nfs服務不能隨便重啓,不然可能致使客戶端的nfs服務被掛起,所以可使用exportfs命令在不重啓服務的前提下更新配置文件。

經常使用選項

• -a 所有掛載或者所有卸載

• -r 從新掛載

• -u 卸載某一個目錄

• -v 顯示共享目錄

效果測試

一、修改服務端配置文件

vim /etc/exports
#新增一行
/tmp 192.168.66.0/24(rw,sync,no_root_squash)

二、更新配置文件(從新掛載) exportfs -arv //不用重啓nfs服務,配置文件就會生效

[root@02 nfstestdir]# exportfs -arv
exporting 192.168.66.0/24:/tmp
exporting 192.168.66.0/24:/home/nfstestdir

三、在客戶端查看權限

[root@01 mnt]# showmount -e 192.168.66.132
Export list for 192.168.66.132:
/tmp             192.168.66.0/24
/home/nfstestdir 192.168.66.0/24

注:客戶端重啓後,要從新掛載共享目錄,要想開機自動掛載,能夠把掛載命令寫到/etc/fstab裏

14.5 NFS客戶端問題

針對NFS4版本存在以下問題:
客戶端掛載共享目錄後,不論是root用戶仍是普通用戶,建立新文件時屬主、數組爲nobody。

解決方法:

方法1:在客戶端進行掛載時加上選項-o nfsvers=3

[root@01 ~]# mount -t nfs -o nfsvers=3 192.168.230.135:/tmp/ /mnt/

若是目錄已經掛載,而又不想卸載,執行以下命令:

[root@01 ~]# mount -t nfs -oremount,nfsvers=3 192.168.230.135:/tmp/ /mnt/

方法2:客戶端和服務端都須要
•客戶端和服務端都須要

• vim /etc/idmapd.conf //

• 把「#Domain = local.domain.edu」 改成 「Domain = xxx.com」 (這裏的xxx.com,隨意定義吧),而後再重啓rpcbind服務

15.1 FTP介紹

平常使用rz,sz命令進行文件互傳時會有不少限制,好比傳輸大小不能超出4G,不能給雲端主機傳輸文件,針對上述問題,可經過在服務端搭建ftp服務器解決

• FTP是File Transfer Protocol(文件傳輸協議,簡稱文傳協議)的英文簡稱,用於在Internet上控制文件的雙向傳輸。

• FTP的主要做用就是讓用戶鏈接一個遠程計算機(這些計算機上運行着FTP服務器程序),並查看遠程計算機中的文件,而後把文件從遠程計算機複製到本地計算機,或把本地計算機的文件傳送到遠程計算機。

• 小公司用的多,大企業不用FTP,由於不安全

15.2/15.3 使用vsftpd搭建ftp

centos自帶ftp服務的軟件包是vsftpd,直接下載安裝便可。

安裝vsftpd軟件包

yum install -y vsftpd

建立登陸ftp的用戶

useradd -s /sbin/nologin virftp   //不容許登陸系統,用於給虛擬用戶作映射

vsftpd軟件包是可使用系統級別的用戶,假設建立了一個普通用戶luo,設置一個密碼,這時候就能夠用vsftpd啓動這個服務,而後用user1這個用戶去登錄,登陸的形式爲ftp,登陸進去後會進入到luo這個用戶的家目錄下,但這樣操做會存在安全隱患。

爲了解決上述隱患,咱們能夠給ftp設置一個虛擬用戶,虛擬用戶映射成系統中的一個普通用戶(也能夠映射多個虛擬用戶),這個用戶即便給了用戶和密碼你也是沒有辦法去經過ssh登陸到服務器的機器,這樣就相對安全了不少。

編輯虛擬用戶自定義密碼文件

vim /etc/vsftpd/vsftpd_login //奇數行爲用戶名,偶數行爲密碼,多個用戶就寫多行
ftpuser
123456

改下文件權限

chmod 600 /etc/vsftpd/vsftpd_login

密碼文件格式轉換

db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

建立虛擬用戶配置文件所在目錄

mkdir /etc/vsftpd/vsftpd_user_conf

在目錄下建立虛擬用戶配置文件

vim ftpuser  //虛擬用戶的配置文件的文件名須要與密碼文件中建立的用戶的名字一致

local_root=/home/virftp/ftpuser  //定義虛擬用戶家目錄
anonymous_enable=NO                //是否容許匿名用戶
write_enable=YES                   //是否容許可寫
local_umask=022                    //建立新文件目錄的默認權限
anon_upload_enable=NO              //是否容許匿名用戶上傳
anon_mkdir_write_enable=NO         //是否容許匿名用戶建立目錄和寫
idle_session_timeout=600           //鏈接超時時間
data_connection_timeout=120        //數據傳輸超時時間
max_clients=10                     //最大客戶端數

建立虛擬用戶家目錄

mkdir /home/virftp/ftpuser

在家目錄下建立測試文件

touch /home/virftp/ftpuser/test.txt

修改用戶權限

chown -R virftp:virftp /home/virftp

將權限作一個修改,由於最後映射成virftp 這個用戶,若virftp這個用戶沒有讀的權力那就是錯誤的,沒法正常的去上傳和下載

定義密碼文件的所在位置

vim /etc/pam.d/vsftpd
#增長兩行
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

這是一個用來認證的文件,在登陸FTP須要有一個認證的過程,認證的過程須要告訴它,經過什麼樣的形式去認證,認證的時候去×××這個密碼庫

注:32位的centos系統的文件名應爲lib32

編輯vsftpd的主配置文件

vim /etc/vsftpd/vsftpd.conf
將anonymous_enable=YES 改成 anonymous_enable=NO
將#anon_upload_enable=YES 改成 anon_upload_enable=NO 
將#anon_mkdir_write_enable=YES 改成 anon_mkdir_write_enable=NO

在文件最下方增長以下內容
chroot_local_user=YES
guest_enable=YES                              //打開虛擬用戶映射
guest_username=virftp                         //映射的用戶名
virtual_use_local_privs=YES                   //聲明使用的用戶爲虛擬用戶
user_config_dir=/etc/vsftpd/vsftpd_user_conf  //定義虛擬用戶配置文件所在路徑
allow_writeable_chroot=YES

啓動vsftpd服務

systemctl start vsftpd

若是啓動不了服務,能夠把 /etc/vsftpd/vsftpd.conf 中的listen_ipv6=YES,而後把上一個listen=NO改爲listen=YES
查看監聽端口

[root@01 vsftpd_user_conf]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name         
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      3319/vsftpd

監聽端口爲21

ftp測試

Windows端
Windows可使用filezilla客戶端開源軟件,十分方便
2018-07-13(NFS,FTP搭建)
Linux端

Linux爲了方便測試採用lftp

安裝lftp包

[root@01 ~]# yum -y install lftp

鏈接FTP服務器

[root@01 ~]# lftp ftpuser@127.0.0.1
口令: 
lftp ftpuser@127.0.0.1:~> ls
-rw-r--r--    1 0        0               0 Jul  16 10:20 test.txt

注:使用?可查看ftp可用命令,經常使用命令put、get

下載test文件

lftp ftpuser@127.0.0.1:/> get test.txt
lftp ftpuser@127.0.0.1:/> quit
[root@01 ~]# ls
anaconda-ks.cfg       test.txt

15.4 xshell使用xftp傳輸文件

經過xshell實現ftp功能有兩種方法,經過sftp和xftp
sftp
經過xshell的會話,使用sftp協議鏈接服務器
2018-07-13(NFS,FTP搭建)
登陸後能夠正常使用命令,也可使用get下載文件

sftp:/root> get test.txt
Fetching /root/test.txt to test.txt
sftp: received 0 ???in 0.02 seconds

下載文件的存放位置在屬性中設置
2018-07-13(NFS,FTP搭建)
xftp

xftp經過在xshell界面經過快捷鍵ctrl+alt+f使用,首次使用會彈出對話框提示下載安裝。
2018-07-13(NFS,FTP搭建)
安裝完成後,須要先經過ssh登陸到一臺主機,使用Ctrl+alt+f喚出xftp,便可正常使用。
2018-07-13(NFS,FTP搭建)
注:xftp走的是ssh協議,不屬於ftp,這種只要是linux開啓了sshd服務就能夠用;

vsftp獲取其餘ftp軟件實現的是ftp服務,windows上能夠搭建,linux上也能夠搭建

15.5 使用pure-ftpd搭建ftp服務

pure-ftpd相比於vsftpd更加輕量化,搭建FTP服務器時更加簡潔。

安裝pure-ftpd軟件包

yum install -y epel-release
yum install -y pure-ftpd

若是以前有啓動過別的ftp服務,須要中止vsftpd服務

systemctl stop vsftpd

因爲vsftpd和pure-ftpd同屬於ftp服務,都須要監聽21端口,若是二者同時運行會發生衝突

編輯pure-ftpd配置文件

vim /etc/pure-ftpd/pure-ftpd.conf//找到pureftpd.pdb這行,把行首的#刪除
修改文件容許pure-ftpd服務指定密碼文件

啓動pure-ftpd服務

systemctl start pure-ftpd

建立測試目錄

測試目錄用於pure-ftpd的虛擬用戶使用

mkdir /data/ftp

建立普通用戶

useradd -u 1020 pure-ftp

修改用戶權限

chown -R pure-ftp:pure-ftp /data/ftp

建立虛擬用戶

pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp  //虛擬用戶名爲ftp_usera

pure-ftpd服務一樣須要一個或多個虛擬用戶映射到一個系統用戶

pure-pw --help能夠查看pure-pw命令的用法

密碼文件格式轉換

pure-pw mkdb

效果測試

[root@l01 ~]# touch /data/ftp/test1234.txt
[root@01 ~]# lftp ftp_usera@127.0.0.1
口令: 
lftp ftp_usera@127.0.0.1:~> ls      
drwxr-xr-x    2 1020       pure-ftp           16 Jul  3 10:43 .
drwxr-xr-x    2 1020       pure-ftp           16 Jul  3 10:43 ..
-rw-r--r--    1 1020       pure-ftp                16Jul  3 10:43 test1234.txt

咱們能夠看到屬主爲uid,屬組映射爲系統中組的名字pure-ftpd

相關文章
相關標籤/搜索