SMB服務簡介

 

一、Samba簡介

Samba是種自由軟件,用來讓UNIX系列的操做系統與微軟Windows操做系統的SMB/CIFS(Server Message Block/Common Internet File System)網絡協定作連結。在目前的版本(v3),不只可存取及分享SMB的資料夾及打印機,自己還能夠整合入Windows Server的網域、扮演爲網域控制站(Domain Controller)以及加入Active Directory成員。簡而言之,此軟件在Windows與UNIX系列OS之間搭起一座橋樑,讓二者的資源可互通有無。html

 

二、SMB協議

在安裝Samba系統以前,頗有必要了解一下Samba是如何工做的。Samba之因此可以工做,是由於它模仿的是Windows內核的文件和打印共享協議,該協議稱之爲SMB 協議(Server Message Block )。SMB在Windows出現以前就已經存在了。該協議能夠追溯到上個世紀的80年代,它是由英特爾微軟、IBM、施樂以及3com等公司聯合提出的。雖然在過去的20年中,該協議獲得了擴展,可是該協議的基本理論仍然是相同的。linux

微軟已經將SMB更名爲公共因特網文件系統(CIFS,Common Internet File System )。這在必定程度上是因爲它想與最初的基於NetBIOS的SMB保持必定的距離。最初,NetBIOS是一個偉大的工具,可是漸漸地顯示出該工具沒法處理在內部網絡中鏈接到計算機上的所有計算機的個數,或者在因特網上沒法顯示鏈接到當前計算機上的計算機的個數。ios

三、Samba特色及做用

特色:能夠實現跨平臺文件傳輸,並支持在線修改數據庫

做用:(a)分享檔案與打印機服務;vim

           (b)能夠提供用戶登入 SAMBA 主機時的身份認證windows

           (c)能夠進行 Windows 網絡上的主機名解析 (NetBIOS name)瀏覽器

 

四、samba的守護進程

smbd:提供對服務器中文件、打印資源的共享訪問,端口號爲 139 445緩存

nmbd:提供基於NetBIOS主機名稱的解析,端口號爲137 138安全

 

 

五、Samba的主要配置文件

(1)對應NetBOIS名與主機IP的文件,通常samba會自動搜索(只對本機生效)服務器

/etc/samba/lmhosts

 

(2)samba密碼保存文件,默認不存在:/etc/samba/smbpasswd

 

(3)用戶別名,用於適用不一樣操做系統中用戶名習慣。須要配置文件中「username map」選項支持:/etc/samba/smbusers

 

(4)Samba的服務腳本:/etc/init.d/smb

 

(5)Samba的主配置文件:  /etc/samba/smb.conf

 

(6)檢測配置文件是否正確:testparm

六、Samba配置文件詳解

(1)smb.conf文件的主配置內容詳解

[global]:全局設置

[homes]:用戶目錄共享設置

[printers]:打印機共享設置

[myshare]:自定義名稱的共享目錄設置

 

==================Global Settings ===================

[global]

 

config file = /usr/local/samba/lib/smb.conf.%m

說明:config file可讓你使用另外一個配置文件來覆蓋缺省的配置文件。

 

workgroup = WORKGROUP

說明:設定 Samba 所要加入的工做組或者域。

 

server string = Samba Version %v

說明:設定 Samba的註釋,能夠是任何字符串,也能夠不填。宏%v表示顯示Samba的版本號。

 

netbios name = smbserver

說明:設置Samba的NetBIOS名稱。若是不填,則默認會使用該服務器的DNS名稱的第一部分。netbios name和workgroup名字不要設置成同樣了。

 

interfaces = lo eth0 192.168.115.2/24 192.168.116.2/24

說明:設置Samba監聽哪些網卡,能夠寫網卡名,也能夠寫該網卡的IP地址。

 

hosts allow = 192.168.112.0,192.168.10.1

說明:表示容許鏈接到Samba的客戶端,多個參數以空格逗號隔開。能夠用一個IP表示,也能夠用一個網段表示。hosts deny 與hosts allow 恰好相反。

 

