文件共享:samba,iscsi,NFS

###############
#####samba文件共享
###############

能在linux與windows之間進行文件案共享

通用Internet文件系統(CIFS)也稱爲服務器信息塊(SMB),是適用於Microsoft
Windows服務器和客戶端的標準文件和打印機共享系統。
Samba服務可用於將Linux文件系統作爲CIFS/SMB網絡文件共享進行共享,並將Linux
打印機作爲CIFS/SMB打印機共享進行共享。



1>服務器安裝及基本調試

服務器ip:172.25.254.112
     hostnamectl set-hostname samba.example.com     
     yum install samba-client samba-common samba -y
     systemctl stop firewalld.service
     setsebool -P samba_enable_home_dirs on
     systemctl start smb
     smbpasswd -a student              ##student用戶必須是本機存在的用戶、
                 ##不能添加系統不存在的用戶:
             ******************************
        [root@localhost ~]# smbpasswd -a yang      
        New SMB password:  
        Retype new SMB password:
        Failed to add entry foR user yang.   

             ******************************
     pdbedit -L                        ##列出smb用戶
     pdbedit -x student                ##刪除smb用戶
     pdbedit -L
     smbpasswd -a student

測試(ip:172.25.254.12):

     smbclient -L //172.25.254.112 -U student          ##列出共享目錄的信息


     smbclient //172.25.254.112/student -U student     ##進入共享目錄,默認共享的是登陸用戶家目錄

如果出現以下報錯:
 [root@desktop ~]# smbclient -L //172.25.254.112 -U student
  Enter students password:
  protocol negotiation failed: NT_STATUS_IO_TIMEOUT
解決方法:
     服務器/etc/hosts 下加上服務器ip和名字

2>samba共享目錄

     cd /
     mkdir westos
     cd westos/
     touch file{1..10}
     ls
     vim /etc/samba/smb.conf
     ---------
        [westos1]            ##共享目錄的名字(自己定義)
        comment = local directory westos    ##共享說明
        path = /westos      ##文件路徑
     ---------

     systemctl restart smb

  測試(ip:172.25.254.12):

     smbclient -L //172.25.254.112 -U student


     vim /etc/samba/smb.conf
     smbclient  //172.25.254.112/westos -U student
               登陸上去之後不能ls查看   因爲selinux標籤沒有改變


     **共享 用戶自己建立的目錄時需要修改該目錄的selinux標籤屬性,此方式只針對修改目錄
     semanage  fcontext -a -t samba_share_t '/westos(/.*)?'     
     restorecon  -FvvR /westos/

     smbclient  //172.25.254.112/westos -U student
                  此時登陸上去之後ls能查看到目錄下的文件

   
     vim /etc/samba/smb.conf
               ----------
        [linux]
        comment = local directory westos
        path = /linux
               -----------
        
     systemctl restart smb
     smbclient -L //172.25.254.112 -U student
     cd /
     mkdir linux
     touch linux/tong

     **共享 系統建立的目錄時需要修改的selinux sebool屬性,此方式修改針對所有目錄,
             一旦開放,selinux標籤不再保護目錄訪問
     setsebool -P samba_export_all_rw on           ##可以讀寫
     setsebool -P samba_export_all_ro on           ##只讀
     smbclient  //172.25.254.112/linux -U student
    
     用戶要在共享目錄下建立文件夾(擁有寫權限)必須具備三點:
           1>服務器分享的目錄具有寫權限
     2>selinux sebool 開啓寫權限
     3>samba配置文件裏添加了允許寫的參數(samba服務允許寫的權力)

  在測試端登陸後用ls查看:
 smb: \> ls
   .                                   D        0  Mon Mar 20 16:42:45 2017
   ..                                  D        0  Mon Mar 20 15:59:53 2017
   aa                                  D        0  Mon Mar 20 16:21:39 2017
   ss                                  D        0  Mon Mar 20 16:41:20 2017
   gile                                N        0  Mon Mar 20 16:42:09 2017
   file                                N        0  Mon Mar 20 16:42:45 2017

        10473900 blocks of size 1024. 7240984 blocks available

  ##服務器自己建立的文件或目錄顯示的是  N  通過samba服務在共享目錄下建立的文件或目錄顯示的是  D



