NFS與FTP服務搭建與配置

 

14.1 NFS介紹
14.2 NFS服務端安裝配置
14.3 NFS配置選項
14.4 exportfs命令
14.5 NFS客戶端問題
15.1 FTP介紹
15.2/15.3 使用vsftpd搭建ftp
15.4 xshell使用xftp傳輸文件
15.5 使用pure-ftpd搭建ftp服務
擴展
vsftp使用mysql存放虛擬用戶並驗證 http://www.aminglinux.com/bbs/thread-342-1-1.html
ftp的主動和被動模式  http://www.aminglinux.com/bbs/thread-961-1-1.htmlphp

 


1、NFS介紹
一、NFS簡介html

NFS,Network File System的縮寫。網絡文件系統,即經過網絡,對在不一樣主機上的文件進行共享。
NFS最先由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新爲4.1版本,更新比較慢其實4.1是從2010年就開始使用了。
NFS數據傳輸基於RPC協議,RPC爲Remote Procedure Call的簡寫。NFS服務須要藉助於RPC協議實現通訊
NFS應用場景是:A,B,C三臺機器上須要保證被訪問到的文件是同樣的,A共享數據出來,B和C分別去掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致

二、NFS原理:mysql

  • 首先:NFS包括兩部分,服務端及客戶端
  • 因爲NFS服務功能不少,會有不少端口,這些端口還有可能不固定,那麼客戶端就沒法與服務器進行通訊,由於程序間通訊必須經過端口(tcp/udp都是端到端通訊),那麼就須要一箇中間的橋接機制,RPC進程即充當這樣一個角色,RPC的端口是必定的(111),當NFS啓動時,會向RPC進行註冊, 那麼客戶端PRC就能與服務器RPC進行通訊, 從而進行文件的傳輸。
  • 當客戶端用戶打開一個文件或目錄時,內核會判斷,該文件是本地文件仍是遠程共享目錄文件,若是是遠程文件則經過RPC進程訪問遠程NFS服務端的共享目錄,若是是本地文件,則直接打開。
  • 爲了更好的併發,RPC進程及NFS進程都有多個。

2、NFS服務端安裝配置linux

用兩臺機器作實驗,一臺做爲服務端(001 192.168.83.3),一臺做爲客戶端(002 192.168.83.33);
在兩臺機器上安裝:    yum install -y nfs-utils rpcbindsql

在001上,編輯配置文件 :vim /etc/exportsshell

寫入如下語句vim

/home/nfstestdir 192.168.83.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)windows

語句釋義:centos

  • /home/nfstestdir :共享的目錄數組

  • rw: 讀寫

  • ro: 只讀

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

  • async :非同步模式

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

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

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

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

  • 192.168.83.0/24:爲客戶端的網段;

建立nfstestdir要分享的目錄,並給予777權限

 開啓nfs服務 :    systemctl start nfs

查看監聽端口,端口111爲rpcbind默認端口     

設置開機啓動:systemctl enable nfs

3、NFS配置選項

一、掛載NFS

showmount -e 192.168.83.3 //該ip爲NFS服務端ip

若是沒有出現共享目錄,有下面可能,注意排查:

  • 一、二者通訊問題

  • 二、把二者的防火牆關閉

此處關閉服務端和客戶端的防火牆:     systemctl stop firewalld

selinux也要關掉   

showmount -e 192.168.83.3 //該ip爲NFS服務端ip

開始掛載:    

 mount -t nfs 192.168.83.3:/home/nfstestdir /mnt

在客戶端掛載目錄/mnt/下,就是NFS共享的目錄,建立一個測試文件tobe.php

在服務端的共享目錄中能夠看到

4、exportfs命令

看下圖:假如A的NFS服務停掉了,可是B和C還在掛載着A分享的分區,這就沒法正常工做了,因爲B和C上面的進程是d狀態(不可中斷進程,在ps一節中學習到的),一旦A中止了,B和C必定會出問題,沒法服務,既不能夠重啓,也不能夠關閉,就會把系統整掛掉。因此NFS必定不能夠隨便重啓。 若是必須重啓怎麼辦?先把B和C上面的目錄卸載下來。

 若是掛載了多臺機器,使用exportps

exportps命令經常使用選項:

-a 所有掛載或者所有卸載
 -r 從新掛載
 -u 卸載某一個目錄
 -v 顯示共享目錄
 如下操做在服務端上
 vim /etc/exports //增長
 /tmp/ 192.168.83.33/24(rw,sync,no_root_squash)
 exportfs -arv //不用重啓nfs服務,配置文件就會生效

在服務端001上:        

exportfs -arv

這樣就可讓配置文件從新生效,不須要再次重啓nfs服務,也不會對客戶端形成以前所說的錯誤

編輯配置文件,增長一個共享的目錄

vim /etc/exports

/tmp/ 192.168.83.33/24(rw,sync,no_root_squash)

用命令:exportfs -arv 直接生效,不用重啓NFS服務

使用客戶端測試;

查看服務端共享目錄:showmount -e 192.168.83.3

掛載     mount -t nfs 192.168.83.3:/tmp /mnt

由於以前掛載了,須要先取消掛載

在客戶端mnt下建立一個測試文本

新檢測試文本1212.txt,查看其gid和uid都爲root

在服務端001下

查看/tmp目錄下的1212.txt測試文本,其uid和gid都爲root

5、NFS客戶端問題

注意:NFS 4版本會有該問題

在客戶端掛載共享目錄且權限設置爲no_root_squash,不論是root用戶仍是普通用戶,建立新文件時屬主、屬組爲nobody , 這個不是設置錯誤,是軟件自己自帶的BUG。

解決方案:

方案1: 在客戶端掛載的時候加上 -o nfsvers=3,其目的是指定nfs使用3版本,

