Samba服務簡介和實際應用配置

Samba服務簡介和實際應用配置

提示:搭建服務器之前爲了不必要的麻煩建議先關閉selinux和防火牆

1Samba簡介

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

 

2SMB協議

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

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

3Samba特點及作用

特點:可以實現跨平臺文件傳輸,並支持在線修改

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

           (b)可以提供用戶登入 SAMBA 主機時的身份認證

           (c)可以進行 Windows 網絡上的主機名解析 (NetBIOS name)

 

4samba的守護進程

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

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

 

 

5Samba的主要配置文件

1)對應NetBOIS名與主機IP的文件,一般samba會自動搜索(只對本機生效)

/etc/samba/lmhosts

 

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

 

3)用戶別名,用於適用不同操作系統中用戶名習慣。需要配置文件中“username map”選項支持:/etc/samba/smbusers

 

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

 

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

 

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

6Samba配置文件詳解

(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

說明:設置SambaNetBIOS名稱。如果不填,則默認會使用該服務器的DNS名稱的第一部分。netbios nameworkgroup名字不要設置成一樣了。

 

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 日誌文件的最大容量,單位爲kB0代表不限制。

 

security = user

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

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

2. userSamba共享目錄只能被授權的用戶訪問。

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

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

 

passdb backend = tdbsam

說明:passdb backend就是用戶後臺的意思。目前有三種後臺:smbpasswdtdbsamldapsamsam應該是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換成administratoradmin等。不過要事先在smbusers文件中定義好。比如:root = administrator admin,這樣就可以用administratoradmin這兩個用戶來代替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 level0255winNTos level32win95/98os level1Windows 2000os level64。如果設置爲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 =bobyuanjane(多個用戶中間用逗號隔開)。

 

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    當前登陸的用戶組名

 

7、使用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的緩存。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章