max connections = 0

說明:指定鏈接Samba的最大鏈接數目。若是超出鏈接數目,則新的鏈接請求將被拒絕。0表示不限制。

 

deadtime = 0

說明:設置斷掉一個沒有打開任何文件的鏈接的時間。單位是分鐘,0表明Samba不自動切斷任何鏈接。

 

time server = yes/no

說明:time server用來設置讓nmdb成爲windows客戶端的時間服務器。

 

log file = /var/log/samba/log.%m

說明:設置Samba日誌文件的存儲位置以及日誌文件名稱。在文件名後加個宏%m(主機名),表示對每臺訪問Samba的機器都單獨記錄一個日誌文件。

 

max log size = 50

說明:設置Samba 日誌文件的最大容量,單位爲kB,0表明不限制。

 

security = user

說明:設置用戶訪問Samba的驗證方式,一共有四種驗證方式。

1. share:用戶訪問Samba不須要提供用戶名和口令, 安全性能較低。

2. user:Samba共享目錄只能被受權的用戶訪問。

3. server:依靠其餘Windows NT/2000或Samba來驗證用戶的帳號和密碼,是一種代理驗證。此種安全模式下,系統管理員能夠把全部的Windows用戶和口令集中到一個NT系統上,使用Windows NT進行Samba認證, 遠程服務器能夠自動認證所有用戶和口令,若是認證失敗,Samba將使用用戶級安全模式做爲替代的方式。

4. domain:域安全級別,使用主域控制器(PDC)來完成認證。

 

passdb backend = tdbsam

說明:passdb backend就是用戶後臺的意思。目前有三種後臺:smbpasswd、tdbsam和ldapsam。sam應該是security account manager(安全帳戶管理)的簡寫。

1.smbpasswd:該方式是使用smb本身的工具smbpasswd來給系統用戶(真實

用戶或者虛擬用戶)設置一個Samba密碼,客戶端就用這個密碼來訪問Samba的資源。smbpasswd文件默認在/etc/samba目錄下,不過有時候要手工創建該文件。

2.tdbsam:該方式則是使用一個數據庫文件來創建用戶數據庫。數據庫文件叫passdb.tdb,默認在/etc/samba目錄下。passdb.tdb用戶數據庫可使用smbpasswd –a來創建Samba用戶,不過要創建的Samba用戶必須先是系統用戶。咱們也可使用pdbedit命令來創建Samba帳戶。pdbedit命令的參數不少,咱們列出幾個主要的。

pdbedit –a username:新建Samba帳戶。

pdbedit –x username:刪除Samba帳戶。

pdbedit –L:列出Samba用戶列表,讀取passdb.tdb數據庫文件。

pdbedit –Lv:列出Samba用戶列表的詳細信息。

pdbedit –c 「[D]」 –u username:暫停該Samba用戶的帳號。

pdbedit –c 「[]」 –u username:恢復該Samba用戶的帳號。

3.ldapsam:該方式則是基於LDAP的帳戶管理方式來驗證用戶。首先要創建LDAP服務,而後設置「passdb backend = ldapsam:ldap://LDAP Server」

 

encrypt passwords = yes/no

說明:是否將認證密碼加密。由於如今windows操做系統都是使用加密密碼,因此通常要開啓此項。不過配置文件默認已開啓。

 

smb passwd file = /etc/samba/smbpasswd

說明:用來定義samba用戶的密碼文件。smbpasswd文件若是沒有那就要手工新建。

 

username map = /etc/samba/smbusers

說明:用來定義用戶名映射,好比能夠將root換成administrator、admin等。不過要事先在smbusers文件中定義好。好比:root = administrator admin,這樣就能夠用administrator或admin這兩個用戶來代替root登錄Samba,更貼近windows用戶的習慣。

 

guest account = nobody

說明:用來設置guest用戶名。

 

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

說明:用來設置服務器和客戶端之間會話的Socket選項,能夠優化傳輸速度。

 

domain master = yes/no