3>匿名訪問

    vim /etc/samba/smb.conf
    ------------
     125         map to guest = bad user     ##所有未認證的用戶影射爲guest(給guest一個身份)

     321         [westos]
     322         comment = local directory westos
     323         path = /westos
     324         guest ok = yes              ##開啓匿名
    ------------
    systemctl restart smb

 測試(ip:172.25.254.12):
    smbclient //172.25.254.112/westos
    mount //172.25.254.112/westos /mnt -o username=guest      
    umount /mnt

4>samba共享目錄的管理參數

    vim /etc/samba/smb.conf
    -----------------
        [westos]
        comment = local directory westos
        path = /westos
        guest ok = yes
        writeable = yes             ##允許所有人可寫
     #  write list = yang           ##只允許用戶yang可寫
     #  write list = @yang          ##只允許用戶組yang可寫
     #  valid users = yang          ##只允許用戶yang登陸
     #  valid users = +yang         ##只允許用戶組yang登陸
     #  browseable = no             ##是否顯示本共享目錄
     #  admin users = yang          ##讓yang用戶擁有超級用戶權限
    ------------------

   systemctl restart smb

   *  usermod -G yang student  ##將student加到用戶組yang中
   *  usermod -G "" student

   測試(ip:172.25.254.12):
      mount //172.25.254.112/westos /mnt  -o  password=yang,username=yang
       


5>多用戶掛載

    yum install cifs-utils -y
    vim /root/passfile
   ----------
     username=yang
     password=yang
   ----------
              
    mount //172.25.254.112/westos /mnt -o credentials=/root/passfile,multiuser,sec=ntlmssp

    su - yang        ##與passfile文件裏用戶同名
     ls /mnt
     cifscreds add 172.25.254.112
     ls /mnt         ##查看成功

    su - kiosk       ##與passfile文件裏用戶不同名
     ls /mnt         ##查看不成功
     cifscreds add 172.25.254.112
     ls /mnt         ##查看不成功      
   

6>自動掛載(autofs服務)

autofs與mount/unmount不同之處在於,他是一種服務程序。如果它檢測到用戶正試圖訪問一個尚未掛載的文件系統,
它就會自動檢測該文件系統,如果存在,那麼autofs會自動將其掛載。另一方面,如果它檢測到某個已掛載的文件系統
在一段時間內沒有被使用,那麼autofs會自動將其卸載,因此,一旦運行了autofs之後,用戶就不用手動完成文件系統
的掛載和卸載了。

  =====
  服務的安裝與啓動
  =====
   yum install autofs -y     ##安裝autofs服務
   systemctl start autofs
 
  ======
  編輯配置文件
  ======
  vim /etc/auto.master     ##主配置文件
            ----------------------------------
            這個文件裏的每一行對應一個掛載點
       autofs服務的每個掛載點都有一個相應的配置文件,比如   /etc/auto.master 文件裏有一行
       /misc   /etc/auto.misc   這一行表示 /misc 掛載點的配置文件是 /etc/auto.misc
             這裏/misc 代表的是你要掛載的真正目錄的上層目錄    比如你真正要掛載的位置是 /mnt/server
            那麼這裏你就該寫的掛載點是 /mnt   後面配置文件格式一般都統一寫成   auto.xxx  後綴應與
            掛載點名稱相同 。 如我要掛載在 /mnt/server下   我就該在  /etc/auto.master 里加這一行:
      /mnt   /etc/auto.mnt
            ----------------------------------

 
  vim /etc/auto.mnt        ##編輯掛載點配置文件    
         --------------------
     server       -fstype=cifs,username=[],password=[] ://ip/dir
         --------------------
      server代表是/mnt/server   
      -fstype=cifs 代表文件系統格式是cifs  
            在Red Hat Enterprise Linux 5以下(不包括5),samba的共享的文件系統類型是smbfs,
            在Red Hat Enterprise Linux 5及5以上則是cifs類型
      username   password  填寫你自己samab賬戶username password
   

   =========
   更改掛載時間
   =========
         默認情況下掛載時間是300s,5min不使用就自動卸載,當然這個時間是可以改變的
         在  /etc/sysconfig/autofs 下  有一行參數  :  
    TIMEOUT=300
         將300改爲你自己想要的值就ok了默認單位爲秒
         注意這個配置文件在不同版本的redhat下存在位置也不同:
         7.0系統:
     /etc/sysconfig/autofs
        7.2系統:
     /etc/autofs.conf
   

