samba文件共享服務詳解

內容:php

一、samba的做用以及由來linux

二、samba的特性git

三、samba的工做過程數據庫

四、samba的安裝以及配置windows

五、samba的搭建測試centos


1、samba的做用以及由來瀏覽器

        SAMBA歷史溯源(摘自百度百科):安全

在早期網絡世界當中,檔案數據在不一樣主機之間的傳輸大可能是使用 FTP 這個好用的服務器軟件來進行傳送。不過,使用FTP 傳輸檔案卻有個小小的問題,那就您沒法直接修改主機上面的檔案數據!也就是說您想要更改Linux 主機上的某個檔案時,必須要由 Server 端將該檔案下載到 Client端後才能修改,也所以該檔案在 Server 與 Client 端都會存在。這個時候,萬一若是有一天您修改了某個檔案,卻忘記將數據上傳回主機,那麼等過了一陣子以後,如何知道那個檔案纔是最新的?!bash

        既然有這樣的問題,可不能夠在 Client 端的機器上面直接取用Server 上面的檔案,若是能夠在 Client 端直接進行 Server 端檔案的存取,那麼在Client 端就不須要存在該檔案數據,也就是說,只要有 Server 上面的檔案資料存在就能夠!有沒有這樣的檔案系統( File System )?很高興的是, NetworkFile System, NFS 就是這樣的檔案系統之一!我只要在 Client 端將 Server所提供分享的目錄掛載進來,那麼在 Client 的機器上面就能夠直接取用 Server上的檔案數據,並且,該數據就像 Client 端上面的partition 通常!而除了可讓 Unix Like 的機器互相分享檔案的NFS 服務器以外,在微軟 ( Microsoft ) 上面也有相似的檔案系統,那就是 CommonInternet File System, CIFS 這個咚咚啦!CIFS 最簡單的想法就是目前常見的『網上鄰居』。Windows 系統的計算機能夠透過桌面上『網上鄰居』來分享別人所提供的檔案數據。不過,NFS僅能讓 Unix 機器溝通, CIFS 只能讓 Windows 機器溝通。傷腦筋,那麼有沒有讓Windows 與 Unix-Like 這兩個不一樣的平臺相互分享檔案數據的檔案系統?服務器

        1991 年一個名叫Andrew Tridgwell 的大學生就有這樣的困擾,他手上有三部機器,分別是跑DOS 的我的計算機、DEC公司的 Digital Unix 系統以及 Sun 的 Unix 系統。在當時,DEC 公司有發展出一套稱爲 PATHWORKS 的軟件,這套軟件能夠用來分享 DEC 的Unix 與我的計算機的 DOS 這兩個操做系統的檔案數據,惋惜讓 Tridgwell 以爲較困擾的是,Sun的 Unix 沒法藉由這個軟件來達到數據分享的目的。這個時候 Tridgwell 就想說:『咦!既然這兩部系統能夠相互溝通,沒道理Sun 就必需這麼苦命吧?可不能夠將這兩部系統的運做原理找出來,而後讓 Sun這部機器也可以分享檔案數據呢?』,爲了解決這樣的的問題,這老兄就自行寫了個program 去偵測當 DOS 與 DEC 的 Unix 系統在進行數據分享傳送時所使用到的通信協議信息,而後將這些重要的信息擷取下來,而且基於上述所找到的通信協議而開發出ServerMessage Block (SMB) 這個檔案系統,而就是這套 SMB軟件可以讓 Unix 與 DOS 互相的分享數據!( 注:再次的給他強調一次,在Unix Like 上面能夠分享檔案數據的 file system 是 NFS,那麼在 Windows 上面使用的『網絡鄰居』所使用的檔案系統則稱爲Common Internet File System, CIFS )

        所以 Tridgwell就去申請了 SMBServer ( Server Message Block 的簡寫 ) 這個名字來作爲他撰寫的這個軟件的商標,惋惜的是,由於SMB 是沒有意義的文字,所以沒有辦法達成註冊。既然如此的話,那麼能不能在字典裏面找到相關的字詞能夠作爲商標來註冊呢?翻了老半天,呵呵!這個SAMBA恰好含有 SMB ,又是熱情有勁的拉丁舞蹈的名稱,不如就用這個名字來作爲商標好了。如此,這成爲咱們今天所使用的SAMBA 的名稱由來。


