檔案共享之SMB/CIFS協議及Samba的使用

ly2020_發表於2019-05-30

1 SMB/CIFS協議及Samba的介紹

1.1 SMB/CIFS協議

 SMB(Server Message Block)又稱CIFS(Common Internet File System),一種應用層網路傳輸協議(微軟(Microsoft)和英特爾(Intel)在1987年制定的協議),由微軟開發,主要功能是使網路上的機器能夠共享計算機檔案、印表機、串列埠和通訊等資源。它也提供認證的程式間通訊技能。它主要用在Windows的機器上。
 CIFS是由microsoft在SMB的基礎上發展,擴充套件到Internet上的協議。他和具體的OS無關,在unix上安裝samba後可使用CIFS.它使程式可以訪問遠端Internet計算機上的檔案並要求此計算機的服務。CIFS 使用客戶/伺服器模式。客戶程式請求遠在伺服器上的伺服器程式為它提供服務。伺服器獲得請求並返回響應。
 CIFS是公共的或開放的SMB協議版本,並由Microsoft使用。SMB協議現在是區域網上用於伺服器檔案訪問和列印的協議。像SMB協議一樣,CIFS在高層執行,而不象TCP/IP協議那樣執行在底層。CIFS可以看做是應用程式協議如檔案傳輸協議和超文字傳輸協議的一個實現。
1.2 Samba軟體

Samba是種用來讓UNIX系列的作業系統與微軟Windows作業系統的SMB/CIFS(Server Message Block/Common Internet File System)網路協議做連結的自由軟體。簡而言之,此軟體在Windows與UNIX系列OS之間搭起一座橋樑,讓兩者的資源可互通有無。
samba是許多服務以及協議的實現,其包括TCP/IP上的NetBIOS、SMB、CIFS等等協議。

2 Samba的使用

2.1 samba服務的組成部分

Samba-common – 用來提供一些配置檔案
Samba-client – 客戶端應用程式
Samba – 服務端應用程式
samba在linux系統上的服務名稱:smb
服務埠:通常使用TCP/445進行所有連線。還使用UDP137、UDP138和TCP/139進行向後相容
主配置檔案:/etc/samba/smb.conf

2.2 服務端(server虛擬機器)的配置

使用該軟體可以使windows和linux的資源共享,
接下來我們僅示例linux系統中共享檔案後使用samba的操作,和windows共享檔案之後在linux系統的操作一致

在服務端:
yum install samba-client.x86_64 samba-common.x86_64 samba.x86_64 -y    
smbpasswd -a westos                  #建立smb登陸使用者,必須為服務端主機存在的使用者
pdbedit -L                           #檢視系統中smb使用者
當selinux=enforcing時,
         mkdir /west               #建立共享目錄
	     semanage fcontext -a -t samba_share_t '/west(/.*)?'
	     restorecon -RvvF /west
         vim /etc/samba/smb.conf
             [LEE]           #共享名稱(等於作為磁碟名字) 
	         path=/west    #共享目錄的絕對路徑 
         systemctl restart smb
         systemctl enable smb.service
         systemctl stop firewalld

在這裡插入圖片描述
在這裡插入圖片描述
2.3 客戶端(desktop虛擬機器)的操作

    yum install samba-client
    smbclient -L //172.25.254.133   發現共享出來的目錄與檔案
    smbclient //172.25.254.133/LEE  不能登陸,需要使用者
    smbclient //172.25.254.133/LEE -U westos
    掛載共享出來的目錄:
    mount //172.25.254.133/LEE /mnt -o username=westos,password=westos
    cd /mnt
         

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

3 修改共享目錄的引數

3.1 修改目錄說明(comment)

vim /etc/samba/smb.conf
comment=west dir 
systemctl restart smb   
smbclient -L //172.25.254.133   #發現共享出來的目錄與檔案,會看到目錄的comment改變

在這裡插入圖片描述
在這裡插入圖片描述
3.2 設定共享檔案隱藏,但並不是代表沒有共享,照樣可以使用

 vim /etc/samba/smb.conf
 browseable=no   (預設是yes)
 systemctl restart smb  
 smbclient -L //172.25.254.133  發現不了共享目錄
 smbclient //172.25.254.133/LEE -U westos   但是可以登陸使用

在這裡插入圖片描述
在這裡插入圖片描述
3.3 設定哪些使用者可以登陸smb

服務端:
 vim /etc/samba/smb.conf
 valid users=westos   只允許使用者westos登陸
 systemctl restart smb  
