1. 程式人生 > >實戰Samba伺服器搭建與進階完整版

實戰Samba伺服器搭建與進階完整版

實戰Samba伺服器搭建與進階完整版

基礎介紹

smb協議簡介

SMB(server message block,服務資訊塊)是在區域網上共享檔案和印表機的協議。

samba軟體包及核心程序

Samba包含一組軟體包,它能夠讓linux支援smb協議。它主要負責處理和使用遠端檔案和資源。Samba的核心是兩個守護程序smbd(監聽139tcp埠並處理到來的smb資料包)和nmbd(監聽137和138udp埠,並使其他主機資源能夠瀏覽linux伺服器)。

samba服務

Samba服務有兩個:SMB和NMB。MB是Samba 的核心啟動服務,主要負責建立 Linux Samba伺服器與Samba客戶機之間的對話, 驗證使用者身份並提供對檔案和列印系統的訪問,只有SMB服務啟動,才能實現檔案的共享,監聽139 TCP埠;而NMB服務是負責解析用的,類似與DNS實現的功能,NMB可以把Linux系統共享的工作組名稱與其IP對應起來,如果NMB服務沒有啟動,就只能通過IP來訪問共享檔案,監聽137和138 UDP埠。

應用場景

檔案共享:本次主要是實現linux和windows之間的共享。插一句,samba也可以實現linux和linux之間共享,不過由於NFS(網路檔案系統)可以很好的完成Linux與Linux之間的資料共享,所以。。。。

**許可權控制:**可以提供使用者登入Samba主機時的身份認證,以提供不同身份者的個別資料。

**名稱解析:**可以進行windows網路上的主機名解析

實戰samba伺服器搭建

主機名稱 IP地址 功能 備註
xiehui 192.168.0.23 samba伺服器 linux
jajx-zappa 192.168.0.201 測試訪問 windows

檢查軟體

[[email protected]DEVDB ~]# rpm -qa|grep samba
samba-common-3.0.33-3.28.el5
samba-client-3.0.33-3.28.el5
samba-3.0.33-3.28.el5

配置檔案

workgroup = MYGROUP 定義samba伺服器所在的工作組
server string = Samba Server Version %v smb服務的描述
log file = /var/log/samba/log.%m 日誌檔案
max log size = 50 日誌的最大大小KB ==
security = user == 認證模式:share匿名|user使用者密碼|server外部伺服器使用者密碼

passdb backend = tdbsam 密碼格式
load printers = yes 載入印表機
cups options = raw 印表機選項
[homes] 區域性選項(共享名稱)
comment = Home Directories 描述
browseable = no 隱藏共享名稱
writable = yes 可讀可寫
[printers] 共享名稱
comment = All Printers 描述
path = /var/spool/samba 本地的共享目錄
browseable = no 隱藏
guest ok = no == ——> public = no 需要帳號和密碼訪問==
writable = no ==read only =yes 不可寫 ===
printable = yes 列印選項

企業需求

公司:wdgs,有三個部門cw,rs,sc和一個公共區pub,每個部門的資料根據如下需求進行共享:

1、財務部門 /samba/wdgs_cw ,cw01財務總監有可讀可寫許可權,財務部門員工可讀,boss01對其有管理許可權。

2、市場部門 /samba/wdgs_sc,市場部門員工可讀可寫,公司員工可以查詢資料,boss02對其有管理許可權。

3、HR部門 /samba/wdgs_rs ,rs01HR總監可讀寫,HR部門員工可以對財務部查詢,vip使用者可以查詢

4、休息區 /samba/wdgs_pub 自己管理自己的檔案

實現步驟

1 建立使用者組

[[email protected] ~]# groupadd wdgs
[[email protected] ~]# groupadd cw
[[email protected] ~]# groupadd rs
[[email protected] ~]# groupadd sc
[[email protected] ~]# 

2 建立使用者