說明:設置Samba服務器是否要成爲網域主瀏覽器,網域主瀏覽器能夠管理跨子網域的瀏覽服務。

 

local master = yes/no

說明:local master用來指定Samba是否試圖成爲本地網域主瀏覽器。若是設爲no,則永遠不會成爲本地網域主瀏覽器。可是即便設置爲yes,也不等於該Samba就能成爲主瀏覽器,還須要參加選舉。

 

preferred master = yes/no

說明:設置Samba一開機就強迫進行主瀏覽器選舉,能夠提升Samba成爲本地網域主瀏覽器的機會。若是該參數指定爲yes時,最好把domain master也指定爲yes。使用該參數時要注意:若是在本Samba所在的子網有其餘的機器(不管是windows NT仍是其餘Samba)也指定爲首要主瀏覽器時,那麼這些機器將會由於爭奪主瀏覽器而在網絡上大發廣播,影響網絡性能。

若是同一個區域內有多臺Samba,將上面三個參數設定在一臺便可。

 

os level = 200

說明:設置samba服務器的os level。該參數決定Samba是否有機會成爲本地網域的主瀏覽器。os level從0到255,winNT的os level是32,win95/98的os level是1。Windows 2000的os level是64。若是設置爲0,則意味着Samba將失去瀏覽選擇。若是想讓Samba成爲PDC,那麼將它的os level值設大些。

 

domain logons = yes/no

說明:設置Samba是否要作爲本地域控制器。主域控制器和備份域控制器都須要開啓此項。

 

logon . = %u.bat

說明:當使用者用windows客戶端登錄,那麼Samba將提供一個登錄檔。若是設置成%u.bat,那麼就要爲每一個用戶提供一個登錄檔。若是人比較多,那就比較麻煩。能夠設置成一個具體的文件名,好比start.bat,那麼用戶登錄後都會去執行start.bat,而不用爲每一個用戶設定一個登錄檔了。這個文件要放置在[netlogon]的path設置的目錄路徑下。

 

wins support = yes/no

說明:設置samba服務器是否提供wins服務。

 

wins server = wins服務器IP地址

說明:設置Samba是否使用別的wins服務器提供wins服務。

 

wins proxy = yes/no

說明:設置Samba是否開啓wins代理服務。

 

dns proxy = yes/no

說明:設置Samba是否開啓dns代理服務。

 

load printers = yes/no

說明:設置是否在啓動Samba時就共享打印機。

 

printcap name = cups

說明:設置共享打印機的配置文件。

 

printing = cups

說明:設置Samba共享打印機的類型。如今支持的打印系統有:bsd, sysv, plp, lprng, aix, hpux, qnx

 

共享參數:

================== Share Definitions ==================

[共享名]

 

comment = 任意字符串

說明:comment是對該共享的描述,能夠是任意字符串。

 

path = 共享目錄路徑

說明:path用來指定共享目錄的路徑。能夠用%u、%m這樣的宏來代替路徑裏的unix用戶和客戶機的Netbios名,用宏表示主要用於[homes]共享域。例如:若是咱們不打算用home段作爲客戶的共享,而是在/home/share/下爲每一個Linux用戶以他的用戶名建個目錄,做爲他的共享目錄,這樣path就能夠寫成:path = /home/share/%u; 。用戶在鏈接到這共享時具體的路徑會被他的用戶名代替,要注意這個用戶名路徑必定要存在,不然,客戶機在訪問時會找不到網絡路徑。一樣,若是咱們不是以用戶來劃分目錄,而是以客戶機來劃分目錄,爲網絡上每臺能夠訪問samba的機器都各自建個以它的netbios名的路徑,做爲不一樣機器的共享資源,就能夠這樣寫:path = /home/share/%m 。

 

browseable = yes/no

說明:browseable用來指定該共享是否能夠瀏覽。

 

writable = yes/no

說明:writable用來指定該共享路徑是否可寫。

 

available = yes/no

說明:available用來指定該共享資源是否可用。

 

admin users = 該共享的管理者

