Centos部署Samba企業文件共享服務

Centos部署Samba企業文件共享服務


聲明:本文參考了網上部分資料加作者實驗總結



目錄:

1、Samba服務概述:

1.1、Samba的原理

1.2、NETBIOS協議

2、Samba 應用環境

3、samba服務

3.1、samba的安裝包:

3.2、samba的進程文件:

3.3、samba的文件:

4、主要配置文件smb.conf

4.1、samba配置簡介

4.2、Global Settings

4.2.1)設置工作組或域名稱

4.2.2)服務器描述

4.2.3)設置samba服務器安全模式

4.3、Share Definitions共享服務的定義

4.3.1)設置共享名

4.3.2)共享資源描述

4.3.3)共享路徑

4.3.4)設置匿名訪問

4.3.5)設置訪問用戶

4.3.6)設置目錄只讀

4.3.7)設置目錄可寫

5、配置一個共享資源

6、samba的命令與客戶端訪問

6.1、testparm:測試有效的exports內的屬性

6.2、pdbedit:管理smb的用戶數據庫

6.3、smbpasswd:改變samba賬戶的密碼

6.4、smbclient:unix客戶端訪問工具

6.5、掛載訪問

7、samba搭建實例

7.1、smb服務端搭建

8、修改配置文件,實戰舉例

8.1、例1:匿名共享

8.2、例2:通過用戶名和密碼共享文件。把/sales 共享出去,只有知道用戶名和密碼的同事可以看這個共享

9、擴展參數

9.1、客戶端訪問控制

9.2、設置Samba 的權限,允許sales組可以寫

10、使用GUI工具SWAT管理samba



1、Samba服務概述:

samba是基於smb(Server Message Block)協議的一種實現方式。Samba 最先在Linux

和Windows 兩個平臺之間架起了一座橋樑,正是由於Samba 的出現,我們可以在Linux

系統和Windows 系統之間互相通信,比如拷貝文件、實現不同操作系統之間的資源共享等

等,我們可以將其架設成一個功能非常強大的文件服務器,也可以將其架設成打印服務器提

供本地和遠程聯機打印。

1.1、Samba的原理

wKiom1dqXsXAA6PXAACFTAELbS8017.png

1.SMB是基於NetBIOS的一個網絡文件共享協議,允許cilent從服務器端訪問文件資源。
2.NetBIOS協議是一個用來讓局域網內的主機互相連接的通訊協議,被廣泛用於windows平臺間的通信。
3.samba就是基於smb開發的,讓unix主機能夠通過mbr協議與windows平臺進行文件共享。

1.2、NETBIOS協議

NetBIOS是Network Basic Input/Output System的簡稱,網絡基本輸入/輸出系統協

議。協議,一般指用於局域網通信的一套API,是由IBM公司開發。主要作用:通過

NETBIOS協議獲得計算機名稱,然後把計算機名解析爲對應IP地址。

模式: C/S 模式


2、Samba 應用環境

文件和打印機共享:文件和打印機共享是Samba的主要功能,SMB進程實現資源共享,將文件和打印機發布到網絡之中,以供用戶可以訪問哈。 
身份驗證和權限設置:smbd服務支持user mode和domain mode等身份驗證和權限設置模式,通過加密方式可以保護共享的文件和打印機。 
名稱解析:Samba通過nmbd服務可以搭建NBNS(NetBIOS Name Service)服務器,提供名稱解析,將計算機的NetBIOS名解析爲IP地址。 
瀏覽服務:局域網中,Samba服務器可以成爲本地主瀏覽服務器(LMB),保存可用資源列表,當使用客戶端訪問Windows網上鄰居時,會提供瀏覽列表,顯示共享目錄、打印機等資源。


3、samba服務

3.1、samba的安裝包:

samba samba服務器端程序。
libsmbclient samba客戶端庫文件。
samba-client samba客戶端程序。
samba-common samba客戶端以及服務端都會用到的文件,如samba.conf等。
samba-winbind samba對於windows域的支持的服務端的庫。
samba-winbind-clients samba windwos域的客戶端。



3.2、samba的進程文件:

nmbd:負責管理工作組,NetBIOS名解析,並提供瀏覽服務顯示網絡上的共享資源列表。工作在UDP的137,138端口上。
smbd:其主要功能就是用來管理Samba服務器上的共享目錄、打印機等,主要是針對網絡上的共享資源進行管,工作在TCP的139或445端口上。


3.3、samba的文件:

/etc/samba/smb.conf samba的主要配置文件。
/etc/samba/smbusers 共享服務中,linux與windows的賬號的映射,格式爲linuxuser = windowsuser1,windowsuser2
/var/lib/samba/private/passdb.tdb / secrets.tdb samba用戶賬號密碼存放的數據
庫。

4、主要配置文件smb.conf

