1. 程式人生 > >Linux 基礎知識 之CIFS檔案系統 (samba)

Linux 基礎知識 之CIFS檔案系統 (samba)

一、簡介

1.CIFS:

CIFS 是一個新提出的協議,它使程式可以訪問遠端Internet計算機上的檔案並要求此計算機提供服務。CIFS 使用客戶/伺服器模式。客戶程式請求遠在伺服器上的伺服器程式為它提供服務。伺服器獲得請求並返回響應。CIFS是公共的或開放的SMB協議版本,並由Microsoft使用。SMB協議在區域網上用於伺服器檔案訪問和列印的協議。像SMB協議一樣,CIFS在高層執行,而不像TCP/IP協議那樣執行在底層。CIFS可以看做是應用程式協議如檔案傳輸協議超文字傳輸協議的一個實現。

2.CIFS的功能:

1.訪問伺服器本地檔案並讀寫這些檔案

2.與其它使用者一起共享一些檔案塊

3.在斷線時自動恢復與網路的連線

4.使用統一碼(Unicode)檔名:檔名可以使用任何字符集,而不侷限於為英語或西歐語言設計的字符集。

3.samba:提供cifs協議實現共享檔案,主要用於windows與linux的網路檔案系統。

二、CIFS檔案系統的安裝以及與smb使用者共享檔案配置

搭建環境:

服務端: ip 172.25.254.103 

客戶端:ip 172.25.254.203

一、首先在服務端server中配置

1.安裝共享服務yum install samba samba-common samba-client -y


2.systemctl start smb  啟動服務


3.systemctl stop firewalld  關閉火牆
   systemctl disable firewalld 開機不啟動火牆


4.新增smb使用者,smb使用者必須是本地使用者,如果沒有,則需要新建使用者
    useradd westos  新建使用者westos

將student使用者和westos使用者新增到smb使用者中。
smbpasswd -a student 新增student使用者到共享服務
smbpasswd -a westos 新增westos使用者到共享服務


pdbedit -L 檢視服務新增的使用者


pdbedit -x student 在共享服務中刪除student使用者
pdbedit -L 檢視


5.修改selinux的狀態為警告模式(selinux本身關閉時不用修改)
getenforce 檢視selinux狀態
Enforcing
setenforce 0 改為警告模式

二、在客戶端主機desktop進行配置
1.yum install samba-client -y 安裝軟體

2.測試:

匿名使用者顯示內容

[[email protected] ~]# smbclient -L //172.25.254.103

smb使用者westos顯示內容

[[email protected] ~]# smbclient -L //172.25.254.103 -U westos

smb使用者身份上傳檔案(上傳的檔案是客戶端本來存在的檔案)

smbclient //172.25.254.103/westos -U westos

服務端可以看到上傳的檔案

smb使用者掛載

將smb使用者家目錄掛載在/test下
mount -o username=westos,password=ls //172.25.254.103/westos /test 用掛載方式使westos使用者連線samba共享服務


進入/test 目錄建立檔案

服務端有此檔案,檔案共享成功

三、smb服務的訪問控制

1.共享服務的域名修改

2.selinux強制狀態下共享服務

3.共享服務的黑白名單

1.在服務端server中進行配置
修改域名
smbclient -L //172.25.254.103編輯看預設狀態下域名 MYGROUP

 

vim /etc/samba/smb.conf 編輯配置檔案


寫入workgroup = WESTOS


smbclient -L //172.25.254.103 再次檢視修改後域名 WESTOS


 

2.selinux強制狀態下共享服務

1.setenforce 1 selinux改為強制狀態


getsebool -a | grep samba  服務端檢視samba_enable_home_dirs的sebool值,並將其開啟

setsebool -P  samba_enable_home_dirs on  執行,允許selinux強制狀態下共享檔案


測試:
smbclient //172.25.254.103/westos -U westos 客戶端執行,看smb使用者是否可以登陸,實驗證明可以登陸

3.共享服務白名單
編輯vim /etc/samba/smb.conf 配置檔案

寫入 hosts allow =172.25.254.103


systemctl restart smb.service 重新啟動服務


測試:
ip為172.25.254.103使用者可以登陸成功,其餘使用者不能登陸訪問

4.共享服務黑名單

編輯配置檔案vim /etc/samba/smb.conf


寫入 hosts deny =172.25.254.103  不允許172.25.254.103登陸訪問


systemctl restart smb.service 重新啟動服務


測試:
smbclient //172.25.254.103/westos -U westos

四、共享目錄

1.共享自己建立的目錄

建立目錄,並在該目錄下建立檔案用於測試

vim /etc/samba/smb.conf  編輯配置檔案


最後寫入
        [linux]
        comment = westos dir share
        path = /westos


systemctl restart smb.service 重新啟動服務

客戶端可以檢視到該目錄的資訊