說明:admin users用來指定該共享的管理員(對該共享具備徹底控制權限)。在samba 3.0中,若是用戶驗證方式設置成「security=share」時,此項無效。

例如:admin users =bobyuan,jane(多個用戶中間用逗號隔開)。

 

valid users = 容許訪問該共享的用戶

說明:valid users用來指定容許訪問該共享資源的用戶。

例如:valid users = bobyuan,@bob,@tech(多個用戶或者組中間用逗號隔開,若是要加入一個組就用「@+組名」表示。)

 

invalid users = 禁止訪問該共享的用戶

說明:invalid users用來指定不容許訪問該共享資源的用戶。

例如:invalid users = root,@bob(多個用戶或者組中間用逗號隔開。)

 

write list = 容許寫入該共享的用戶

說明:write list用來指定能夠在該共享下寫入文件的用戶。

例如:write list = bobyuan,@bob

 

public = yes/no

說明:public用來指定該共享是否容許guest帳戶訪問。

 

guest ok = yes/no

說明:意義同「public」

 

(2)輔助配置內容

註釋行:以 # 號開頭的行

配置樣例行:以分號(;)開頭的行

結合grep命令能夠提取有效配置行

 grep -v "^#" smb.conf | grep -v "^;" | grep -v ^$

(3)常見全局配置項的含義

workgroup     所在工做組名稱

server string     服務器描述信息

security         安全級別,可用值以下:

share               不須要密碼能夠訪問

user                 使用系統用戶,samba密碼登錄

server            由其餘服務器提供認證

domain          由域控制器提供認證

 

log file         日誌文件位置,「%m」變量表示客戶機地址

max log size     日誌文件的最大容量,單位爲KB

passwd backend 設置共享帳戶文件的類型

(4)常見共享目錄配置項的含義

comment     對共享目錄的註釋、說明信息

path         共享目錄在服務器中對應的實際路徑

guest ok      是否容許全部人訪問,等效於「public」

read only      全部人只讀

writable      全部人可寫,與read only的做用相反

write list        擁有寫權限的用戶列表

browseable     目錄是否 瀏覽 可見

valid users       指定能夠訪問的用戶

create mask  上傳文件的默認權限

directory mask 目錄的默認權限

(5)常見的變量

%v     samba的版本號

%S  任意用戶能夠登錄

%m  client端的NetBIOS主機名

%L    服務器端的NetBIOS主機名

%u   當前登錄的用戶名

%g    當前登錄的用戶組名

 

七、使用Samba做爲企業共享服務器案例詳解

提示:本次Samba安裝及配置是在CentOS7.x系統上進行的。

 

某公司有銷售、客服、財務三個部門,每一個部門有一個領導,如今須要建立一個Samba服務器,每一個部門有一個單獨的文件共享目錄,裏面存放的是各部門的工做報表及共享文件,須要本部門全部人都有上傳、下載、建立、修改文件的權限,但刪除時,只能刪除本身建立的文件,各部門領導擁有本身部門共享目錄的全部權限。

平常工做中常常會遇到各部門須要交叉訪問文件,因此又建立了一個公司內部全部人都能查看和下載文件的共享目錄,該共享目錄中有三個文件夾,分別對應銷售、客服、財務三個部門,可是普通員工只有查看和下載的權限,只有各部門領導擁有本部門目錄的全部權限。總目錄全部者爲root

 

(1)安裝前的準備工做

a、關閉防火牆和SElinux

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

[root@localhost ~]# sed -i "7s/enforcing/disabled/" /etc/selinux/config

[root@localhost ~]# setenforce 0

 

b、配置好yum源,準備好客戶機

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 

c、建立好須要的用戶帳號和共享目錄

按照下表要求建立各部門須要的帳號和共享目錄

注意:這裏是模擬環境,實際環境不要使用這麼簡單的密碼

 

部門領導帳號

部門員工1

部門員工2

部門共享目錄

全體共享目錄

銷售部用戶

xiaoshou

xiaoshou1

xiaoshou2

/xiaoshou

本部門可訪問

/share/xiaoshou

全體可訪問

對應的密碼

