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檔案
寫入:
自動掛載成功