1. 程式人生 > >配置SMB資料夾共享 多使用者Samba掛載 普通NFS共享的實現

配置SMB資料夾共享 多使用者Samba掛載 普通NFS共享的實現

1 案例1:配置SMB資料夾共享

1.1 問題

本例要求在虛擬機器 server0 上釋出兩個共享資料夾,具體要求如下:

  1. 此伺服器必須是 STAFF 工作組的一個成員
  2. 釋出目錄 /common,共享名為 common
  3. 釋出目錄 /devops,共享名為 devops
  4. 這兩個共享必須是可瀏覽的,只有 example.com 域內的客戶端可以訪問
  5. 使用者 harry 對共享 common 只讀,密碼是 migwhisk
  6. 使用者 kenji 對共享 devops 只讀,密碼是 atenorth
  7. 使用者 chihiro 對共享 devops 可讀寫,密碼是atenorth

1.2 方案

Samba的用途:為多個客戶機提供共享使用的資料夾。

Samba服務端:軟體包samba、系統服務smb

Samba客戶端:軟體包samba-client和cifs-utils、客戶端工具smbclient

傳輸協議及埠:TCP 139、TCP 445

Samba服務端配置檔案:/etc/samba/smb.conf

Samba共享賬號:存在獨立的賬號資料檔案裡,必須有同名系統賬號(方便給許可權)

Samba賬號管理工具:

  • pdbedit -a 使用者名稱
  • pdbedit -L [使用者名稱]
  • pdbedit -x 使用者名稱

測試Samba共享資源:

  • smbclient -L 伺服器地址 【密碼為空(直接回車)】
  • smbclient -U 使用者名稱 //伺服器地址/共享名 【需要密碼】

1.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:在伺服器server0釋出Samba共享資料夾

1)安裝軟體包samba

  1. [[email protected] ~]# yum -y install samba
  2. .. ..

2)建立共享賬號

新增共享賬號harry,密碼為migwhisk:

  1. [[email protected] ~]# useradd harry
  2. [[email protected] ~]# pdbedit -
    a harry                 //根據提示設好密碼migwhisk
  3. new password:
  4. retype new password:

新增共享賬號kenji,密碼為atenorth:

  1. [[email protected] ~]# useradd kenji
  2. [[email protected] ~]# pdbedit -a kenji                 //根據提示設好密碼atenorth
  3. new password:
  4. retype new password:

新增共享賬號chihiro,密碼為atenorth:

  1. [[email protected] ~]# useradd chihiro
  2. [[email protected] ~]# pdbedit -a chihiro             //根據提示設好密碼atenorth
  3. new password:
  4. retype new password:

確認共享賬號:

  1. [[email protected] ~]# pdbedit -L
  2. harry:1003:
  3. chihiro:1005:
  4. kenji:1004:

3)準備共享資料夾

  1. [[email protected] ~]# mkdir /common
  2. [[email protected] ~]# mkdir /devops
  3. [[email protected] ~]# setfacl -m u:chihiro:rwx /devops         //配置寫入許可權

4)調整SELinux開關策略,允許釋出可寫的Samba共享資源

  1. [[email protected] ~]# getsebool -a | grep ^samba_exp         //預設配置
  2. samba_export_all_ro --> off
  3. samba_export_all_rw --> off
  4. [[email protected] ~]# setsebool -P samba_export_all_rw=on         //永久開啟設定
  5. [[email protected] ~]# getsebool -a | grep ^samba_exp         //檢視結果
  6. samba_export_all_ro --> off
  7. samba_export_all_rw --> on

5)配置共享目錄

  1. [[email protected] ~]# vim /etc/samba/smb.conf
  2. [global]
  3. workgroup = STAFF
  4. .. ..
  5. [common]
  6. path = /common
  7. hosts allow = 172.25.0.0/24
  8. [devops]
  9. path = /devops
  10. hosts allow = 172.25.0.0/24
  11. write list = chihiro

6)啟動系統服務smb,並設定開機自啟

  1. [[email protected] ~]# systemctl restart smb
  2. [[email protected] ~]# systemctl enable smb
  3. ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
  4. [[email protected] ~]# netstat -antpu | grep smb
  5. tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 4709/smbd
  6. tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 4709/smbd

步驟二:在客戶機desktop0測試Samba共享資源

1)安裝軟體包samba-client

  1. [[email protected] ~]# yum -y install samba-client
  2. .. ..

2)瀏覽目標主機提供了哪些共享資源

  1. [[email protected] ~]# smbclient -L server0.example.com
  2. Enter root's password:                         //此處無需輸入密碼,直接回車
  3. Anonymous login successful
  4. Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
  5.     Sharename Type Comment
  6.     --------- ---- -------
  7.     common Disk
  8.     devops Disk
  9.     IPC$ IPC IPC Service (Samba Server Version 4.1.1)
  10. Anonymous login successful
  11. Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
  12.     Server Comment
  13.     --------- -------
  14.     Workgroup Master
  15.     --------- -------

3)連線到目標主機的共享目錄

  1. [[email protected] ~]# smbclient -U harry //server0.example.com/common
  2. Enter harry's password:                             //輸入harry的密碼
  3. Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
  4. smb: \> ls                                         //檢查是否可列出目錄內容
  5. . D 0 Sun Nov 27 03:07:29 2016
  6. .. D 0 Sun Nov 27 03:07:32 2016
  7.         40913 blocks of size 262144. 27826 blocks available
  8. smb: \> quit                                         //退出smb:\>互動環境
  9. [[email protected] ~]#