4.1、samba配置簡介

smb.conf文件的開頭部分爲samba配置簡介,告訴我們smb.conf文件的作用及相關信息。

smb.conf中以“#”開頭的爲註釋,爲用戶提供相關的配置解釋信息,方便用戶參考,不用修改它哈。

smb.conf中還有以“;”開頭滴,這些都是samba配置的格式範例,默認是不生效滴,可以通過去掉前面的“;”並加以修改來設置想使用的功能。

4.2、Global Settings

Global Settings設置爲全局變量區域。那什麼是全局變量哈?全局變量就是說我們只要在global時進行設置,那麼該設置項目就是針對所有共享資源生效滴。這與以後我們學習的很多服務器配置文件相似哈。

該部分以[global]開始:

smb.conf配置通用格式,對相應功能進行設置:字段=設定值 

下面我們說下[global]常用字段及設置方法:

[global]
[network]
workgroup = MYGROUP #工作組名稱,要與windows的工作組名稱一致。
server string = Samba Server Version %v #samba服務器描述
; netbios name = MYSERVER
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 #設置監聽
的網卡
; hosts allow = 127. 192.168.12. 192.168.13. #設置可以訪問的網段
[login]
log file = /var/log/samba/log.%m #日誌文件路徑。
max log size = 50 #一個日誌文件最大多少Kb進行輪替。
[獨立服務器設定  Standalone Server]
    security = user|share|domain  #安全認證方式   
                        share:#共享模式  
                        user:#使用samba服務器的密碼庫    
                        domain:#使用外部域服務器的密碼。        
    passdb backend = tdbsam     #密碼庫格式。

1)設置工作組或域名稱

工作組是網絡中地位平等的一組計算機,可以通過設置workgroup字段來對samba服務器所在工作組或域名進行設置。

我們設置samba服務器的工作組爲CentOS

2)服務器描述

服務器描述實際上類似於備註信息哈,在一個工作組中,可能存在多臺服務器,爲了方便用戶瀏覽,我們可以在server string配置相應描述信息,這樣用戶就可以通過描述信息知道自己要登錄哪臺服務器了啊~

我們設置samba描述信息爲“CentOS File Server”。

3)設置samba服務器安全模式

samba服務器有share、user、server、domain和ads 五種安全模式,用來適應不同的企業服務器需求。

(1)share安全級別模式
客戶端登錄samba服務器,不需要輸入用戶名和密碼就可以瀏覽samba服務器的資源,適用於公共的共享資源,安全性差,需要配合其他權限設置,保證samba服務器的安全性。
(2)user安全級別模式
客戶端登錄samba服務器,需要提交合法帳號和密碼,經過服務器驗證纔可以訪問共享資源,服務器默認爲此級別模式。
(3)server安全級別模式
客戶端需要將用戶名和密碼,提交到指定的一臺samba服務器上進行驗證,如果驗證出現錯誤,客戶端會用user級別訪問。
(4)domain安全級別模式
如果samba服務器加入windows域環境中,驗證工作服將由windows域控制器負責,domain級別的samba服務器只是成爲域的成員客戶端,並不具備服務器的特性,samba早期的版本就是使用此級別登錄windows域滴。
(5)ads安全級別模式
當samba服務器使用ads安全級別加入到windows域環境中,其就具備了domain安全級別模式中所有的功能並可以具備域控制器的功能。

4.3、Share Definitions共享服務的定義

Share Definitions設置對象爲共享目錄和打印機,如果我們想發佈共享資源,需要對Share Definitions部分進行配置。Share Definitions字段非常豐富,設置靈活。

我們先來講下幾個最常用的字段哈~

1)設置共享名

共享資源發佈後,必須爲每個共享目錄或打印機設置不同的共享名,給網絡用戶訪問時使用,並且共享名可以與原目錄名不同。

共享名設置非常簡單:[共享名]

我們來看個例子,Samba服務器中有個目錄爲/share,需要發佈該目錄成爲共享目錄,定義共享名爲public

2)共享資源描述

網絡中存在各種共享資源,爲了方便用戶識別,可以爲其添加備註信息,以方便用戶查看時知道共享資源的內容是什麼哈。

格式:comment = 備註信息

舉個例子哈,samba服務器上有個/sales目錄存放公司銷售部的數據,爲了對公司部門員工進行區分,可以添加備註信息。

3)共享路徑

共享資源的原始完整路徑,可以使用path字段進行發佈,務必正確指定。

格式:path =  絕對地址路徑

samba服務器上/share/tools目錄存放常用工具軟件,需要發佈該目錄爲共享,我們可以這樣做。

4)設置匿名訪問

共享資源如果對匿名訪問進行設置,可以更改public字段。

格式:

public = yes     #允許匿名訪問
public = no      #禁止匿名訪問