#################
#####NFS網絡文件存儲
#################


1>簡介

    網絡文件系統(NFS)是Unix系統和網絡附加存儲文件管理器常用的網絡文件
   系統,允許多個客戶端通過網絡共享文件訪問。它可用於提供對共享二進制
    目錄的訪問,也可用於允許用戶在同一工作組中從不同客戶端訪問其文件。
  NFS協議有多個版本:Linux支持版本4、版本3和版本2, 而大多數系統管理員
    熟悉的是NFSv3。默認情況下,該協議並不安全,但是更新的版本(如NFSv4
    )提供了對更安全的身份驗證的支持,甚至可以通過kerberos進行加密

   NFSv4還導出pseudo-root(所有導出的文件系統的root)。如果客戶端掛載nfs-server:/ ,這將在NFS
     服務器上的/下面相對於其位置掛載所有導出文件系統。這對於瀏覽從客戶端的服務器導出的所有
    文件系統有用。您仍可單獨掛載文件系統。

    默認情況下,NFS服務器將NFS客戶端上的root視爲用戶nfsnobody。即,如果root嘗試訪問掛載的
    導出中的文件,服務器會將其視作用戶nfsnobody訪問。在NFS導出被無磁盤客戶端用作/和root需
    要被視作root的情況中,這種安全措施存在隱患。若要禁用此保護,服務器需要將no_root_squash
    添加到在/etc/exports中導出設置的選項列表:
  /exports/root     172.25.254.12(rw,no_root_squash)

    對於NFSv4,必須在服務器上打開端口2049/TCP(對於nfsd)。對於NFSv3和更早版本,必須爲
  rpcbind、rpc.mountd、lockd和rpc.rquotad打開更多端口,而在“隨機”選擇的端口上啓動其中許
    多服務這一事實又增加了複雜性。此外,NFSv2和NFSv3支持UDP傳輸,還要求打開相應的端口。


