1. 程式人生 > >第二十五課 NFS & FTP

第二十五課 NFS & FTP

目錄

  1. NFS
    1.1 NFS 介紹
    1.2 NFS 服務端配置
    1.3 NFS 客戶端掛載
    1.4 exportfs 命令
    1.5 客戶端檔案屬主屬組為 nobody
  2. FTP
    2.1 FTP 介紹
    2.2 FTP 服務端配置
    2.3 FTP 客戶端訪問

1. NFS

1.1 NFS 介紹

NFS 就是 Network FileSystem 的縮寫,最早之前是由sun 這家公司所發展出來的。 它最大的功能就是可以透過網路,讓不同的機器、不同的作業系統、可以彼此分享個別的檔案 (share files)。所以,你也可以簡單的將他看做是一個檔案伺服器 (file server) 呢!這個 NFS 伺服器可以讓你的 PC 來將網路遠端的 NFS 伺服器分享的目錄,掛載到本地端的機器當中, 在本地端的機器看起來,那個遠端主機的目錄就好像是自己的一個磁碟分割槽槽一樣 (partition)!使用上面相當的便利!

因為 NFS 支援的功能相當的多,而不同的功能都會使用不同的程式來啟動, 每啟動一個功能就會啟用一些埠來傳輸資料,因此, NFS 的功能所對應的端口才沒有固定住, 而是隨機取用一些未被使用的小於 1024 的埠來作為傳輸之用。但如此一來又造成客戶端想要連上伺服器時的困擾, 因為客戶端得要知道伺服器端的相關端口才能夠聯機吧!

此時我們就得需要遠端過程呼叫 (RPC) 的服務啦!RPC 最主要的功能就是在指定每個 NFS 功能所對應的 port number ,並且回報給客戶端,讓客戶端可以連結到正確的埠上去。 那 RPC 又是如何知道每個 NFS 的埠呢?這是因為當伺服器在啟動 NFS 時會隨機取用數個埠口,並主動的向 RPC 註冊,因此 RPC 可以知道每個埠對應的 NFS 功能,然後 RPC 又是固定使用 port 111 來監聽客戶端的需求並回報客戶端正確的埠, 所以當然可以讓 NFS 的啟動更為輕鬆愉快了!

所以你要注意,要啟動 NFS 之前,RPC 就要先啟動了,否則 NFS 會無法向 RPC 註冊。 另外,RPC 若重新啟動時,原本註冊的資料會不見,因此 RPC 重新啟動後,它管理的所有服務都需要重新啟動來重新向 RPC 註冊。

1.2 NFS 服務端配置

1.2.1 安裝 rpcbind 和 nfs-utils
[root@LNMP ~]# yum install -y nfs-utils rpcbind
1.2.2 修改 nfs 配置檔案
[root@LNMP ~]# vim /etc/exports

/home/nfstest 192.168.1.0/24(rw,sync,all_squash,anonuid=1000
,anongid=1000)
1.2.3 nfs 配置選項
  • rw:讀寫
  • ro:只讀
  • sync:同步模式,記憶體資料實時寫入磁碟
  • async:非同步模式
  • no_root_squash:客戶端掛載NFS共享目錄後,root使用者不受約
    束,許可權很大
  • root_squash:與上面選項相對,客戶端上的root使用者收到約束,
    被限定成某個普通使用者
  • all_squash:客戶端上所有使用者在使用NFS共享目錄時都被限定為
    一個普通使用者
  • anonuid/anongid:和上面幾個選項搭配使用,定義被限定使用者
    的uid和gid
1.2.4 建立必要的目錄
[root@LNMP ~]# mkdir /home/nfstest

[root@LNMP ~]# chmod 777 /home/nfstest
1.2.5 開啟服務
[root@LNMP ~]# systemctl start rpcbind

[root@LNMP ~]# systemctl start nfs

[root@LNMP ~]# systemctl enable rpcbind

[root@LNMP ~]# systemctl enable nfs

1.3 NFS 客戶端掛載

