利用基於samba服務的cifs檔案系統實現共享資源

奮鬥吧,青年!發表於2018-11-28

CIFS概述:

1.cifs檔案系統簡介

  CIFS(Common Internet File System)檔案系統也稱通用Internet檔案系統,它使程式可以訪問遠端
Internet計算機上的檔案並要求此計算機的服務。CIFS使用客戶/伺服器模式。客戶程式請求遠在伺服器上的服務程式為它提供服務,
伺服器獲得請求並返回響應。CIFS是公開的開放的SMB協議版本。SMB協議現在是在區域網上用於伺服器檔案訪問和列印的協議。
像SMB協議一樣,CIFS在高層執行。可以看做是應用程式協議如檔案傳輸協議和超文字傳輸協議的一個實現。

2.cifs檔案系統功能

1.訪問伺服器本地檔案並讀寫這些檔案
2.與其它使用者一起共享一些檔案塊
3.在斷線時自動恢復與網路的連線
4.使用統一碼檔名

實驗前提:

已經做好了samba共享 ,並且匿名使用者無法訪問samba服務,因為匿名使用者無法訪問才需要使用者認證機制

1. 普通掛載方式

[root@client ~]# mount //172.25.254.134/linux /mnt -o username=westos,password=westos
[root@client ~]# df

在這裡插入圖片描述

@1.因為是以root使用者身份掛載,故root使用者對其掛載目錄可以讀寫
[root@client ~]# cd /mnt
[root@client mnt]# ls
initial-setup-ks.cfg
[root@client mnt]# touch file1
[root@client mnt]# ls
file1  initial-setup-ks.cfg
[root@client mnt]# cd

在這裡插入圖片描述

@2.但發現非掛載使用者對其目錄也可以讀寫,這樣很不合理!
[root@client ~]# su - student
Last login: Sat Nov 17 23:12:59 CST 2018 on :0
[student@client ~]$ cd /mnt
[student@client mnt]$ ls
file1  initial-setup-ks.cfg
[student@client mnt]$ touch file2
touch: cannot touch ‘file2’: Permission denied
[student@client mnt]$ ls
file1  file2  initial-setup-ks.cfg
[student@client mnt]$ exit
logout

在這裡插入圖片描述

@3.並且發現不論是掛載使用者還是非掛載使用者均用的是1001使用者身份建立的檔案,這樣很不合理!
[root@client ~]# ls -l /mnt
total 4
-rw-r--r--. 1   1001   1001    0 Nov 25 09:28 file1
-rw-r--r--. 1   1001   1001    0 Nov 25 09:28 file2
-rwxr--r--. 1 nobody nobody 1841 Nov 24 17:21 initial-setup-ks.cfg
[root@client ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)

在這裡插入圖片描述

@4.發現1001使用者為服務端的samba使用者:westos
[root@service ~]# pdbedit -L
student:1000:
westos:1001:
[root@service ~]# id westos
uid=1001(westos) gid=1001(westos) groups=1001(westos),1000(student)

在這裡插入圖片描述
在這裡插入圖片描述
非掛載使用者也可以訪問掛載目錄的內容資訊,這說明通過普通掛載的方式來實現samba共享是很不安全的

2.使用cifs協議實現多使用者掛載

(1).指定掛載使用者認證(本次使用者認證)

##1.解除安裝
[root@client ~]# umount /mnt
##2.安裝cifs工具
[root@client ~]# yum install -y cifs-utils.x86_64
##看到samba客戶端軟體是4.2版本
[root@client ~]# rpm -qa | grep samba 

在這裡插入圖片描述

##3.新增samba使用者認證(首次認證); 認證使用者任意,只要是samba使用者均可
[root@client ~]# vim /root/smbpass
################
username=westos       ##westos為samba使用者
password=westos       ##samba使用者密碼

在這裡插入圖片描述

##4.更改許可權
[root@client ~]# chmod 600 /root/smbpass
[root@client ~]# ll /root/smbpass 
-rw-------. 1 root root 32 Nov 25 09:43 /root/smbpass

在這裡插入圖片描述

##5.掛載
[root@client ~]# mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.134/linux /mnt
 註解:
    credentials=/root/smbpass    ##用於指定掛載使用者認證資訊檔案
    multiuser                    ##表示使用多使用者掛載
    sec=ntlmssp                  ##指定認證方式(kernel3.8之後是預設選項)

[root@client ~]# df

在這裡插入圖片描述

測試:

##此時非掛載使用者(即未認證的使用者)對掛載目錄便沒有訪問許可權
[root@client ~]# su - student
Last login: Sun Nov 25 10:09:31 CST 2018 on pts/0
[student@client ~]$ cd /mnt
[student@client mnt]$ ls
ls: reading directory .: Permission denied

在這裡插入圖片描述
(2)新增非掛載使用者認證

非掛載使用者可以通過samba使用者認證實現訪問掛載目錄中的檔案資源

##1.新增samba使用者
[root@service ~]# pdbedit -L
student:1000:student
westos:1001:
[root@service ~]# useradd lee
##新增samb使用者
[root@service ~]# smbpasswd -a lee
New SMB password:
Retype new SMB password:
Added user lee.
[root@service ~]# pdbedit -L
student:1000:student
westos:1001:
lee:1002:
[root@service ~]# id lee
uid=1002(lee) gid=1002(lee) groups=1002(lee)

在這裡插入圖片描述

##2.新增samba使用者認證; student使用者通過samba使用者:lee登陸認證,(此處的認證使用者任意,只要是samba使用者即可)
[student@client mnt]$ cifscreds add -u lee 172.25.254.134
Password: 

測試:

##發現以student使用者身份建立的檔案實質上是以samba使用者:lee身份建立的
[student@client mnt]$ ls
file1  file2  initial-setup-ks.cfg  rootfile
[student@client mnt]$ touch studentfile
[student@client mnt]$ ll

在這裡插入圖片描述
使用cifs協議通過安全認證機制,極大的提高了samba共享的安全性,使不同的使用者都必須通過認證才能訪問共享目錄

相關文章