2>服務器配置(ip:172.25.254.112):

     yum search nfs            
     yum install nfs-utils.x86_64 -y    ##安裝軟件
     systemctl start nfs                ##開啓服務
     firewall-cmd --list-all            ##查看火牆設置
     firewall-cmd --permanent --add-service=nfs
     firewall-cmd --permanent --add-service=mountd
     firewall-cmd --permanent --add-service=rpc-bind
     firewall-cmd --reload
     firewall-cmd --list-all    
     mkdir /westos           ##建立共享目錄(也能分享系統本就存在的目錄)
     vim /etc/exports
            -------------------
       /westos        172.25.254.12(rw)   ##分享目錄爲/westos  只允許172.25.254.12讀寫
            -------------------

     exportfs -rv                        ##-r 確保應用這些更改  -v 顯示所有導出(共享)
     showmount -e 172.25.254.112         ##顯示指定NFS服務器共享目錄列表

      ****************
   NFS共享常用參數
      ****************
        ro                   #只讀訪問   
        rw                   #讀寫訪問   
        sync                 #所有數據在請求時寫入共享   
        async                #NFS在寫入數據前可以相應請求   
        secure               #NFS通過1024以下的安全TCP/IP端口發送   
        insecure             #NFS通過1024以上的端口發送   
        wdelay               #如果多個用戶要寫入NFS目錄,則歸組寫入(默認)   
        no_wdelay            #如果多個用戶要寫入NFS目錄,則立即寫入,當使用async時,無需此設置。  
        hide                 #在NFS共享目錄中不共享其子目錄   
        no_hide              #共享NFS目錄的子目錄   
        subtree_check        #如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的權限(默認)   
        no_subtree_check     #和上面相對,不檢查父目錄權限   
        all_squash           #共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。   
        no_all_squash        #保留共享文件的UID和GID(默認)   
        root_squash          #root用戶的所有請求映射成如anonymous用戶一樣的權限(默認)   
        no_root_squas        #root用戶具有根目錄的完全管理訪問權限   
        anonuid=xxx          #指定NFS服務器/etc/passwd文件中匿名用戶的UID   
        anongid=xxx          #指定NFS服務器/etc/passwd文件中匿名用戶的GID


     *************************
   /etc/exports  文件編寫
     *************************
   /nfsshare/read     172.25.0.0/24(ro,sync)      ##允許一個網段的機器去訪問此共享目錄
   /nfsshare/write    172.25.0.0/24(rw,sync) 127.0.0.1(rw,sync)   ##允許這兩個網段的機器去讀寫此共享目錄
   /nfsshare/read     *(ro,sync)                  ##允許所有機器訪問此目錄
   /nfsshare/read     172.25.254.12(ro,sync)      ##允許這個ip訪問此目錄


3>客戶端查看並掛載(ip:172.25.254.12)

   showmount -e 172.25.254.112
   mount 172.25.254.112:/westos /mnt
   df
   cd /mnt
   mkdir  aaa
   ls
   touch hello


4>永久掛載NFS文件系統:

    將相應的行添加至/etc/fstab:
  nfsserver:/nfsshare
  /mnt/nfsshare  nfs  defaults  0 0

    客戶端NFS掛載選項
   rw:掛載可讀寫的文件系統
   ro:掛載只讀文件系統

  vers=4:嘗試只使用指定的NFS版本進行掛載。如果服務器不支持該版本,則掛載請求失敗
  soft:如果NFS請求超時,三次嘗試後返回錯誤。權衡數據完整性與提高客戶端響應性。(默
                 認行爲hard,將無限期地重試)。


5>保護NFS輸出

   在serverx和desktopx上運行腳本,加入kerberos認證域:
   # lab nfskrb5 setup
   安裝kerberos服務所需的keytab:(以下操作都在server0上進行)
   # wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server0.keytab
   激活NFS v4.2版本,可以輸出selinux標籤,編輯/etc/sysconfig/nfs修改如下選項:
   RPCNFSDARGS="-V 4.2"
   啓動nfs-secure-server服務:
   # systemctl start nfs-secure-server; systemctl enable nfs-secure-server
   配置NFS輸出:
   # mkdir /securenfs
   # echo '/securenfs desktop0(sec=krb5p,rw)' >> /etc/exports
   # exportfs -r
   安裝kerberos服務所需keytab:(以下操作都在dekstop0進行)
   # wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/desktop0.keytab
   啓動nfs-secure服務:
   # systemctl start nfs-secure; systemctl enable nfs-secure
   配置客戶端掛載:
   # mkdir /mnt/secureshare
   /etc/fstab
   server0:/securenfs /mnt/secureshare nfs defaults,v4.2,sec=krb5p 0 0
   # mount -a


6>自動掛載(autofs)
    
   在客戶端:
    vim /etc/auto.master
         ----------------
      /mnt    /etc/auto.mnt
         ----------------

    vim /etc/auto.mnt
        ------------------
     yang    -rw,vers=4      172.25.254.112:/westos
        ------------------
 
   systemctl restart autofs
   cd /mnt/yang
    

##############
####iscsi遠程塊存儲
##############