mount -t nfs -o,nfsvers=3 192.168.83.3:/tmp /mnt   須要卸載

mount -t nfs -oremount,nfsvers=3 192.168.83.3:/tmp /mnt        -oremount,nfsvers=3,不卸載使用remount(從新加載),-oremount:-o與remount中間看狀況是否要加空格

方案2:在服務端和客戶端配置:

vim /etc/idmapd.conf

把「#Domain = local.domain.edu」 改成 「Domain = xxx.com」 (這裏的xxx.com,看狀況能夠自定義),而後再重啓rpcbind服務

6、FTP介紹

咱們以前傳輸文件所用的是rz,sz命令,能夠簡單明瞭的就把咱們所需的文件下載或者上傳。可是有個缺陷,不能夠上傳或者下載大致積的文件。FTP就能夠解決這個問題! 
FTP是File Transfer Protocol(文件傳輸協議,簡稱文傳協議)的英文簡稱,用於在Internet上控制文件的雙向傳輸。
FTP的主要做用就是讓用戶鏈接一個遠程計算機(這些計算機上運行着FTP服務器程序),並查看遠程計算機中的文件,而後把文件從遠程計算機複製到本地計算機,或把本地計算機的文件傳送到遠程計算機。 
小公司用的多,大企業不用FTP,由於不安全,一般使用GitHub。

7、使用vsftpd搭建ftp服務

一、配件相關信息

centos上自帶的FTP服務軟件vsftpd,默認沒有安裝;須要用yum安裝

yum install -y vsftpd

安裝後,不用配置,能夠直接使用,默認支持使用系統帳號登陸,可是由於安全緣由,須要創建帳號體系

useradd -s /sbin/nologin virftp            //建立虛擬用戶virftp
vim /etc/vsftpd/vsftpd_login               //建立虛擬用戶的密碼文件

vim /etc/vsftpd/vsftpd_login內容以下,奇數行爲用戶名,偶數行爲密碼,多個用戶就寫多行

tobe和user爲用戶名

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

建立第一個用戶的配置文件,文件名要和用戶名保持一致

cd /etc/vsftpd/vsftpd_user_conf/

vim tobe

local_root=/home/virftp/tobe  //虛擬用戶的家目錄
anonymous_enable=NO //是否容許匿名用戶
write_enable=YES //是否容許可寫
local_umask=022 //建立新目錄和文件的權限
anon_upload_enable=NO //是否容許匿名用戶上傳
anon_mkdir_write_enable=NO //是否容許匿名用戶可建立
idle_session_timeout=600 //鏈接後沒有任何操做的超時時間,空閒時間段,600秒
data_connection_timeout=120 //數據傳輸的超時時間120秒
max_clients=10 //最大容許鏈接的clients客戶端個數

建立虛擬用戶家目錄,並建立一個文件

mkdir /home/virftp/tobe
touch /home/virftp/tobe/test.txt
chown -R virftp:virftp /home/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

修改vsftpd的主配置文件/etc/vsftpd/vsftpd.conf。注意每行語句後面不能有空格

 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

systemctl start vsftpd     //啓動vsftpd服務,並查看啓動狀態

注意: 21端口FTP; 22端口SSHD; 23端口TELNET

二、測試ftp

在服務器上安裝lftp   yum install -y lftp

安裝完成後,連接用戶tobe:   lftp tobe@127.0.0.1

執行命令ls,看是否正常輸出,若不正常查看日誌/var/log/messages和/var/log/secure

?         //是用來查看能夠操做的命令

使用 get+文件名 來下載一個文件到當前所在目錄,下圖所在目錄爲/root/,因此文件在root目錄下

8、xshell使用xftp傳輸文件

一、使用xshell直接傳輸

原理就是:使用sftp模式登陸服務器

第一步:在xshell下,新建會話,按下圖設置其屬性

第二步:按下圖,設置其下載到的目錄

設置完成輸入用戶名密碼進入

能夠自由切換目錄

get httpd-2.4.39.tar.gz    獲取此文件

此時windows在桌面上,找到對應的目錄,便可看到相應的文件

二、xshell使用xftp軟件傳輸文件

在xshell界面上按下「ctrl+alt+F」彈出如下對話框,點擊下載,跳轉到下載頁,下載安裝

安裝完成後,回到xshell上,按下「ctrl+alt+F」彈出軟件界面

左側windows下選擇好要傳輸的目錄,在右側選擇要傳輸的文件,點擊傳輸,左側會顯示傳輸過去的文件

9、 使用pure-ftpd搭建ftp服務

pure-ftp爲另一款輕量FTP服務軟件,和vsftp相似

安裝並配置pure-ftpd

yum install -y pure-ftpd

vim /etc/pure-ftpd/pure-ftpd.conf        //找到pureftpd.pdb這行,把行首的#刪除

由於vsftpd和pure-ftpd 共用21端口,所以須要把vsftpd服務關掉,再開啓pure-ftpd

systemctl stop vsftpd

 systemctl start pure-ftpd

建立一個測試用戶目錄及用戶

mkdir /data/ftp
useradd -u 1010 pure-ftp
chown -R pure-ftp:pure-ftp /data/ftp

經過pure-pw命令增長ftp用戶以及配置用戶庫文件

pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp        經過pure-pw命令建立一個用戶,useradd指定用戶名爲ftp_usera,-u指定系統的用戶是pure-ftp,-d 指定虛擬用戶的家目錄爲/data/ftp
pure-pw mkdb            //創建虛擬用戶數據
touch /data/ftp/123.txt   建立一個測試文件
lftp ftp_usera@127.0.0.1    測試正常

chown pure-ftp:pure-ftp /data/ftp/123.txt   屬主映射成UID,數組爲系統中組的名字

相關文章
相關標籤/搜索