1. 程式人生 > >企業級Linux下Samba(SMB)服務的檔案共享

企業級Linux下Samba(SMB)服務的檔案共享

CIFS協議###

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

Samba###

Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟體,由伺服器及客戶端程式構成。SMB(Server Messages Block,資訊服務塊)是一種在區域網上共享檔案和印表機的一種通訊協議,它為區域網內的不同計算機之間提供檔案及印表機等資源的共享服務。SMB協議是客戶機/伺服器型協議,客戶機通過該協議可以訪問伺服器上的共享檔案系統、印表機及其他資源。通過設定"NetBIOS over TCP/IP"使得Samba不但能與區域網絡主機分享資源,還能與全世界的電腦分享資源。

SMB服務的安裝

1.為了試驗我們配置兩臺虛擬機器一個為服務端一個為客戶端
服務端我們起名字為shareserver.westos.com
客戶端我們起名字為client.westos.com
在這裡插入圖片描述
2.服務端配置
所用到的命令:

yum install samba samba-common samba-client 下載sma服務
systemctl start smb
[[email protected] ~]# systemctl stop firewalld.service 關閉防火牆
[[email protected] ~]# smbpasswd -a student 給sam服務新增使用者
New SMB password:                                  設定student使用者sam服務的密碼
Retype new SMB password:
Added user student.
[email protected]
~]# setenforce 0 將selinux該為警告模式 [email protected] ~]# getenforce Permissive [[email protected] student]# smbpasswd -x student 刪除新增的使用者 Deleted user student. [[email protected] student]# pdbedit -L 檢視sma新增的使用者

#1.下載smb服務
在這裡插入圖片描述
#2.開啟服務
在這裡插入圖片描述
#3.關閉防火牆,共享檔案別人要拿東西,所以一般要輸出東西是火牆一定要關閉
在這裡插入圖片描述


#4.給smb服務新增使用者,此處我們新增使用者student
在這裡插入圖片描述
#5.將selinux改為警告模式,後續我們會研究在強制模式下smb的用法
在這裡插入圖片描述
#6.pdbedit -L 可以看到檢視sma新增的使用者
pdbedit -x 可以刪除sma使用者
此處我們添加了westos使用者並將他刪除,作為實驗
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
3.客戶端的配置
所用到的命令

[[email protected] ~]# yum install samba-client  下載sam客戶端服務
[[email protected] ~]# smbclient -L //172.25.71.100  檢視匿名使用者可以共享的檔案
[[email protected] ~]# smbclient -L //172.25.71.100 -U student  檢視student使用者共享的檔案
[[email protected] ~]# smbclient //172.25.71.100/student -U student    用student使用者登入
Enter student's password: 
[[email protected] ~]# mount -o username=student,password=westos //172.25.254.149/student /mnt/   掛載共享檔案到本機的/mnt目錄下 
  儲存分領  實際位置在服務段的/home/student

#1.下載客戶端服務
在這裡插入圖片描述
#2.匿名使用者檢視共享檔案
在這裡插入圖片描述
#3.以student使用者身份檢視共性檔案
在這裡插入圖片描述
#4.以student使用者身份登入,輸入密碼,密碼就是前面服務端smb服務新增的student使用者設定的密碼,進入到服務端/home/student
在這裡插入圖片描述
#5.然後你可以在服務端的/student下寫東西,客戶端就可以看到新建的檔案
在這裡插入圖片描述
在這裡插入圖片描述
#6.也可以在將共享的檔案掛載到本機的目錄下,此處我們掛載到/mnt下,可以寫入東西,在服務端就可以看到
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

SMB服務配置檔案,以及selinux為強制模式下的設定

服務端配置
所用程式碼:

[[email protected] student]# vim /etc/vimrc 
最後一行加 set nu 
[[email protected] student]# vim /etc/samba/smb.conf 
89         workgroup = WSETOS 修改域名
96         hosts allow =    可加允許登入的ip
97        hosts deny =	不允許登入的ip
[[email protected] student]# setenforce 1 變為強制性
getsebool -a | grep smb    smb功能各種許可權的開關
[[email protected] student]# setsebool -P samba_enable_home_dirs on
家目錄分享開啟

#1.為了方便新增配置檔案內容,我們編輯vim /etc/vimrc 最後一行加 set nu 給配置檔案加上行數
在這裡插入圖片描述
在這裡插入圖片描述
#2.編輯smb配置檔案vim /etc/samba/smb.conf 在89行的域名可以修改
在這裡插入圖片描述
#3.在客戶端用匿名使用者登入時會顯示剛才修改的域名
在這裡插入圖片描述
#4.我們將selinux改為強制性,然後再在客戶端修登入時會發現沒有權利登入
在這裡插入圖片描述
在這裡插入圖片描述
#5.我們將smb服務的家目錄可分享許可權開啟,再在客戶端登入發現可以成功
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
#6.可以編輯smb的配置檔案來限制許可權 vim /etc/samba/smb
hosts allow=允許訪問的ip
hosts deny= 不允許訪問的ip
在這裡插入圖片描述

SMB服務下自定義目錄共享

自建目錄共享