服務端:

    =======
    服務的安裝與啓動
    =======
      yum install targetcli.noarch -y
      systemctl start target
      systemctl enable target
      systemctl stop firewalld
    =====
    共享硬盤的建立
    ======
      fdisk /dev/vdb   ##先從本機分割一塊空間
      targetcli        ##啓動軟件,建立共享
    ********
       ls
       /backstores/block  create westos:storage1 /dev/vdb1         
       /iscsi  create iqn.2017-03.com.westos:storage1
       iscsi/iqn.2017-03.com.westos:storage1/tpg1/acls create  iqn.2017-03.com.westos:key1
       iscsi/iqn.2017-03.com.westos:storage1/tpg1/luns create  /backstores/block/westos:storage1
       iscsi/iqn.2017-03.com.westos:storage1/tpg1/portals create  172.25.254.212
       exit
    *********
     依照上面命令建立好的文件系統:
   =======================
  /> ls
  o- / ..................................................................... [...]
    o- backstores .......................................................... [...]
    | o- block .............................................. [Storage Objects: 1]
    | | o- westos:storage1 ........... [/dev/vdb1 (100.0MiB) write-thru activated]
    | o- fileio ............................................. [Storage Objects: 0]
    | o- pscsi .............................................. [Storage Objects: 0]
    | o- ramdisk ............................................ [Storage Objects: 0]
    o- iscsi ........................................................ [Targets: 1]
    | o- iqn.2017-03.com.westos:storage1 ............................... [TPGs: 1]
    |   o- tpg1 ........................................... [no-gen-acls, no-auth]
    |     o- acls ...................................................... [ACLs: 1]
    |     | o- iqn.2017-03.com.westos:key1 ...................... [Mapped LUNs: 1]
    |     |   o- mapped_lun0 ................... [lun0 block/westos:storage1 (rw)]
    |     o- luns ...................................................... [LUNs: 1]
    |     | o- lun0 .......................... [block/westos:storage1 (/dev/vdb1)]
    |     o- portals ................................................ [Portals: 1]
    |       o- 172.25.254.112:3260 .......................................... [OK]
    o- loopback ..................................................... [Targets: 0]
   ==========================


      vim /etc/iscsi/initiatorname.iscsi
       --------
        InitiatorName=iqn.2017-03.com.westos:key1
       --------
        
測試:

  客戶端:
    yum install iscsi-initiator-utils -y
    vim /etc/iscsi/initiatorname.iscsi
              ---------------
      InitiatorName=iqn.2017-03.com.westos:key1
              ---------------
    systemctl restart iscsi
    systemctl status iscsi
    systemctl restart iscsid
    systemctl status iscsid
    history
    iscsiadm -m discovery -t st -p 172.25.254.212        ##發現
    iscsiadm -m node -T iqn.2017-03.com.westos:storage1 -p 172.25.254.212 -l   ##登陸


   =====
   客戶端訪問存儲
   =====
    fdisk  -l    ##發現多了一塊設備  /dev/sda
    fdisk /dev/sda  
    partprobe
    fdisk -l
    mkfs.xfs /dev/sda1
    mount /dev/sda1 /mnt
    df
    umount /mnt
   =====
   中斷使用iSCSI目標
   =====
    確保沒有使用目標所提供的任何設備。
    確保從/etc/fstab等位置中刪除使用目標的所有永久掛載。
     登出iSCSI目標,以暫時斷開連接。
    # iscsiadm -m node -T iqn.2017-03.com.westos:storage1 -p 172.25.254.212 -u
     刪除iSCSI目標的本地記錄,以永久斷開連接。
    # iscsiadm -m node -T iqn.2017-03.com.westos:storage1 -p 172.25.254.212 -o delete


   如果沒有中斷刪除就重啓電腦,iscsi會自動連接,如果服務器那邊沒有開啓此服務,開機速度會非常慢,在開機後

   清除  /var/lib/iscsi/nodes/     /var/lib/iscsi/send_targets/  下的所有內容就ok了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章