檔案共享之SMB/CIFS協議及Samba的使用
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
相關文章
- SMB/CIFS協議解析(一)協議
- FreeBSD SMB/CIFS協議(轉)協議
- cifs檔案系統{samba檔案共享服務}Samba
- CIFS檔案的儲存————SMB
- CIFS檔案共享
- 使用Samba共享檔案Samba
- 如何利用samba(smb服務)實現網路檔案共享Samba
- 如何在本地區域網中透過SMB協議加密共享檔案協議加密
- samba共享檔案Samba
- 利用基於samba服務的cifs檔案系統實現共享資源Samba
- linux samba配置檔案/etc/samba/smb.confLinuxSamba
- SMB協議協議
- cifs協議埠協議
- 445埠被封之後,如何使用smb協議協議
- Java中使用jcifs庫操作SMB協議進行檔案操作Java協議
- Vagrant 開啟 smb 檔案共享
- cifs網路檔案共享系統
- 通過cifs協議,linux mount windows共享目錄協議LinuxWindows
- SMB與CIFS 445埠
- 教你如何在CentOS上使用Samba共享檔案CentOSSamba
- ubuntu 16.04 samba 檔案共享UbuntuSamba
- SMB協議詳解協議
- centos7使用samba搭建檔案共享伺服器CentOSSamba伺服器
- 如何實現Samba檔案共享服務Samba
- Linux與Windows共享檔案Samba(轉)LinuxWindowsSamba
- 【openEuler系列】部署檔案共享服務SambaSamba
- 如何在MacOS中設定共享檔案協議?Mac協議
- atitit.網路檔案訪問協議.unc smb nfs ftp http的區別協議NFSFTPHTTP
- linux和Windows實現檔案共享之samba的安裝與配置LinuxWindowsSamba
- 【內網穿透伺服器】公網環境訪問內網伺服器(以使用samba(smb)檔案共享服務為例)內網穿透伺服器Samba
- TCP/IP協議及配置、檔案系統TCP協議
- Linux——搭建Samba(CIFS)伺服器LinuxSamba伺服器
- 使用LPD協議來共享印表機協議
- win10電腦連xp印表機共享提示smb1協議共享不安全的解決教程Win10協議
- Linux 下安裝Samba 檔案共享伺服器LinuxSamba伺服器
- .單機版samba設定 /etc/samba/smb.confSamba
- 繼勒索病毒“永恆之藍”445埠被封之後,在公網實現smb檔案共享
- 檔案共享之nfsNFS