新增使用者smb使用者lee,student
 useradd lee ;smbpasswd -a lee 
 pdbedit -L 檢視該服務使用者
 pdbedit -x student  刪除student使用者
 客戶端:
 smbclient //172.25.254.133/LEE -U lee  不可以登陸使用
 smbclient //172.25.254.133/LEE -U westos   可以登陸使用

在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述 3.4 設定登陸列表

vim /etc/samba/smb.conf
valid users=+westos   允許使用者組westos登陸,使用者屬於westos組都可以登陸(@符也可以)
systemctl restart smb  
useradd -G westos lee
smbclient //172.25.254.133/LEE -U lee  可以登陸使用

在這裡插入圖片描述
在這裡插入圖片描述
3.5 設定使用者是否可寫

服務端:
vim /etc/samba/smb.conf
writable=yes
systemctl restart smb 
smbclient //172.25.254.133/LEE -U lee  
put和rm不行,檔案系統許可權沒有
setfacl -m u:lee:rwx /west
setfacl -m u:westos:rwx /west
客戶端:
  smbclient //172.25.254.133/LEE -U lee 
  smbclient //172.25.254.133/LEE -U westos  都可以進行寫操作

在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
3.6 設定可寫列表

vim /etc/samba/smb.conf
write list=lee
systemctl restart smb  
smbclient //172.25.254.133/LEE -U lee  可以寫
smbclient //172.25.254.133/LEE -U westos  不可以寫

在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述 3.7 設定可寫使用者組

vim /etc/samba/smb.conf
 write list=@lee
 systemctl restart smb  
 smbclient //172.25.254.133/LEE -U lee  可以執行寫操作
 smbclient //172.25.254.133/LEE -U westos  不可以執行寫操作
 usermod -G lee westos
 smbclient //172.25.254.133/LEE -U westos  可以執行寫操作了

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
3.7 設定匿名使用者是否可以登陸

smbclient //172.25.254.133/LEE  本身匿名使用者不能登陸
vim /etc/samba/smb.conf
guest ok=yes
systemctl restart smb  
smbclient //172.25.254.133/LEE    可以登陸了
但是,該身份僅在smb互動介面可以使用,不能用來掛載,需要新增引數:
vim /etc/samba/smb.conf
map to guest=bad user    
systemctl restart smb  
mount //172.25.254.133/LEE /mnt -o username=guest

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
3.8 設定共享檔案的超戶

當我新增了smb使用者student後,把writable=yes可寫引數開啟
但是使用student使用者登陸,不可寫
smbclient //172.25.254.133/LEE -U student 仍然不能可寫
因為getfacl列表中只對超戶、lee、westos可寫
我們把student設定為超戶實現studnet使用者可寫
 vim /etc/samba/smb.conf
admin users=student
smbclient //172.25.254.133/LEE -U student 可寫了
put anaconda-ks.cfg  
在服務端檢視時,cd /west
 ll  上傳的anaconda-ks.cfg檔案所有人為root

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

3.9 改變檔案所在區組

vim /etc/samba/smb.conf
89行 workgroup=WESTOS
systemctl restart smb  
smbclient //172.25.254.133/LEE -U westos   可以看到domain的名字改變了

在這裡插入圖片描述在這裡插入圖片描述 3.10 smb的多使用者掛載

當我使用使用者lee掛載到/mnt後,//172.25.254.133/LEE 的usernmae=lee
 但是當我切換成linux使用者時,同樣可以檢視/mnt下的檔案
在客戶端:yum install cifs-utils -y
umount /mnt
vim /root/smbauth
username=lee
password=lee
chmod 600 /root/smbauth
mount //172.25.254.133/LEE /mnt -o credentials=/root/smbauth
umount /mnt
mount //172.25.254.133/LEE /mnt -o credentials=/root/smbauth,sec=ntlmssp,multiuser
這時,要想檢視/mnt需要進行使用者的驗證
su - linux
cd /mnt
cifscreds add -u westos 172.25.254.133   #進行westos使用者的認證
cifscreds add -u westos 172.25.254.133   #當認證了之後再次新增認證,會提示你已經認證過
cifscreds clear -u westos 172.252.54.133 #清空認證
cifscreds add -u westos 172.25.254.133  
touch file      #建立檔案 使用的使用者是westos,但是客戶端顯示為linux使用者,因為linux和westos的id=1001
exit
再次建立檔案,使用的是lee,為掛載時使用的使用者

credentials=/root/smbfile指定掛載時所用到的使用者檔案
multiuser 支援多使用者認證
sec=ntlmssp 認證方式為標準smb認證方式

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述 3.11 開機自動掛載

vim /etc/fstab
//172.25.254.133/LEE /mnt cifs defaults,credentials=/root/smbauth,sec=ntlmssp,multiuser
mount -a

在這裡插入圖片描述

相關文章