2 案例2:多使用者Samba掛載

2.1 問題

本例要求在虛擬機器 desktop0 上訪問 server0 提供的共享 devops,特性如下:

  1. 將此共享永久掛載在 /mnt/dev 目錄
  2. 掛載時以使用者 kenji 作為認證
  3. 必要的時候,任何普通使用者都可以通過使用者 chihiro 來臨時獲取寫的許可權

2.2 方案

Samba客戶端的multiuser掛載:支援切換訪問Samba共享的使用者身份,但不需要重新掛載共享資源。掛載引數需要新增“multiuser,sec=ntlmssp”,客戶機上的普通使用者可以通過cifscreds命令提交新的身份憑據。

在客戶端掛載Samba共享目錄,需要軟體包cifs-utils的支援。

為訪問網路資源配置開機掛載時,注意新增引數“_netdev”,表示等客戶機網路配置可用以後才掛載對應資源。

2.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:掛載Samba共享目錄

1)建立掛載點

  1. [[email protected] ~]# mkdir /mnt/dev

2)安裝cifs-utils軟體包

  1. [[email protected] ~]# yum -y install cifs-utils
  2. .. ..

3)配置開機掛載

  1. [[email protected] ~]# vim /etc/fstab
  2. .. ..
  3. //server0.example.com/devops /mnt/dev cifs username=kenji,password=atenorth,_netdev     0     0

4)測試掛載配置

  1. [[email protected] ~]# mount -a
  2. [[email protected] ~]# df -hT /mnt/dev
  3. Filesystem Type Size Used Avail Use% Mounted on
  4. //server0.example.com/devops cifs 10G 3.2G 6.8G 32% /mnt/dev

步驟二:啟用multiuser多使用者支援

1)修改掛載配置,新增多使用者支援

  1. [[email protected] ~]# vim /etc/fstab
  2. .. ..
  3. //server0.example.com/devops    /mnt/dev    cifs    username=kenji,password=atenorth,multiuser,sec=ntlmssp,_netdev 0 0
  4. [[email protected] ~]# umount /mnt/dev                 //解除安裝此共享
  5. [[email protected] ~]# mount /mnt/dev                 //重新掛載此共享

2)驗證多使用者訪問

切換到普通使用者student驗證,無權訪問掛載點/mnt/dev:

  1. [[email protected] ~]# su - student
  2. Last login: Sun Nov 27 03:51:32 CST 2016 on pts/0
  3. [[email protected] ~]$ ls /mnt/dev
  4. ls: cannot access /mnt/dev: Permission denied

以共享使用者chihiro身份提交新的訪問憑據,再次驗證,對掛載點/mnt/dev可讀寫:

  1. [[email protected] ~]$ cifscreds -u chihiro add server0.example.com
  2. Password:                                         //輸入共享賬號chihiro的密碼
  3. [[email protected] ~]$ touch /mnt/dev/a.txt
  4. [[email protected] ~]$ ls /mnt/dev/a.txt
  5. /mnt/dev/a.txt

3 案例3:普通NFS共享的實現

3.1 問題

本例要求在虛擬機器 server0 上配置NFS服務,完成以下任務:

  1. 只讀的方式共享目錄 /public,只能被 example.com 域中的系統訪問
  2. 可讀寫共享目錄/protected,能被 example.com 域中的系統訪問

然後在虛擬機器 desktop0 上訪問NFS共享目錄

  1. 將 server0 的 /public 掛到本地 /mnt/nfsmount
  2. 這些檔案系統在系統啟動時自動掛載

3.2 方案

對於普通NFS共享來說:

  • 服務端需要執行系統服務 nfs-server.service
  • 客戶端不需要執行特定的系統服務

配置NFS共享目錄的記錄格式:

  1. 資料夾絕對路徑        客戶地址1(ro或rw等控制引數) 客戶地址2(ro或rw等控制引數) .. ..

3.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:在server0上釋出NFS共享目錄

1)準備需要共享的資料夾

  1. [[email protected] ~]# mkdir /public
  2. [[email protected] ~]# mkdir /protected

2)建立NFS共享配置

  1. [[email protected] ~]# vim /etc/exports
  2. /public 172.25.0.0/24(ro)
  3. /protected 172.25.0.0/24(rw)

3)啟動系統服務nfs-server,並設定開機自啟

  1. [[email protected] ~]# systemctl restart nfs-server
  2. [[email protected] ~]# systemctl enable nfs-server
  3. ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'

步驟二:在desktop0上掛載NFS共享目錄/public

1)建立掛載點

  1. [[email protected] ~]# mkdir /mnt/nfsmount

2)列出server0上提供的NFS共享資源

  1. [[email protected] ~]# showmount -e server0.example.com
  2. Export list for server0.example.com:
  3. /protected 172.25.0.0/24
  4. /public 172.25.0.0/24

3)配置開機掛載server0的NFS共享目錄/public

  1. [[email protected] ~]# vim /etc/fstab
  2. .. ..
  3. server0.example.com:/public /mnt/nfsmount nfs _netdev 0 0

4)測試掛載配置

  1. [[email protected] ~]# mount -a
  2. [[email protected] ~]# df -hT /mnt/nfsmount/
  3. Filesystem Type Size Used Avail Use% Mounted on
  4. server0.example.com:/public nfs4 10G 3.2G 6.8G 32% /mnt/nfsmount