1.3.1 安裝 nfs-utils
[root@localhost ~]# yum install -y nfs-utils
1.3.2 檢視遠端共享出來的目錄
[root@localhost ~]# showmount -e 192.168.1.100
Export list for 192.168.1.100:
/home/nfstest (everyone)
1.3.3 進行掛載
[root@localhost ~]# mount -t nfs 192.168.1.100:/home/nfstest /mnt

[root@localhost mnt]# df -h | grep nfs
192.168.1.100:/home/nfstest   36G  4.4G   32G  13% /mnt
1.3.4 新建檔案,並檢視屬主、屬組
[root@localhost ~]# touch /mnt/client.txt ; ll /mnt
total 0
-rw-r--r--. 1 chocolee911 chocolee911 0 Jul 16 10:49 client.txt


## 看一下 passwd 檔案中,chocolee911 是不是對應的 UID=1000
[root@localhost ~]# grep chocolee911 /etc/passwd
chocolee911:x:1000:1000:Choco Lee:/home/chocolee911:/bin/bash

1.4 exportfs 命令

當 NFS 伺服器上有新增的共享目錄,或者共享目錄配置有更改時,不可以輕易地重啟 NFS 服務,因為遠端有客戶端正連在共享目錄上,此時重啟服務可能造成服務損壞。這時應該使用 nfs-utils 自帶的 exportfs 命令進行配置重新整理。

1.4.1 exportfs 常用選項
  • -a:全部掛載或者全部解除安裝
  • -r:重新掛載
  • -u:解除安裝某一個目錄
  • -v:顯示共享目錄
1.4.2 exportfs 用法示例
  • 修改服務端配置檔案
[root@LNMP ~]# vim /etc/exports

/home/nfstest 192.168.1.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
/tmp/ 192.168.1.0/24(rw,sync,no_root_squash)
  • 此時在客戶機上檢視可掛載的共享目錄
[root@localhost ~]# showmount -e 192.168.1.100
Export list for 192.168.1.100:
/home/nfstest 192.168.1.0/24       # 並無變化
  • 使用 exportfs 重新整理配置
[root@LNMP ~]# exportfs -avr
exporting 192.168.1.0/24:/tmp
exporting 192.168.1.0/24:/home/nfstest
  • 再次在客戶端上進行檢視
[root@localhost ~]# showmount -e 192.168.1.100
Export list for 192.168.1.100:
/tmp          192.168.1.0/24
/home/nfstest 192.168.1.0/24
  • 在客戶端上進行掛載
[root@localhost ~]# mount -t nfs -o nolock 192.168.1.100:/tmp /nfs

[root@localhost ~]# touch /nfs/test.txt

[root@localhost ~]# ll !$
ll /nfs/test.txt
-rw-r--r--. 1 root root 0 Jul 16 11:05 /nfs/test.txt

1.5 客戶端檔案屬主屬組為 nobody

NFS 4版本會有該問題:客戶端掛載共享目錄後,不管是 root 使用者還是普通使用者,建立新檔案時屬主、屬組為nobody

解決方法:
* 客戶端掛載時加上-o nfsvers=3
* 客戶端和服務端都需要 修改 /etc/idmapd.conf 檔案,將 “#Domain = local.domain.edu” 改為“Domain = xxx.com” (這裡的xxx.com,隨意定義吧),然後再重啟 rpcidmapd 服務

2. FTP

2.1 FTP 介紹

  • FTP是File Transfer Protocol(檔案傳輸協議,簡稱文傳協議)的英文簡稱,用於在Internet上控制檔案的雙向傳輸。
  • FTP的主要作用就是讓使用者連線一個遠端計算機(這些計算機上執行著FTP伺服器程式),並檢視遠端計算機中的檔案,然後把檔案從遠端計算機複製到本地計算機,或把本地計算機的檔案傳送到遠端計算機。

2.2 FTP 服務端配置

