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.html
一、NFS介紹
1、NFS簡介
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上的一緻
2、NFS原理:
- 首先:NFS包括兩部分,服務端及用戶端
- 由于NFS服務功能很多,會有很多端口,這些端口還有可能不固定,那麼用戶端就無法與伺服器進行通信,因為程式間通信必須通過端口(tcp/udp都是端到端通信),那麼就需要一個中間的橋接機制,RPC程序即充當這樣一個角色,RPC的端口是一定的(111),當NFS啟動時,會向RPC進行注冊, 那麼用戶端PRC就能與伺服器RPC進行通信, 進而進行檔案的傳輸。
- 當用戶端使用者打開一個檔案或目錄時,核心會判斷,該檔案是本地檔案還是遠端共享目錄檔案,如果是遠端檔案則通過RPC程序通路遠端NFS服務端的共享目錄,如果是本地檔案,則直接打開。
- 為了更好的并發,RPC程序及NFS程序都有多個。
二、NFS服務端安裝配置
用兩台機器做實驗,一台作為服務端(001 192.168.83.3),一台作為用戶端(002 192.168.83.33);
在兩台機器上安裝: yum install -y nfs-utils rpcbind
在001上,編輯配置檔案 :vim /etc/exports
寫入以下語句
/home/nfstestdir 192.168.83.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
語句釋義:
- /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
三、NFS配置選項
1、挂載NFS
showmount -e 192.168.83.3 //該ip為NFS服務端ip
如果沒有出現共享目錄,有下面可能,注意排查:
- 1、兩者通信問題
- 2、把兩者的防火牆關閉
此處關閉服務端和用戶端的防火牆: 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
在服務端的共享目錄中可以看到
四、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
五、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服務
六、FTP介紹
我們之前傳輸檔案所用的是rz,sz指令,可以簡單明了的就把我們所需的檔案下載下傳或者上傳。但是有個缺陷,不可以上傳或者下載下傳大體積的檔案。FTP就可以解決這個問題!
FTP是File Transfer Protocol(檔案傳輸協定,簡稱文傳協定)的英文簡稱,用于在Internet上控制檔案的雙向傳輸。
FTP的主要作用就是讓使用者連接配接一個遠端計算機(這些計算機上運作着FTP伺服器程式),并檢視遠端計算機中的檔案,然後把檔案從遠端計算機複制到本地計算機,或把本地計算機的檔案傳送到遠端計算機。
小公司用的多,大企業不用FTP,因為不安全,通常使用GitHub。
七、使用vsftpd搭建ftp服務
1、配件相關資訊
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
2、測試ftp
在伺服器上安裝lftp yum install -y lftp
安裝完成後,連結使用者tobe: lftp [email protected]
執行指令ls,看是否正常輸出,若不正常檢視日志/var/log/messages和/var/log/secure
? //是用來檢視可以操作的指令
使用 get+檔案名 來下載下傳一個檔案到目前所在目錄,下圖所在目錄為/root/,是以檔案在root目錄下
八、xshell使用xftp傳輸檔案
1、使用xshell直接傳輸
原理就是:使用sftp模式登入伺服器
第一步:在xshell下,建立會話,按下圖設定其屬性
第二步:按下圖,設定其下載下傳到的目錄
設定完成輸入使用者名密碼進入
可以自由切換目錄
get httpd-2.4.39.tar.gz 擷取此檔案
此時windows在桌面上,找到對應的目錄,即可看到相應的檔案
2、xshell使用xftp軟體傳輸檔案
在xshell界面上按下“ctrl+alt+F”彈出以下對話框,點選下載下傳,跳轉到下載下傳頁,下載下傳安裝
安裝完成後,回到xshell上,按下“ctrl+alt+F”彈出軟體界面
左側windows下選擇好要傳輸的目錄,在右側選擇要傳輸的檔案,點選傳輸,左側會顯示傳輸過去的檔案
九、 使用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 [email protected] 測試正常
chown pure-ftp:pure-ftp /data/ftp/123.txt 屬主映射成UID,數組為系統中組的名字
版權聲明:本文為CSDN部落客「weixin_33796205」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_33796205/article/details/92426910