Samba伺服器綜述
Samba是在Linux和UNIX系統上實作SMB協定的一個免費軟體,由伺服器及用戶端程式構成。SMB(Server Messages Block,資訊服務塊)是一種在區域網路上共享檔案和列印機的一種通信協定,它為區域網路内的不同計算機之間提供檔案及列印機等資源的共享服務。SMB協定是客戶機/伺服器型協定,客戶機通過該協定可以通路伺服器上的共享檔案系統、列印機及其他資源。通過設定“NetBIOS over TCP/IP”使得Samba不但能與區域網路絡主機分享資源,還能與全世界的電腦分享資源。
1.環境準備
兩台虛拟機centos7-1,centos7-2,分别作為Samba伺服器和測試客戶機;
一台Windows系統(密碼為uplooking)作為測試客戶機。ipconfig指令為在Windows系統中檢視IP位址指令。
測試三台機器之間的連通性(ping指令)
注意:centos系統ping Windows系統連不通,但Windows系統ping centos系統通。
解決方法:關閉Windows系統的防火牆(在控制台/系統和安全中)如圖1-1所示:

圖1-1 關閉虛拟機中windows防火牆
2.Samba伺服器端的配置(centos7-1上操作)
2.1 安裝軟體包
yum -y install samba*
rpm -qa |grep samba
如圖2-1所示:
圖2-1 檢視samba包
隻要包含samba,samba-common,cifs-utils包就可以了。
2.2 匿名使用者測試
(1)建立共享目錄
mkdir /tmp/test1
chmod 777 /tmp/test1
(2)修改主配置檔案************
vim /etc/samba/smb.conf 123行
#======================= Global Settings ================
[global]
security = user
map to guest = Bad User
# passdb backend = tdbsam
如圖2-2所示
圖2-2 修改主配置檔案一
在末尾添加如下段落,注意://的注釋不要添加進去
[test1]
comment = test1 //對共享的描述,自定義
path = /tmp/test1 //共享的絕對路徑
writable = yes
public = yes //不需要密碼通路,等價于guest ok
圖2-3 修改主配置檔案二
使用指令testparm測試配置檔案是否存在錯誤,如圖2-4,2-5所示:
圖2-4測試配置檔案是否錯誤
圖2-4 點選回車後彈出的内容
(3)啟動并設定開機自啟動
systemctl restart smb.service
systemctl enable smb.service
如圖2-5所示
圖2-5 啟動服務和設定開機自啟
(4)Windows用戶端測試
按住“r”鍵和“開始”按鍵,可以激活cmd運作視窗,或者打開檔案夾,點選下方的“網絡”,在位址欄裡輸入\\samba伺服器IP ,即可看到釋出的共享目錄test1,可以在該目錄内進行寫操作。如圖2-6,2-7所示
圖2-6 windows進入共享檔案
圖2-7 在共享檔案中建立檔案
(5)Linux用戶端登入測試
yum -y install samba-client //Samba安裝用戶端軟體包
smbclient -L //Samba伺服器IP //查詢共享目錄
如圖2-8所示:
圖2-8 檢視共享目錄
smbclient //192.168.122.51/test1 //登入共享目錄
Enter root's password: //目前沒有密碼,直接回車就可以了
如圖2-9所示
圖2-9 登入共享目錄
支援的指令包括:
?
pwd
ls
mkdir aaa
put bbb.txt
get bbb.txt
quit
如圖2-10所示:
圖2-10 常用指令測試
(6)Linux用戶端挂載測試
mkdir /mnt/smb1
mount -t cifs //192.168.122.51/test1 /mnt/smb1,如圖2-11所示
圖2-11 用戶端挂載
注意:提示不識别的類型cifs,是因為用戶端未安裝此軟體包。
yum whatprovides cifs-utils
yum -y install cifs-utils*
再次挂載測試OK!
mount -t cifs //192.168.122.51/test1 /mnt/smb1 //主配置檔案中括号裡的就是檔案名
Password for root@//192.168.122.51/test1: 沒有密碼直接回車即可。
或者使用mount -t cifs //192.168.122.51/test1 /mnt/smb1 -o pass=''
df -Th
如圖2-12所示
圖2-12 挂載成功
測試指令
cd /mnt/smb1
touch 333.txt
umount /mnt/smb1
圖2-13所示
圖2-13 測試
(7)匿名使用者隻讀權限的測試
方法:可以修改參數writable = no;還可以将共享目錄的權限設定成去掉w。此時匿名使用者再無寫權限。如圖2-14,2-15所示:
圖2-14 windows測試
圖2-15 linux測試
3 指定賬戶的測試方法一
(1)建立共享目錄
mkdir /tmp/test2
chmod 777 /tmp/test2
如圖3-1所示
圖3-1 建立共享目錄
(2)建立Samba賬戶
useradd alice //建立系統使用者
passwd alice
smbpasswd -a alice //設定samba密碼
如圖3-2所示
圖3-2 建立samba賬戶
(3)服務端對smb賬戶的管理
查詢所有的smb帳号 pdbedit -L如圖3-3所示
圖3-3 檢視smb賬戶
删除某一smb帳号 smbpasswd -x alice
禁用某一smb帳号 smbpasswd -d alice
啟用某一smb帳号 smbpasswd -e alice
(4)修改Samba主配置檔案
vim /etc/samba/smb.conf //在末尾添加如下段
[test2]
comment = test2systemctl
path = /tmp/test2
writable = yes
public = no //需要賬戶密碼方可通路如圖3-4所示:
圖3-4 在配置檔案中添加資訊
使用指令testparm測試配置檔案是否存在錯誤
(5)重新開機Samba服務
systemctl restart smb.service
(6)Windows用戶端測試
打開檔案夾,點選下方的“網絡”,在位址欄裡輸入\\samba伺服器IP ,即可看到釋出的共享
目錄test2,可以在該目錄内進行寫操作。
注意:如果提示用戶端不能進行兩個連接配接,隻需重新開機Windows系統再次測試即可成功。如圖3-5所示:
圖3-5 windows測試
(7)Linux用戶端登入測試
smbclient -L //192.168.122.51 //查詢共享目錄
Enter root's password: 目前沒有密碼,直接回車就可以了
smbclient //192.168.122.51/test2 -U alice //登陸共享目錄
Enter alice's password: //此處需要輸入alice的samba密碼
如圖3-6所示
圖3-6 smb賬戶的管理的測試
(8)Linux用戶端挂載測試
mkdir /mnt/smb2
yum -y install cifs-utils*
mount -t cifs //192.168.122.51/test2 /mnt/smb2/ -o username=alice (需要手動輸入密碼)
Password for alice@//192.168.122.51/test2: *
df -Th如圖3-7所示:
圖3-7 linux用戶端挂載
或者mount -t cifs //192.168.122.51/test2 /mnt/smb2 -o username=alice,pass='111' (自動輸入密碼)
mkdir ccc
touch ddd.txt
ll
(9)指定賬戶寫權限的測試,如圖3-8所示
圖3-8 指定賬戶寫權限的測試
(10)修改配置檔案,使得使用者沒有寫權限,如圖3-9所示:
圖3-9 修改配置檔案關閉寫權限
在windows上測試,不可以建立檔案如圖3-10所示:
圖3-10 windows測試
在linux上測試,不可以建立檔案如圖3-11所示:
圖3-11 linux上測試
4 指定賬戶的測試方法二
(1)建立共享目錄
mkdir /tmp/test3
chmod 777 /tmp/test3
(2)建立Samba賬戶
useradd zhz //建立系統使用者
passwd zhz
smbpasswd -a zhz //設定samba密碼
useradd zhanghz
passwd zhanghz
smbpasswd -a zhanghz
如圖4-1,4-2所示:
圖4-1 建立共享檔案
圖4-2 建立使用者
(3)服務端對smb賬戶的管理(同前)
查詢所有的smb帳号 pdbedit -L
(4)修改Samba主配置檔案
vim /etc/samba/smb.conf //在末尾添加如下段
[test3]
comment = this is test3
path = /tmp/test3
valid users = zhz zhanggl
writable = yes
public = no //需要賬戶密碼方可通路
如圖4-3所示
圖4-3 設定配置檔案
使用testparm測試是否存在文法錯誤
(5)重新開機Samba服務
systemctl restart smb.service
(6)Windows用戶端測試
打開檔案夾,點選下方的“網絡”,在位址欄裡輸入\\samba伺服器IP ,即可看到釋出的共享
目錄test3,可以在該目錄内進行寫操作。但需要使用zhz,和zhanghz使用者
注意:如果提示用戶端不能進行兩個連接配接,隻需重新開機Windows系統再次測試即可成功,建立倆個檔案。如圖4-4所示
圖4-4 在共享檔案中建立倆個檔案
(7)Linux用戶端登入測試
smbclient -L //192.168.122.51 //查詢共享目錄
Enter root's password: //目前沒有密碼,直接回車就可以了
smbclient //192.168.122.51/test3 -U zhz //登陸共享目錄
Enter zhz's password:如圖4-5所示
圖4-5 linux端測試
(8)Linux用戶端挂載測試
mkdir /mnt/smb3
yum -y install cifs-utils*
mount -t cifs //192.168.122.51/test3 /mnt/smb3/ -o username=baigl (需要手動輸入密碼)
Password for baigl@//192.168.122.51/test3: *
df -Th 如圖4-6所示:
圖4-6 挂載
或者mount -t cifs //192.168.122.51/test3 /mnt/smb3 -o username=baigl,pass='111' (自動輸入>密碼)
先把所有共享檔案消除挂載,使用指令umount 如圖4-7所示
圖4-7 清除挂載
2.5 在Linux用戶端(centos7-2)實作開機自動挂載
進入自動挂載檔案“/etc/fstab”中,實作匿名使用者與指定伺服器使用者開機自動挂載
vim /etc/fstab
在末尾出入
//192.168.122.51/test1 /mnt/smb1 cifs defaults,pass='' 0 0
//192.168.122.51/test2 /mnt/smb2 cifs defaults,username=alice,pass='alice' 0 0
//192.168.122.51/test3 /mnt/smb3 cifs defaults,username=zhz,pass='zhz' 0 0
如圖4-8所示
圖4-8 /etc/fstab添加内容
輸入指令mount -a
df -Th 如圖4-9所示
圖4-9 挂載
5 總結
本節課學習了Samba伺服器的配置,如何建立匿名使用者共享目錄和指定使用者的共享目錄配置,及其權限的修改和測試。了解到了檔案資料在不同主機之間的傳輸大多是使用 FTP 這個好用的伺服器軟體來進行傳送。使用FTP 傳輸檔案卻有個小的問題,無法直接修改主機上面的檔案資料,也就是說想要更改Linux 主機上的某個檔案時,必需要由 Server 端将該檔案下載下傳到 Client端後才能修改,也是以該檔案在 Server 與 Client 端都會存在。是以最後修改版如果忘記上傳就會丢失。Samba直接載伺服器修改檔案,不會導緻丢失最新版。