2.2.1 安裝 vsftpd
[root@LNMP ~]# yum install -y vsftpd
2.2.2 增加 ftp 的使用者
[root@LNMP ~]# useradd -s /sbin/nologin virftp
2.2.3 編輯 ftp 使用者認證檔案,並修改許可權
[root@LNMP ~]# vim /etc/vsftpd/vsftpd_login

chuck
123123

[root@LNMP ~]# chmod 600 /etc/vsftpd/vsftpd_login
2.2.4 將賬號密碼以加密形式轉入資料庫
[root@LNMP ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
2.2.5 生成使用者配置檔案
[[email protected] ~]# mkdir /etc/vsftpd/vsftpd_user_conf

[[email protected] ~]# cd /etc/vsftpd/vsftpd_user_conf


[[email protected] vsftpd_user_conf]# vim chuck 

local_root=/home/virftp/chuck
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
2.2.6 生成測試檔案
[root@LNMP ~]# mkdir /home/virftp/chuck

[root@LNMP ~]# touch /home/virftp/chuck/test.txt

[root@LNMP ~]# chown -R virftp:virftp /home/virftp
2.2.7 修改 /etc/pam.d/vsftpd
[[email protected] ~]# 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


#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

2.2.8 修改 ftp 配置檔案

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
2.2.9 啟動 vsftpd
[root@LNMP ~]# systemctl start vsftpd

2.3 FTP 客戶端訪問

2.3.1 客戶端安裝 lftp
[root@localhost ~]# yum install -y lftp
2.3.2 登入 ftp 伺服器
[root@localhost ~]# lftp [email protected]
Password: 
lftp chuck@192.168.1.100:~> ls        
-rw-r--r--    1 1003     1003            0 Jul 16 03:24 test.txt

相關推薦

第二 NFS & FTP

目錄 NFS 1.1 NFS 介紹 1.2 NFS 服務端配置 1.3 NFS 客戶端掛載 1.4 exportfs 命令 1.5 客戶端檔案屬主屬組為 nobody FTP 2.1 FTP 介紹

Spring入門第二

struct java 映射 構造器 into named put per mysq 使用具名參數 直接看代碼: db.properties jdbc.user=root jdbc.password=logan123 jdbc.driverClass=com.mysql.

第二預習任務

特殊 這就是 ftp 權限 文件 影響 intern per 軟件 spa 14.1 NFS介紹14.2 NFS服務端安裝配置14.3 NFS配置選項14.4 exportfs命令14.5 NFS客戶端問題15.1 FTP介紹15.2/15.3 使用vsftpd搭建ft

C++筆記 第二 類的靜態成員變數---狄泰學院

如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十五課 類的靜態成員變數 1.成員變數的回顧 通過物件名能夠訪問public成員變數 每個物件的成員變數都是專屬的 成員變數不能在物件之間共享 2.新的需求 統計

第二 如何開發自己的BANCOR去中心化交易平臺?

#1,摘要 《第二十四課 基於以太坊的交易所BANCOR演算法實現-轉換演算法框架》 講解了以太坊solidity實現的BancorConverter轉換主合約的邏輯和程式碼,但是沒有涉及核心互換及計算程式碼,而是通過interface類的方式進行隔離。 本文

潭州課堂25班:Ph201805201 django 專案 第二 文章多級評論前後臺實現 (課堂筆記)

  新增新聞評論功能 1.分析 業務處理流程: 判斷前端傳的新聞id是否為空,是否為整數、是否不存在 判斷評論的內容是否為空 判斷是否有父評論,父評論的id是否與新聞id匹配 判斷使用者是否登入 儲存新聞評論 請求方法:POST ur

學習筆記第二

作業正則介紹_grep 正則就是一串有規律的字符串,包含特殊符號。 對以後的寫shell腳本很大的幫助。可以實現很多復雜的需求。 第一個工具 grep grep 用來過濾關鍵詞。 -c 行數,過濾出來的這些行有多少行。 做實驗,先把etc/passwd 作為一個樣本文件 cp 到 創建的gre

25-撩-Java面試寶典-第二

156.mvc:view-controller有什麼作用? 當我們傳送一個請求時, 如果沒有找到對應的mapping 則會對配置檔案當中匹配mvc:view-controller 注意點:使用時要新增後面的內容 <mvc:annotation-driven/> 1

25-撩大前端-面試寶典-第二

1.web前端開發,如何提高頁面效能優化? 內容方面: 1.減少 HTTP 請求 (Make Fewer HTTP Requests) 2.減少 DOM 元素數量 (Reduce the Number of DOM Elements) 3.使得 Ajax 可快取 (Make Aj

Java學習第二

基本 添加按鈕 java.awt 需要 light 輸入 pre 理解 多級 1:如何讓Netbeans的東西Eclipse能訪問。 在Eclipse中創建項目,把Netbeans項目的src下的東西給拿過來即可。 註意:修改項目編碼為UTF-8 2:GUI(了解

Spring入門第二

pri startup span val join can arrays log .org 重用切面表達式 我們有的時候在切面裏面有多個函數,大部分函數的切入點都是一樣的,所以我們可以聲明切入點表達式,來重用。 package logan.study.aop.impl;

Spring入門第二

code message manage todo system framework auto manager isbn Spring中的事務管理 事務簡介 事務管理是企業級應用程序開發中必不可少的技術,用來確保數據的完整性和一致性。 事務就是一系列的動作,他們被當做一個單獨

Spring入門第二

url cati urn ksh base stock XML repo study 聲明式事務 直接上代碼: db.properties jdbc.user=root jdbc.password=logan123 jdbc.driverClass=com.mysql.j

Spring入門第二

mchange method true ide ash 一個 value import 重復 事務的隔離級別,回滾,只讀,過期 當同一個應用程序或者不同應用程序中的多個事務在同一個數據集上並發執行時,可能會出現許多意外的問題。 並發事務所導致的問題可以分為下面三種類型: -

JAVA學習第四 — 其它對象API(一)System、Runtime、Math類

大整數 協調 1.5 tint ava 字符串 垃圾 void lol 一、System類 1. static long currentTimeMillis() 返回以毫秒為單位的當前時間。 實際上:當前時間與協調世界時 1970 年 1 月 1 日午夜之間的時間差(

走入計算機的第二天(內置模塊3之正則表達式)

不同的 hello col font 數字 ans -a class 本質 一 什麽是正則表達式 就其本質而言,正則表達式(或 RE)是一種小型的、高度專業化的編程語言,(在Python中)它內嵌在Python中,並通過 re 模塊實現。正則表達式模式被編譯成一系列的字節碼

wxWidgets第 wxBitmap圖片顯示

wxbitmap說明 顯示一張圖片,非常容易例子 wxImage image(wxT("C:/timg.bmp"), wxBITMAP_TYPE_BMP); wxBitmap bitmap(image); wxBufferedPaintDC dc(this); dc.DrawBitmap(bitma

AGG第二 裁剪功能

裁剪 agg AGG有四種類型的裁剪,分別工作在不同的層次1. 基礎渲染器Base Render除非直接調用基礎渲染器的繪制線段的方法,否則在一般情況下,都是在render_scanline的時候被調用,進行裁剪,這個時候已經進行了大量無用的工作。比如頂點源超出屏幕範圍,在調用render_scan

AGG第三 gsv_text 渲染ASCII字符

agg gsv_text代碼 agg::rendering_buffer &rbuf = rbuf_window(); agg::pixfmt_bgr24 pixf(rbuf); typedef agg::renderer_base<agg::pixfmt_bgr24>

愛創課堂每日一題第二天-2017/9/27 棧和隊列的區別??

前端 前端學習 前端入門 棧的插入和刪除操作都是在一端進行的,而隊列的操作卻是在兩端進行的。隊列先進先出,棧先進後出。棧只允許在表尾一端進行插入和刪除,而隊列只允許在表尾一端進行插入,在表頭一端進行刪除愛創課堂每日一題第二十五天-2017/9/27 棧和隊列的區別??