2、samba的特性

        Samba是在linux機unix上實現SMB協議的一個免費軟件,有服務器及客戶端程序構成,SMB協議是創建在NetBIOS 協議之上的應用協議,是基於TCP138/139兩個端口的服務。被用於Lan Manager和Windows服務器系統中,實現不一樣的計算機直接共享打印機和文件等。

Samba的服務器程序能夠實現如下主要功能:

一、文件及打印共享;

二、計算機名與IP的解析;

三、windows服務的支持;

四、用戶權限的設置


    samba能夠實現linux間和linux與windows間的文件共享


3、samba的工做過程

    Samba工做流程: 

wKioL1gEzTLhICL4AAHaguyguVI926.png

        對於Samba服務器來講,其主配置文件smb.conf記錄了共享的目錄列表。好比share目錄,temp目錄等。對於每一個共享目錄,須要配置相應權限,服務器會根據smb.conf文件中的設置,判斷客戶端是否有權限訪問,只有擁有權限才能夠訪問服務器的資源。Samba服務器一樣會對用戶的行爲進行記錄,每一次訪問的信息都會記錄在日誌文件中,以便查詢哪些客戶端訪問過Samba服務器。



4、samba的安裝以及配置

    一、samba是C/S架構,因此分爲客戶端和服務端軟件:

        samba-*.rpm:該包爲Samba服務的主程序包。服務器必須安裝該軟件包,後面的數字爲版本號 

        samba-client-*.rpm:該包爲Samba的客戶端工具,是鏈接服務器和鏈接網上鄰居的客戶端工具幷包含其測試工具 

        samba-common-*.rpm:該包存放的是通用的工具和庫文件,不管是服務器仍是客戶端都須要安裝該軟件包 

        samba-swat-*.rpm:當安裝了這個包之後,就能夠經過瀏覽器(好比IE等哈)來對Samba服務器進行圖形化管理


    程序環境:

    配置文件:

        /etc/samba/smb.conf

    主程序:

        nmbd:Network Naming Service, NetBIOS 

        smbd:SMB/CIFS Service;

    監聽的端口:

        137/udp, 138/udp

        139/tcp, 445/tcp 

    客戶端程序:

        mount -t cifs = mount.cifs

        smbclient:交互式命令行客戶端工具;

    二、samba的配置

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

        smb.conf中以「#」開頭的爲註釋,爲用戶提供相關的配置解釋信息,方便用戶參考。 

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

注意:samba的用戶是當前的系統用戶,可是處於安全機制,密碼卻不是當前的系統登陸密碼,而是另外設置的密碼。


        smb.conf的配置文件能夠分紅兩部分:Global Settings全局的環境配置和Share Definitions共享的定義設置,其中Global Settings又有幾個分類,咱們能夠對sam.conf進行信息處理查看

[22:19 root@centos6.8~]# grep -E "^#[[:space:]]?-----|=====" /etc/samba/smb.conf
#---------------
#--------------
#======================= Global Settings =====================================
# ----------------------- Network Related Options -------------------------
# --------------------------- Logging Options -----------------------------
# ----------------------- Standalone Server Options ------------------------
# ----------------------- Domain Members Options ------------------------
# ----------------------- Domain Controller Options ------------------------
# ----------------------- Browser Control Options ----------------------------
#----------------------------- Name Resolution -------------------------------
# --------------------------- Printing Options -----------------------------
# --------------------------- Filesystem Options ---------------------------
#============================ Share Definitions ==============================

        全局配置Global Settings:

[global]
workgroup = MYGROUP #指定工做組
server string = Samba Server Version %v #服務器名說明
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24  指明要監聽的地址或網絡接口;、
hosts allow = 127. 192.168.12. 192.168.13.  #白名單
log file = /var/log/samba/log.%m #日誌的記錄位置
max log size = 50 #日誌的大小,單位爲K
security = user #基於用戶安全認證
share (depricated) #廢棄
server (depricated) #廢棄
domain #域名
passdb backend = tdbsam #生成的賬號密碼存在的數據庫
load printers = yes
cups options = raw

        共享文件系統Share Definitions:

        [shared_ID]

        有三類:

        [homes]:每一個samba用戶是否可以經過samba服務訪問其家目錄;

        [printers]:打印服務;

        [shared_FS]:用戶自定義的共享目錄;

經常使用指令:

    comment:註釋信息;

    path:本地文件系統路徑;

    browseable:是否可瀏覽,是否爲用戶可見;

    guest ok:是否容許來賓帳號訪問;

    public:是否公開給全部來賓;

    writable:是否可寫;

    read only = no

    write list:擁有寫權限的用戶或組列表;