123

123

123

客服部用戶

kefu

kefu1

kefu2

/kefu

本部門可訪問

/share/kefu

全體可訪問

對應的密碼

123

123

123

財務部用戶

caiwu

caiwu1

caiwu2

/caiwu

本部門可訪問

/share/caiwu

全體可訪問

對應的密碼

123

123

123

(1)建立銷售部須要的帳號

[root@localhost ~]# useradd xiaoshou

[root@localhost ~]# useradd xiaoshou1

[root@localhost ~]# useradd xiaoshou2

[root@localhost ~]# echo '123'|passwd --stdin xiaoshou

[root@localhost ~]# echo '123'|passwd --stdin xiaoshou1

[root@localhost ~]# echo '123'|passwd --stdin xiaoshou2

(2)建立客服部須要的帳號

[root@localhost ~]# useradd kefu

[root@localhost ~]# useradd kefu1

[root@localhost ~]# useradd kefu2

[root@localhost ~]# echo '123'|passwd --stdin kefu

[root@localhost ~]# echo '123'|passwd --stdin kefu1

[root@localhost ~]# echo '123'|passwd --stdin kefu2

(3)建立財務部須要的帳號

[root@localhost ~]# useradd caiwu

[root@localhost ~]# useradd caiwu1

[root@localhost ~]# useradd caiwu2

[root@localhost ~]# echo '123'|passwd --stdin caiwu

[root@localhost ~]# echo '123'|passwd --stdin caiwu1

[root@localhost ~]# echo '123'|passwd --stdin caiwu2

 

(4)建立相應的共享目錄

[root@localhost ~]# mkdir /xiaoshou

[root@localhost ~]# mkdir /kefu

[root@localhost ~]# mkdir /caiwu

[root@localhost ~]# mkdir /share

[root@localhost ~]# mkdir /share/xiaoshou

[root@localhost ~]# mkdir /share/kefu

[root@localhost ~]# mkdir /share/caiwu

(2)安裝並啓動Samba服務

[root@localhost ~]# yum -y install samba

[root@localhost ~]# systemctl start smb

[root@localhost ~]# netstat -antp|grep smb

tcp        0      0 0.0.0.0:139     0.0.0.0:*               LISTEN      2403/smbd          

tcp        0      0 0.0.0.0:445     0.0.0.0:*               LISTEN      2403/smbd          

tcp6       0      0 :::139          :::*                    LISTEN      2403/smbd          

tcp6       0      0 :::445          :::*                    LISTEN      2403/smbd   

 

(3)開放Samba權限,使用系統權限控制共享權限

系統權限對共享目錄生效,Samba服務器權限也會對共享目錄生效,在實際的工做中,可能共享目錄較多,每一個部門用戶多,會出現權限交叉。建議使用系統權限控制共享目錄權限,而不是使用samba權限。

a、修改Samba的主配置文件,配置共享的目錄。

[root@localhost ~]# cp -a /etc/samba/smb.conf /etc/samba/smb.conf.back

[root@localhost ~]# vim /etc/samba/smb.conf

[xiaoshou]

        path = /xiaoshou

        browseable = yes

        writable = yes

 

[kefu]

        path = /kefu

        browseable = yes

        writable = yes

 

[caiwu]

        path = /caiwu

        browseable = yes

        writable = yes

 

[share]

        path = /share

        browseable = yes

        writable = yes

b、設置全部共享目錄的系統權限

設置銷售部共享目錄/xiaoshou權限

[root@localhost ~]# gpasswd -M xiaoshou1,xiaoshou2 xiaoshou 把兩個銷售加入銷售領導的組

[root@localhost ~]# chown xiaoshou:xiaoshou /xiaoshou 

設置銷售部共享目錄的全部者和所屬組爲銷售領導

[root@localhost ~]# chmod 3770 /xiaoshou 

設置銷售部共享目錄的權限,用戶建立文件時默認的用戶組、粘着位和讀寫權限

 

設置客服部共享目錄/kefu權限

[root@localhost ~]# gpasswd -M kefu1,kefu2 kefu