samba服務器/share共享目錄允許匿名用戶訪問,可以這樣設置。

5)設置訪問用戶

如果共享資源存在重要數據的話,需要對訪問用戶審覈,我們可以使用valid users字段進行設置哈~

格式:

valid users = 用戶名
valid users = @組名

我們來看下面一個例子哈,samba服務器/share/tech目錄存放了公司技術部數據,只允許技術部員工和經理訪問,技術部組爲tech,經理帳號爲gm

6)設置目錄只讀

共享目錄如果限制用戶的讀寫操作,我們可以通過readonly實現哈~

格式:

readonly = yes    #只讀
readonly = no     #讀寫

samba服務器公共目錄/public存放大量共享數據,爲保證目錄安全我們只允許讀取,禁止寫入哈~

7)設置目錄可寫

如果共享目錄允許用戶寫操作,可以使用writable或write list兩個字段進行設置哈~

writable格式:
writable = yes      #讀寫
writable = no       #只讀
write list格式:
write list = 用戶名
write list = @組名

注意:

[homes]爲特殊共享目錄,表示用戶主目錄。

[printers]表示共享打印機。


5、配置一個共享資源

[share] #設置共享名
comment = Home Directories #描述
browseable = yes #是否允許查看此共享內容 。如果是否,後期通過絕對路徑,可以查看到。
path = /share #共享路徑,寫絕對路徑
public = yes #允許匿名查看
readonly = yes

6、samba的命令與客戶端訪問

6.1、testparm:測試有效的exports內的屬性

6.2、pdbedit:管理smb的用戶數據庫。

pdbedit -L [-vm] 列出數據庫中的用戶等信息,-v詳細信息,-w使用smbpasswd格式。
pdbedit -a -u [user] 新增一個用戶,但必須存在實體用戶。
pdbedit -r -u [user] 修改一個用戶的信息,需搭配其他參數,可參考man文檔。
pdbedit -x -u [user] 刪除一個用戶。
pdbedit -a -m -u [machine account計算機賬號] 添加一個計算機賬號,域相關。


6.3、smbpasswd:改變samba賬戶的密碼。

smbpasswd -a [user] 新增用戶以及密碼。
smbpasswd -r [user] 修改用戶密碼。
smbpasswd -x [user] 刪除用戶。
smbpasswd -d [user] 禁止登陸。
smbpasswd -e [user] 啓用用戶。


6.4、smbclient:unix客戶端訪問工具。

smbclient -L //IPADDR [-U smbuser] 測試查看目標服務器所開放的共享文件夾
smbclient //IPADDR/dir -U smbuser 連接共享服務器文件夾。
[root@host2 ~]# smbclient //192.168.25.132/test -U zhanghe 命令行形式訪問。
Enter zhanghe's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]
smb: \\> help
? allinfo altname archive blo
cksize
cancel case_sensitive cd chmod chown....


6.5、掛載訪問。

mount -t cifs -o username=zhanghe,password=123456 -l //192.168.25.132/test /tmp



7、samba搭建實例


7.1、smb服務端搭建:

host1(192.168.1.1):
[root@host1 ~]# yum install samba
[root@host1 ~]# vim /etc/samba/smb.conf
[test]
comment = test on 192.168.25.132 server!
path = /tmp/samba
writable = yes
guest ok = yes
write list = zhanghe
[root@host1 ~]# testparm
[root@host1 ~]# useradd zhanghe
[root@host1 ~]# pdbedit -a -u zhanghe
[root@host1 ~]# pdbedit -L
[root@host1 ~]# mkdir -pv /tmp/samba
[root@host1 ~]# setfacl -m u:zhanghe:rwx /tmp/samba
[root@host1 ~]# service nmb start
[root@host1 ~]# service smb start

ps.配置iptables並設置selinux


8、修改配置文件,實戰舉例


8.1、例1:匿名共享:

公司現在用一個工作組Software, 需要添加samba 服務器作爲文件服務器,併發布共享目

錄/share,共享名爲public,這個共享目錄允許所有公司員工訪問。

[root@host1 ~]# mkdir /share
[root@host1 ~]# cp /etc/passwd !$ #複製一個測試文件cp /etc/passwd /share
[root@host1 ~]# vim /etc/samba/smb.conf
[global]
workgroup = Software #工作組
server string = Software Samba Server #samba服務器描述
security = share # 允許匿名訪問
============================ Share Definitions ====
[share] #設置共享名
comment = Home Directories #描述
path = /share #共享路徑,寫絕對路徑
public = yes #允許匿名查看

2)重新加載配置

[root@host1 ~]#


8.2、例2:通過用戶名和密碼共享文件。把/sales 共享出去,只有知道用戶名和密碼的同事可以看這個共享。

我們需要將全局配置中security 設置爲user 安全級別,然後在共享目錄設置權限