用戶名 

    @組名, +組名 

自定義共享的方式:

        [shared_ID]

        comment =  #添加註釋內容

        path =  #添加要共享的文件路徑

        guest ok =  #是否容許來賓帳號訪問;

        read only =  #只讀也能夠

        public =  #

        browseable =  #是否能夠瀏覽

        write list =  #有寫權限的列表

    注意:定義所用戶在服務級的寫權限write = yes (read only = no)不建議與write list同時使用;

    三、samba用戶管理:

    smbpasswd, pdbedit

    smbpasswd [OPTIONS] USERNAME

        -a:添加

        -x:刪除

        -d:禁用

        -e:啓用

    pdbedit:

        -L:列出samba服務中的全部用戶;

        -a:添加用戶爲samba用戶;

        -u USERNAME:

        -x:刪除

        -t:從標準輸出接收密碼;

訪問服務:

    (1) smbclient交互式客戶端程序:

        (1) 查看目標服務上的共享

        smbclient -L SMB_SERVER [-U USERNAME]

        (2) 訪問共享服務

        smbclient //SMB_SERVER[/SHARE_NAME] [-U USERNAME]

    (2)mount.cifs 

        mount -t cifs //SMB_SERVER/SHARED_ID  /MOUNT_POINT  -o username=USER,password=PASS

        注意:掛載操做中的用戶,與-o選項中指定的用戶直接產生映射關係;訪問掛載,是以-o選項指定的用戶身份運行,與本地用戶以ID產生映射;


    四、smbstatus命令:

        顯示samba服務的相關共享的訪問狀態信息;

            -b:顯示簡要格式信息;

        -v:顯示詳細格式信息;

5、samba的搭建測試


    一、一臺linux主機安裝samba做爲服務端,客戶端程序通常默認已經安裝,主要安裝服務程序便可

#yum install -y samba

    二、配置smb.cof,在Share Definitions段下添加配置和須要共享的目錄:

[windows]
    comment = windows
    path = /etc
    browseable = yes
    guest ok = yes
    writable = yes

    使用testparm命令能夠檢查語法是否錯誤

[23:02 root@centos6.8~]# testparm 
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[windows]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
client signing = required
idmap config * : backend = tdb
cups options = raw
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
print ok = Yes
browseable = No
[windows]
comment = windows
path = /etc
read only = No
guest ok = Yes

    啓動samba服務

[23:10 root@centos6.8~]# service nmb start
Starting NMB services:                                     [  OK  ]
[23:10 root@centos6.8~]# service smb start
Starting SMB services:                                     [  OK  ]


    添加一個samba賬號,並設置密碼:

[23:16 root@centos6.8~]# useradd samba
[23:16 root@centos6.8~]# id samba
uid=505(samba) gid=505(samba) groups=505(samba)
[23:17 root@centos6.8~]# smbpasswd -a samba
New SMB password:
Retype new SMB password:
Added user samba.


        三、在linux的客戶機掛載測試:

[root@localhost ~]# yum install -y samba-client
[root@localhost ~]# mount.cifs //10.1.252.109/windows /mydata/samba/ -o username=samba,password=nihao
[root@localhost ~]# ls /mydata/samba/
abrt                     ethers            latrace.d         passwd-                       sasl2
acpi                     exports           ld.so.cache       pbm2ppa.conf                  scl
alsa                     favicon.png       ld.so.conf        pcmcia                        securetty
alternatives             fcoe              ld.so.conf.d      php.d                         security
anacrontab               festival          lftp.conf         php.ini                       services
anthy-conf               filesystems       libaudit.conf     pinforc                       sestatus.conf


        四、在windows的客戶機掛載測試:

wKiom1gEzJOBgYtsAABrOHsFMkM715.png

wKioL1gEzJSS5vtDAABwO_ziqy4511.png

wKiom1gEzJXTbiTVAAB2oRW0ccE117.png


            這裏須要注意權限的問題,默認的安全法則是把本機的root(linux系統)映射爲nobody帳戶,同時要對文件有相關的權限,除了在配置文件中設置,也要知足samba服務端的本地文件系統的權限,另外samba是根據UID來進行權限確認,即客戶端和服務端的samba賬號只要UID是相同的其權限也是相同的。


    

    OK,更多文章請關注 個人博客
相關文章
相關標籤/搜索