服務端配置

mkdir /westos 建立檔案
[email protected] student]# ls -Zd /westos/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /westos/
[[email protected] student]# semanage fcontext -a -t samba_share_t '/westos(/.*)?'
[[email protected] westos]# restorecon -RvvF /westos/
改變檔案上下文
 [email protected] mnt]# vim /etc/samba/smb.conf 
[linux]  名字
322         comment = westos dir share 說明
323         path = /westos 路徑

#1.先建立westos的檔案
在這裡插入圖片描述
#2.編輯smb服務的配置檔案,加上我們要分享的檔案
在這裡插入圖片描述
linux為共享出去檔案的名字,/westos為實際的路徑
在這裡插入圖片描述
#3.由於selinux為強制模式,所以在客戶端實驗時會出現許可權不夠的問題
在這裡插入圖片描述
#4.所以應該修改/westos的安全上下文讓其與smb服務匹配,讓其有許可權訪問
在這裡插入圖片描述
可以看到安全上下文改變成功
在這裡插入圖片描述
#5.在客戶端登入可以成功進入分享的檔案
在這裡插入圖片描述

系統目錄共享

在服務端配置

[email protected] westos]# vim /etc/samba/smb.conf 
 [mnt]
326         comment = mnt directory
327         path = /mnt   實際路徑為/mnt
[[email protected] westos]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> on
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
[[email protected] westos]# setsebool -P samba_export_all_ro on 忽略安全上下文,共享目錄所有人可讀開啟

#1.配置smb配置檔案,加入系統目錄的路徑
在這裡插入圖片描述
在這裡插入圖片描述
#2.我們在mnt下建立檔案,發現客戶端登入發現不了
在這裡插入圖片描述
在這裡插入圖片描述
#3.由於/mnt為系統目錄所以我們不能改它的安全上下文,改了的話,其他在程式/mnt下執行動作時,會遇到麻煩,所以我們開啟smb的相關許可權
在這裡插入圖片描述
setsebool -P samba_export_all_ro on 忽略安全上下文,共享目錄所有人可讀開啟
在這裡插入圖片描述
#4.在客戶端登入時就可以看到服務端在/mnt建立的檔案了
在這裡插入圖片描述
#5.檔案共享時也可以加入其他的限定條件,如

[email protected] mnt]# vim /etc/samba/smb.conf
321         [linux]
322         comment = westos dir share
323         path = /westos
324         writable = yes  任何使用者可寫   不過要給/westos滿許可權
325 ;       write list = @westos   允許westos組可以寫
326 ;       valid users = +student	允許student組可以登陸
327         browseable = yes		是否可以被看見
328         admin users = student	給student使用者以root的權力執行動作
329         guest ok = yes		匿名使用者可登陸
125         map to guest = bad user  標明匿名使用者的身份

SMB多使用者認證

1.yum install cifs-utils -y   下載服務
2. vim /root/smbpass  寫入使用者名稱和密碼
username=student
password=westos
chmod 600 /root/smbpass
3. mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.71.100/linux /mnt/
credentials=/root/smbpass-本次掛載root使用者認證機制
sec=ntlmssp-多使用者掛載認證機制
multiuser-多使用者
4.[[email protected] mnt]# touch rootfile
[[email protected] mnt]# ls -l
total 1024
-rw-r--r-- 1   student   student    0 Nov 24 02:15 rootfile
5.[[email protected] ~]$ cifscreds add -u lee 172.25.71.100 ##
[[email protected] mnt]$ touch studentfile
[[email protected] mnt]$ ls -l
total 1024
-rw-r--r-- 1   student  student    0 Nov 24 02:15 rootfile
-rw-r--r-- 1   1001   1001    0 Nov 24 02:20 studentfile
6.cifscreds clearall 清除多使用者認證

#1.在服務端下載cifs-utils服務
在這裡插入圖片描述
為了更好實驗給/westos滿許可權
在這裡插入圖片描述
#2.在客戶端編輯一個存放登入使用者和密碼的檔案 vim /root/smbpass,並給這個檔案600,只有root使用者檢視的權利
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
將服務端分享的檔案掛載到/mnt下
credentials=/root/smbpass-本次掛載root使用者認證機制
sec=ntlmssp-多使用者掛載認證機制
multiuser-多使用者
在這裡插入圖片描述
在mnt下建立檔案可以看到所有人和所有組都為student使用者
在這裡插入圖片描述
當我們改變使用者進入mnt下建立檔案會顯示許可權不夠,因為客戶端的student沒有服務端smb的認證使用者機制
在這裡插入圖片描述
#3.我們在服務端加再加一個smb服務的使用者
在這裡插入圖片描述
可以看到lee使用者已經新增,他的uid為1002
在這裡插入圖片描述
4.我們再到客戶端的student使用者下
新增服務端使用者lee的smb服務的認證機制
在這裡插入圖片描述
再到/mnt下建立檔案時就會成功,並且uid和gid為1002,對應服務端lee的uid和gid
在這裡插入圖片描述
5.當我們不想需要這些認證機制時,用cifscreds clearall 清除多使用者認證
在這裡插入圖片描述