[[email protected] ~]# groupadd wdgs
[[email protected] ~]# groupadd cw
[[email protected] ~]# groupadd rs
[[email protected] ~]# groupadd sc
[[email protected] ~]# useradd cw01 -g cw -G wdgs
[[email protected] ~]# useradd cw02 -g cw -G wdgs
[[email protected] ~]# useradd rs01 -g rs -G wdgs
[[email protected] ~]# useradd rs02 -g rs -G wdgs
[[email protected] ~]# useradd sc01 -g sc -G wdgs
[[email protected] ~]# useradd sc02 -g sc -G wdgs
[[email protected] ~]# useradd boss01 -g wdgs -G cw
[[email protected] ~]# useradd boss02 -g wdgs -G sc
[[email protected] ~]# useradd vip
[[email protected] ~]# 

3 建立目錄及賦予許可權

[[email protected] ~]# mkdir /samba/{rs,sc,cw,pub} -p
[[email protected] samba]# chmod 770 /samba -R
[[email protected] samba]# chown root.wdgs /samba
[[email protected] samba]# chown root.cw cw
[[email protected] samba]# chown root.sc sc
[[email protected] samba]# chown root.rs rs
[[email protected] samba]# chmod 1777 pub

4 修改配置檔案

[[email protected] samba]# vim /etc/samba/smb.conf 
[global]  ##這部分是修改的,其它部分是新增的
        workgroup = WDGS
        server string = SHD20181219
        passdb backend = tdbsam
        cups options = raw

[cw]
        comment = cw01 rw  cw02 r boss01 rwx  rs01rs02 r
        path = /samba/cw
        valid users = @cw, boss01, @rs
        read list = @cw, boss01, @rs
        write list = cw01, boss01

[rs]
        comment = rs01 rw  vip r
        path = /samba/rs
        valid users = @rs, vip
        read list = @rs, vip
        write list = rs01

[sc]
        comment = sc01sc02 rw boss02 rwx  others r
        path = /samba/sc
        valid users = @wdgs
        read list = @wdgs
        write list = @sc, boss02

[pub]
        comment = zjgzj
        path = /samba/pub
        valid users = @wdgs
        read list = @wdgs
        write list = @wdgs
        guest ok = Yes
        hosts allow = 192.168.0.

5 檢測語法

[[email protected] samba]# testparm

6 建立smb使用者密碼

[[email protected] samba]# smbpasswd -a cw01
[[email protected] samba]# smbpasswd -a cw02
[[email protected] samba]# smbpasswd -a rs01
[[email protected] samba]# smbpasswd -a rs02
[[email protected] samba]# smbpasswd -a sc01
[[email protected] samba]# smbpasswd -a sc02
[[email protected] samba]# smbpasswd -a boss01
[[email protected] samba]# smbpasswd -a boss02
[[email protected] samba]# smbpasswd -a vip

7 啟動服務,設定自啟動

啟動服務
[[email protected] samba]# /etc/init.d/smb start
Starting SMB services: [  OK  ]
Starting NMB services: [  OK  ]

設定smb服務開機自啟動
[[email protected] samba]# chkconfig --level 35 smb on

8 建立smb使用者密碼

[[email protected] samba]# smbpasswd -a cw01
[[email protected] samba]# smbpasswd -a cw02
[[email protected] samba]# smbpasswd -a rs01
[[email protected] samba]# smbpasswd -a rs02
[[email protected] samba]# smbpasswd -a sc01
[[email protected] samba]# smbpasswd -a sc02
[[email protected] samba]# smbpasswd -a boss01
[[email protected] samba]# smbpasswd -a boss02
[[email protected] samba]# smbpasswd -a vip
檢視使用者
[[email protected] samba]# pdbedit -L

9 測試,ACL控制策略

測試後
發現問題:boss01無法管理cw,hr部門不能訪問cw,
[[email protected] samba]# setfacl -m u:boss01:rwx cw
[[email protected] samba]# setfacl -m u:rs01:rx cw
[[email protected] samba]# setfacl -m u:rs02:rx cw
其他控制策略請自測

10 訪問控制

host deny = 192.168.0. 拒絕某個網段

host allow = 192.168.5.1 允許某個IP

host deny = all 拒絕所有

host allow = all EXCEPT 192.168.5.254 允許所有,拒絕某個IP