注意:一定要先指定存放密碼的文件位置:

2)修改samba 主配置文件smb.conf

改:

passdb backend = tdbsam
爲:
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd

wKiom1dqXuGAuk0FAAAUHcJVNsw584.png

1)添加銷售部用戶和組並添加相應samba 帳號

使用groupadd 命令添加sales 組,然後執行useradd 命令和passwd 命令添加銷售部員工的

帳號及密碼。

[root@host1 ~]# groupadd sales
[root@host1 ~]# useradd -g sales sale1
[root@host1 ~]# useradd -g sales sale2
[root@host1 ~]# id sale2
uid=502(sale2) gid=501(sales) groups=501(sales)

wKiom1dqXvDRpQOaAAA32fppNDM048.png

接下來爲銷售部成員添加相應samba 帳號

[root@host1 ~]# smbpasswd -a sale1

wKioL1dqXvzQcAhvAAAulgwGrS4014.png

[root@host1 ~]# ls /etc/samba/smbpasswd
/etc/samba/smbpasswd
[root@host1 ~]# cat !$

wKiom1dqXxbRcJo_AAAi0ebTxAs240.png

[root@host1 ~]# smbpasswd -a sale2
New SMB password:
Retype new SMB password:
Added user sale2.

2)修改samba 主配置文件smb.conf

(1).設置user 安全級別模式

security = user

設置目錄:

[root@host1 ~]# vim smb.conf

wKioL1dqXyOjTkxgAAAVZmSH78I507.png


創建共享目錄:

創建共享目錄:

[root@host1 ~]# mkdir /sales
[root@host1 ~]# cp /etc/passwd !$
cp /etc/passwd /sales

3)重新加載配置

[root@host1 ~]# service smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
測試:
輸入:
用戶 :sale2 密碼:123456

輸入銷售部的帳號及密碼進行登錄

這樣銷售部成員就可以進行訪問sales 共享目錄下的數據了


9、擴展參數

9.1、客戶端訪問控制

hosts allow 和 hosts deny 的使用方法

1)hosts allow 和 hosts deny 字段的使用

hosts allow 字段定義允許訪問的客戶端
hosts deny 字段定義禁止訪問的客戶端


這裏我們添加hosts deny 和hosts allow 字段

hosts deny = 192.168.0. 表示禁止所有來自192.168.0.0/24 網段的IP 地址訪問
hosts allow = 192.168.0.24 表示允許192.168.0.24 這個IP 地址訪問

當host deny 和hosts allow 字段同時出現並定義滴內容相互衝突時,hosts allow優先。


9.2、設置Samba 的權限,允許sales組可以寫

設置系統權限

[root@host1 ~]# chmod 777 /sales
[root@host1 ~]# ll -d !$
ll -d /sales
drwxrwxrwx 2 root root 4096 Mar 7 21:50 /sales

設置服務器權限:

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

boss用戶和sale組都可以讀寫

write list = boss,@sales 就表示只有boss 帳號和sales組,可以對/sales 有寫入權限



10、使用GUI工具SWAT管理samba

swat是samba的圖形化管理工具,我們可以在配置後通過http來通過網頁配置,並且內嵌

幫助文檔,能夠非常直觀的配置samba服務,swat是基於xinetd超級守護進程。

[root@host1 tmp]# yum install xinetd -y 安裝xinetd超級守護進程
[root@host1 tmp]# yum install samba-swat -y 安裝swat程序,主機安裝包名爲samba-swat,如果直接輸入swat是找不到包的!!
[root@host1 tmp]#vim /etc/xinetd.d/swat 編輯swat的配置文件。
# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \\
# to configure your Samba server. To use SWAT, \\
# connect to port 901 with your favorite web brows
er.
service swat
{
port = 901 <--- 監聽的端口默認爲901。
socket_type = stream <--- socket類型爲stream,面向連接的穩定數據傳輸,即爲TCP協議。
wait = no
only_from = 192.168.25.0 <---只監聽指定範圍內的主機,即限制登陸主機,設置爲0.0.0.0 則默認爲監聽所有主機。
user = root <---只允許使用指定用戶登錄。
server = /usr/sbin/swat <---指定主程序路徑。
log_on_failure += USERID
disable = no <---開啓swat工具,yes爲關閉。
}
[root@host1 tmp]# service xinetd start 開啓xinetd服務即可,因爲swat是由xinetd來管理的。
[root@host1 tmp]# ss -tunl | grep 901 查看901端口號,的確爲設置的tcp的901

wKiom1dqXzCjgemwAAAfCzRVCAY635.png

訪問服務器的901端口:

wKiom1dqXzvRVBjOAABe0YK2gpY781.png

wKioL1dqX0qx4DdYAAFYBQA6W40186.png


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