[root@localhost ~]# chown kefu:kefu /kefu

[root@localhost ~]# chmod 3770 /kefu

 

設置財務部共享目錄/caiwu權限

[root@localhost ~]# gpasswd -M caiwu1,caiwu2 caiwu

[root@localhost ~]# chown caiwu:caiwu /caiwu

[root@localhost ~]# chmod 3770 /caiwu

 

設置全體共享目錄/share權限

[root@localhost ~]# chown xiaoshou /share/xiaoshou

[root@localhost ~]# chown kefu /share/kefu

[root@localhost ~]# chown caiwu /share/caiwu

[root@localhost ~]# chmod 755 /share/xiaoshou

[root@localhost ~]# chmod 755 /share/kefu

[root@localhost ~]# chmod 755 /share/caiwu

(4)重啓Samba服務並查看共享是否設置成功

[root@localhost ~]# systemctl restart smb

[root@localhost ~]# yum -y install samba-client   安裝Samba客戶端軟件

[root@localhost ~]# smbclient -L 192.168.115.120  查看共享是否設置成功

Enter SAMBA\root's password:

Anonymous login successful

OS=[Windows 6.1] Server=[Samba 4.6.2]

 

         Sharename       Type      Comment

         ---------       ----      -------

         print$          Disk      Printer Drivers

         xiaoshou        Disk     

         kefu            Disk      看到這裏就說明共享設置成功

         caiwu           Disk     

         share           Disk      

         IPC$            IPC       IPC Service (Samba 4.6.2)

Anonymous login successful

OS=[Windows 6.1] Server=[Samba 4.6.2]

 

         Server               Comment

         ---------            -------

 

         Workgroup            Master

         ---------            -------

(5)轉化系統用戶爲Samba用戶

[root@localhost ~]# smbpasswd -a xiaoshou

New SMB password:

Retype new SMB password:

Added user xiaoshou.

[root@localhost ~]# smbpasswd -a xiaoshou1

New SMB password:

Retype new SMB password:

Added user xiaoshou1.

[root@localhost ~]# smbpasswd -a xiaoshou2

New SMB password:

Retype new SMB password:

Added user xiaoshou2.

 

[root@localhost ~]# smbpasswd -a kefu

New SMB password:

Retype new SMB password:

Added user kefu.

[root@localhost ~]# smbpasswd -a kefu1

New SMB password:

Retype new SMB password:

Added user kefu1.

[root@localhost ~]# smbpasswd -a kefu2

New SMB password:

Retype new SMB password:

Added user kefu2.

 

[root@localhost ~]# smbpasswd -a caiwu

New SMB password:

Retype new SMB password:

Added user caiwu.

[root@localhost ~]# smbpasswd -a caiwu1

New SMB password:

Retype new SMB password:

Added user caiwu1.

[root@localhost ~]# smbpasswd -a caiwu2

New SMB password:

Retype new SMB password:

Added user caiwu2.

 

查看Samba用戶

[root@localhost ~]# pdbedit -L

xiaoshou:1000:

xiaoshou2:1002:

kefu1:1004:

xiaoshou1:1001:

kefu:1003:

kefu2:1005:

caiwu:1006:

caiwu1:1007:

caiwu2:1008:

(6)使用Samba用戶測試設置的權限是否符合要求

在Windows中打開一個文件夾,在地址欄中輸入 \\192.168.115.120回車,而後輸入Samba用戶名和密碼便可進行登入,以後能夠在各大共享目錄進行上傳文件、建立文件、刪除文件、修改文件內容、給文件更名等操做,驗證權限是否符合咱們設置的要求。(切換多個用戶進行驗證)

image.png

image.png

image.png

  在Windows中登錄Samba帳號之後,若是電腦沒有重啓過,會有緩存致使下次登錄Samba共享文件時自動以上次的用戶進入而不須要輸入密碼,這時咱們能夠在Windows中打開cmd輸入"net use * /del"回車進行清理Windows登陸Samba的緩存。

相關文章
相關標籤/搜索