但是smb使用者不能正常登入該目錄


修改該目錄的安全上下文和smb服務的安全上下文保持一致
遞迴重新整理並顯示重新整理過程

ls -Zd /westos/ 檢視westos的安全上下文


semanage fcontext -a -t samba_share_t '/westos(/.*)?' 將westos目錄的安全上下文改為 samba_share_t
restorecon -RvvF /westos/


再次測試:
smbclient  //172.25.254.103/linux -U westos 進入測試

2.共享系統目錄
vim /etc/samba/smb.conf 編輯配置檔案


最後寫入
        [opt]
        comment = opt directory
        path =/mnt


systemctl restart smb.service 重新啟動服務

在服務端的/mnt下建立檔案用於測試

客戶端能看到/mnt目錄,但是不能看到/mnt裡邊的檔案
如果將/mnt的安全上下文修改為samba_share_t,顯然不太合適,因為/mnt是系統目錄

smbclient  //172.25.254.103/opt -U westos檢視共享目錄無法檢視到file檔案


將selinux的功能限制開啟
getsebool -a | grep samba 執行

setsebool -P samba_export_all_ro on 開放selinux對smb服務共享目錄功能


smbclient  //172.25.254.103/opt -U westos 再次檢視,可以看到file,共享成功。

samba 的引數應用(共享目錄的功能設定

writable = yes 所有人可寫
write list = @westos 指定使用者可寫 加上@在westos的組可寫
valid  users = + student 指定使用者可以登陸 ,+代表在student組裡可以登陸
browseable = yes 可以被列出
admin users = student student為超級使用者身份
guest ok = yes 匿名使用者可以登陸

新增一個smb使用者方便後續測試:

smbpasswd -a student
pdbedit -L

1.設定該目錄可以被寫
編輯配置檔案 vim /etc/samba/smb.conf

systemctl restart smb.service 重新啟動服務

chmod 777 /westos/ 給共享目錄許可權

測試:

smbclient  //172.25.254.103/linux -U westos

刪除檔案成功

上傳檔案成功

2.指定使用者可寫
vim /etc/samba/smb.conf 編輯配置檔案


測試:

westos 使用者可寫

student 使用者不可寫

3.指定使用者組內成員可寫

vim /etc/samba/smb.conf 編輯配置檔案

此處@ | +  表示指定使用者組

測試:

student不是westos組內成員,所以不可寫

新增student使用者到westos組中
usermod -G westos  student

再次測試:

4.指定使用者登陸

編輯配置檔案vim /etc/samba/smb.conf
valid  users =  student  指定使用者登陸

測試:

smbclient  //172.25.254.103/linux -U student

smbclient  //172.25.254.103/linux -U westos

5.指定使用者組內成員登入

編輯配置檔案vim /etc/samba/smb.conf

測試:

新增westos使用者到student組,再測試成功登陸

6.設定該目錄是否可被瀏覽

編輯配置檔案vim /etc/samba/smb.conf

browseable = yes(設定該目錄允許被瀏覽,不隱藏)

測試:

7.設定指定使用者為root使用者

編輯配置檔案vim /etc/samba/smb.conf

測試:

在測試端上傳一個檔案

在服務端:檔案的所有人為root

將指定資訊註釋掉

再次上傳

在服務端:檔案的所有人為student

8.匿名使用者登陸

編輯配置檔案vim /etc/samba/smb.conf

        guest  ok  = yes表示允許匿名使用者登陸

測試:

服務端檢視

五、多使用者掛載

首先在服務端關閉匿名使用者可登陸
編輯配置檔案vim /etc/samba/smb.conf


在服務端建立新的使用者 例如 lee 並新增到共享服務中

useradd lee  新建使用者
smbpasswd -a lee  
pdbedit -L

在客戶端進行實驗
當不進行smb認真用root使用者掛載則其他使用者也可以檢視並建立刪除檔案
mount //172.25.254.103/linux /test/ -o username=westos,password=ls

 

解除安裝:

實現多使用者掛載:在客戶端安裝多使用者掛載的軟體

編寫已知smb使用者的認證檔案(將使用者身份和密碼編輯進去)

設定檔案許可權

進行掛載

credentials=/root/smbpass           掛載時讀取的檔案(使用者名稱和密碼)

sec=ntlmssp                                   認證方式為smb認證,加密方式為ntlmssp

multiuser                                          多使用者掛載

在/test下新建一個檔案,可以看到檔案的所有人和所有組是服務端smb使用者westos的所有人和所有組

切換到本地使用者student,則不能檢視

給本地student使用者新增smb認證

此時用student使用者新建檔案,可以看到檔案的所有人和所有組是服務端smb使用者lee的所有人和所有組

六、開機自動掛載

首先解除安裝

編輯vim /etc/fstab檔案

寫入:

自動掛載成功