samba

FTP,SAMBA,NFS之間的區別

FTP        Windows/linux/unix/macOS等        發布網站,文件共享              Tcp/21

Samba      Windows/linux                     文件共享(網上鄰居)            Tcp/445,tcp/139

NFS        Linux/unix                        網站發布,文件共享(mount)     Tcp/2049

samba

能夠將本地共享的目錄通過文件系統接口方式輸出給客戶端,客戶端可以使用mount命令掛載??蛻舳丝梢允褂冕槍Ρ镜匚募到y命令操作該目錄,比如ls… samba是smb協議的實現。更為通用的叫法是cifs協議的實現。 可以實現windows和Linux之間文件共享和打印服務共享。

smb:Service Message Block;服務信息塊 cifs:Common Internet File System 通用互聯網文件系統

samba:作者-Andrew Tridgell;

功能:

文件系統共享;

NetBIOS協議;
    windows主機在網上鄰居中可以搜索到網絡中主機的主機名;workgroup
    使用的就是廣播方式的netbios協議。
    要使windows主機能夠找到啟用samba的Linux主機,Linux主機也需要支持NetBIOS協議。
    NetBIOS要求主機名不能超過15個字符。
    NetBIOS僅是本地網絡使用的網絡協議。

打印服務;基于samba能夠實現打印機共享給基于smb或cifs的所有的客戶端。

samba通信模型:兩種

peer to peer(Work Group模型)

    主機對主機

domain devel 域模型

    LDAP:Lightweight Directory Access Protocol 輕量級訪問協議
    寫入性能不是很好,但是查詢性能非常好
    windows將LDAP協議以域的方式實現。
    DEC域控制器

samba運行原理

samba可以使用匿名賬號登錄文件系統 samba認證是使用系統用戶的用戶名,不是系統用戶登錄系統的賬號和密碼。 windows上配置文件共享,開啟認證功能,一般是使用主機上用戶名和密碼。

安裝samba:

程序環境: samba集成在centos中默認。分為三類程序

samba.x8664        ##服務端程序 samba-client.x8664 ##客戶端程序    
samba-common.x86_64 ##公共組件,客戶端和服務端都依賴此包 samba4-libs.x8664  ##服務端和客戶端都會用到庫文件 samba-common-tools.x8664  ##samba服務端和客戶端工具 需要內核支持SMB/CIFS協議默認一般都是支持的。

samba程序文件介紹

配置文件:
    /etc/samba/smb.conf

主程序:有兩個
實現samba協議和NetBIOS協議
    nmbd:Network Naming Service, NetBIOS 
        如果僅是在類Unix主機之上實現文件共享,不需要此服務
        windows共享需要名稱解析,如果有windows主機使用該服務需要此服務。
    smbd:SMB/CIFS Service;

Unit File:
    /usr/lib/systemd/system/nmb.service
    /usr/lib/systemd/system/smb.service

監聽的端口:
    137/udp, 138/udp
    139/tcp, 445/tcp 

客戶端程序:
    mount -t cifs = mount.cifs
    smbclient:交互式命令行客戶端工具;命令行的訪問工具

samba的配置:

主配置文件 由samba-common包提供

/etc/samba/smb.conf
[root@centos7 ~]# grep -i -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 -----------------------------    ### 打印相關選項
    # --------------------------- File System Options ---------------------------   ### 文件系統相關
    #============================ Share Definitions ==============================  ### 共享定義配置段

兩類配置段:

全局配置段

    網絡相關配置選項        
        workgroup = MYGROUP 工作組模型中的工作組名稱。windows一般用的是workgroup
        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. 運行訪問的主機網段
            127網段192.168.12網段可以訪問
        netbios name = MYSERVER 當前主機被網絡其他電腦使用netbios解析到主機名
    注意:samba一般是內部服務用所以interface一般只是監聽在本地某個接口或地址上,一般不指定某個網段,很少進行夸網段共享。

    日志相關選項          
        log file = /var/log/samba/log.%m 日志文件路徑%m代表一個客戶端的ip地址
        max log size = 50 日志大小

    獨立服務選項
        security = user  ###定義全級別
            share (depricated)廢棄選項
            server (depricated)廢棄選項
            user 用戶登錄必須使用賬號和密碼登錄

        passdb backend = tdbsam  ###定義密碼到一個tdb方式編碼的庫。

    打印選項
        load printers = yes  ###開啟打印服務
        cups options = raw

共享文件系統配置段

    每一個共享都要使用一個獨立的配置段

    [shared_ID]:定義共享名稱,在網絡上鄰居中顯示的資源名稱。

        配置段選項有三類:
            [homes]:每個samba用戶是否能夠通過samba服務訪問自己的家目錄;
                不是所有系統用戶都是samba用戶,只有有了samba賬號密碼的系統用戶才是
            [printers]:打印服務;
            [shared_FS]:用戶自定義的共享目錄;

        home和shared配置中常用指令:
            comment:注釋信息;
            path:本地文件系統路徑;類似url映射本地文件系統該路徑。
            browseable: 是否可瀏覽,是否為用戶可見;是否允許屬組合主用戶瀏覽samba服器上的共享資源名稱。
            guest ok:是否允許來賓賬號訪問;
            public:是否公開給所有來賓;
            writable:是否可寫;需要雙授權,文件系統可寫,服務可寫
                read only = no
            write list:擁有寫權限的用戶或組列表;
                用戶名 
                @組名, +組名

samba用戶管理:

    smbpasswd, pdbedit

    smbpasswd [OPTIONS] USERNAME  ###username必須問系統用戶
        -a:添加
        -x:刪除
        -d:禁用
        -e:啟用

    pdbedit:
            -L:列出samba服務中的所有用戶;
            -a:添加用戶為samba用戶;
                    -u USERNAME:

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

訪問服務:

啟動服務 服務端啟動服務:systemctl status nmb smb 創建系統用戶centos 為用戶創建用密碼pdbedit -au centos

(1) smbclient交互式客戶端程序:
        (1) 查看目標服務上的共享,自己有權查看的共享。
                    smbclient -L SMB_SERVER [-U USERNAME]    ##-U大寫的

            [root@centos6 ~]# smbclient  -L 192.168.197.129 -U centos  ###centos用戶使用密碼查看
            Enter centos's password: 
            Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]

                    Sharename       Type      Comment       ###共享資源名稱信息
                    ---------       ----      -------
                    IPC$            IPC       IPC Service (Samba Server Version 4.2.3)
                    centos          Disk      Home Directories  ###共享的目錄

            Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]

                    Server               Comment           ###服務器信息
                    ---------            -------
                    CENTOS7              Samba Server Version 4.2.3
                    LOCALHOST            Samba Server Version 4.2.3

                    Workgroup            Master
                    ---------            -------
                    MYGROUP              LOCALHOST

            [root@centos6 ~]# smbclient  -L 192.168.197.129 使用匿名用戶查看
            Enter root's password:             ###不需輸入任何密碼
            Anonymous login successful

        (2) 訪問共享服務
                    smbclient //SMB_SERVER[/SHARE_NAME] [-U USERNAME]   ##-U大寫的

            [root@centos6 ~]# smbclient  //192.168.197.129/home -U centos 
            Enter centos's password: 
            Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]
            tree connect failed: NT_STATUS_BAD_NETWORK_NAME
            [root@centos6 ~]# smbclient  //192.168.197.129/homes -U centos 
            Enter centos's password: 
            Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]
            smb: \> ls
              .                                   D        0  Tue Oct 18 16:12:19 2016
              ..                                  D        0  Tue Oct 18 16:12:19 2016
              .mozilla                           DH        0  Fri Oct 14 21:35:44 2016
              .bash_logout                        H       18  Fri Nov 20 13:02:30 2015
              .bash_profile                       H      193  Fri Nov 20 13:02:30 2015
              .bashrc                             H      231  Fri Nov 20 13:02:30 2015

                            61410 blocks of size 524288. 61345 blocks available
            smb: \> help
            ?              allinfo        altname        archive        blocksize      
            cancel         case_sensitive cd             chmod          chown          
            close          del            dir            du             echo           
            exit           get            getfacl        geteas         hardlink       
            help           history        iosize         lcd            link           
            lock           lowercase      ls             l              mask           
            md             mget           mkdir          more           mput           
            newer          open           posix          posix_encrypt  posix_open     
            posix_mkdir    posix_rmdir    posix_unlink   print          prompt         
            put            pwd            q              queue          quit           
            readlink       rd             recurse        reget          rename         
            reput          rm             rmdir          showacls       setea          
            setmode        stat           symlink        tar            tarmode        
            timeout        translate      unlock         volume         vuid           
            wdel           logon          listconnect    showconnect    ..             
            !              

        常用命令    put mget ls cd mkdir pwd del ... 
                lcd 切換本地工作目錄

(2)mount.cifs 
        mount -t cifs //SMB_SERVER/SHARED_ID  /MOUNT_POINT  -o username=USER,password=PASS

        注意:掛載操作中的用戶,與-o選項中指定的用戶直接產生映射關系;訪問掛載,是以-o選項指定的用戶身份運行,與本地用戶以ID產生映射;
                /SHARED_ID 可以不輸入  SHARED_ID就是配置段中共享文件系統設置中的[SHARED_ID]

[root@centos6 ~]# mount -t cifs //192.168.197.129/homes /mnt -o user=centos,password=yang [root@centos6 ~]# mount //192.168.197.129/homes on /mnt type cifs (rw)

自定義共享的方式:

修改主配置文件,、/etc/samba/smb.cof,在共享文件系統配置段加入下面的配置即可定義自定義共享

[shared_ID]              ###共享資源名和本地文件系統路徑名可以不一致。隨便起
    comment =            ###注釋信息
    path =               ###文件系統路徑 
    guest ok =           ###是否允許其來賓用戶訪問
    read only =          ###是否只讀,不是只讀就是可讀寫
    public =             ###是否為所有人可見,來賓,匿名用戶。
    browseable =         ###瀏覽控制,非屬組合屬主用戶是否可見資源。
    write list =         ###有寫權限的用戶,相當于黑名單。
            注意:writable = yes 不能與write list共存。否則用戶還是有寫權限。
            write list可以使用組來定義一個組內的用戶都是否擁有寫權限。
            write list = +GROUPNAME  ##注意要有個加號。
    注意:只要用戶擁有服務的寫權限,就能刪除文件,哪怕屬主不是他。
注意:定義所用戶在服務級的寫權限write = yes (read only = no)不建議與write list同時使用;

檢查配置文件是否有語法錯誤:testparm命令

查詢samba服務器狀態

smbstatus命令:
    顯示samba服務的相關共享的訪問狀態信息;
        -b:顯示簡要格式信息;
        -v:顯示詳細格式信息;

    Samba version 4.2.3
    PID     Username      Group         Machine            Protocol Version       
    ------------------------------------------------------------------------------
    40302     nobody        nobody        192.168.197.128 (ipv4:192.168.197.128:43946) NT1         

    Service      pid     machine       Connected at
    -------------------------------------------------------
    public       40302   192.168.197.128  Tue Oct 18 05:21:50 2016

    No locked files

總結:

C/S架構。用戶以系統用戶身份登錄指定的共享資源。沒有默認登錄根目錄。

samba的用戶必須為系統用戶,但是密碼是單獨設置的??梢允褂胹mbpasswd, pdbedit為用戶設置密碼。用戶登錄samba服務后都是以系統用戶身份登錄。共享資源要給予相應授權才能讀寫查看。

samba的工作模型,工作組模型,域控制器模型。一般文件共享工作組模型就可以了。

設置共享目錄。要修改主配置文件/etc/samba/smb.conf文件。在共享文件系統配置段,定義該目錄的共享。定義好后需要使用testparm命令測試語法。

samba有匿名用戶,guest來賓用戶。匿名用戶使用nobody這個系統用戶登錄。共享文件系統配置中控制目錄是否可讀寫。是否可瀏覽到

登錄samba服務器必須制定要訪問資源名稱shared_id否則不能的登錄,需要事先查詢都有哪些資源。或用戶自己就知道資源。

samba可使用udp協議也可以使用tcp協議。根據客戶端與服務端的協商。

udp137,138 tcp139,445

samba提供的共享資源是可以掛在到其他主機上的。

mount -t cifs或使用mount.cifs

注意:掛載點無論是什么權限,只要掛載了cifs共享目錄,該目錄就是服務端遠程主機的上共享目錄的權限,屬主和屬組。

這掛在點就是samba服務器上共享目錄的映射(權限,uid,gid),呈現在客戶端。客戶端的用戶操作該掛載點,就想操作本地文件系統一樣。只要本機有與之對應的uid或gid的用戶就能擁有該目錄的權限。但是客戶端主機對掛載點的操作,是根據服務器授權的。

客戶端主機對共享資源的掛在點權限是登錄賬號(服務端的系統用戶)在服務端主機服務和文件系統的授權的交集,并且客戶端主機有gid或uid與服務端共享目錄的uid和gid相同,才會有屬主和數組權限。

最重要的:權限的最終權限決定于本地文件系統授權和服務授權的交集,其次才是客戶端是否有與之對應uid或gid的用戶,否者就只能是其他人身份(但是其他人身份,guest用戶或匿名用戶的授權又取決于服務授權)。

實現了類似UIDmap功能。只要uid本機中有,就認為是本地主機上的文件。并擁有響應權限。服務端說這個文件是誰的就是誰的。inux只認uid和gid,拿著自己家的鑰匙打開任意一家的門,而且還是主人身份。

服務端共享目錄的權限及屬主屬組

[root@centos7 ~]# ll -d /home/samba/
drwxrwxr-x. 3 centos centos 27 Oct 18 07:58 /home/samba/
[root@centos7 ~]# id centos
uid=1001(centos) gid=1001(centos) groups=1001(centos)

客戶端掛在后,掛載點權限屬主和屬組的變化

[root@centos6 ~]# ll -d /mydata/
drwxr-xr-x. 3 root root 4096 Oct 15 05:41 /mydata/
[root@centos6 ~]# mount -t cifs //192.168.197.129/public/ /mydata/ -o username=centos,password=yang
[root@centos6 ~]# ll -d /mydata/
drwxrwxr-x. 3 yang yang 0 Oct 18 19:52 /mydata/

客戶端只要有與之對應的uid或gid就擁有相應權限,否則就只能是其他人的權限。

[root@centos6 ~]# id yang
uid=1001(yang) gid=1001(yang) groups=1001(yang)

下面的練習暫不使用samba,會有很多問題。但是要使用nfs測試下述實驗。

練習:

(1) 創建一個共享mydata,路徑為/mysql/data,客戶端1掛載至/mydata;而后客戶端1主機安裝mysql或mariadb,將數據目錄設定為/mydata,要確保mysql服務能正常 運行,但數據目錄位于samba server上; mysql更換數據位置要初始化數據庫。

(2) 客戶端2主機使用類似客戶端1主機的方式掛載mydata共享至本地的/mydata目錄,而后,直接安裝mysql或mariadb server,設定其數據目錄為/mydata;測試

(a) 客戶端1 mysql服務運行時,客戶端2的mysql服務能否啟動?

(b) 客戶端1 mysql服務停止時,客戶端2的mysql服務能否啟動?

練習目的:

部署samba服務,熟悉權限設定

該項目測試兩臺mysql公用一個使用samba共享的目錄為數據位置,測試能否同時使用。

應該會出現很多問題,但是生產環境中使用該模式,是當一臺mysql出現問題,立即啟用第二臺服務器。

練習:

創建一個共享ftp,路徑為/var/ftp/pub;要求僅centos和gentoo用戶能上傳;此路徑對其它用戶不可見;

練習:

(1) samba sever共享/data/application/web,在目錄中提供wordpress;

(2) 部署兩臺amp服務器,均掛載此共享作為某主機的文檔映射路徑;

(3) 驗正兩臺主機上的wordpress是否可被同時訪問;

(a) 發一個文件,驗正圖片上傳等功能; (b) 在任一客戶端上訪問此應用,多次刷新,確認下所有資源訪問是否正常 ;

練習目的:

兩臺web前端服務器使用同一個存儲,該存儲上部署samba服務提供共享存儲,部署mysql。

測試是兩臺服務器是否能夠同時響應用戶的請求對數據庫進行讀寫。

部署dns實現一個FQDN兩條A記錄。實現負載均衡。其中一臺web前端出現故障,刪除該web前端的

A記錄。實現切換,將緩存時間調短一些,盡量少的影響客戶訪問(客戶端有dns緩存)。

兩個實驗寫好文檔和測試文檔。下周一,上交,pdf文檔。

 

原創文章,作者:yyw,如若轉載,請注明出處:http://www.www58058.com/56562

(0)
yywyyw
上一篇 2016-11-01
下一篇 2016-11-01

相關推薦

  • 安全與加密、申請CA證書

    本章內容 v  1、安全機制  2、對稱加密  3、不對稱加密 4、散列算法  5、PKI 和CA v 在互聯網數據傳輸的過程的,數據的安全私密性是及其重要的,所以就有數據的加密和解密的過程。 數據加密,是一門歷史悠久的技術,指通過加密算法和加密密鑰將明文轉變為密文,而解密則是通過解密算法和解密密鑰將密文恢復為明文。它…

    Linux干貨 2016-12-04
  • N22期-第4周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel /home/tuser1 [root@localhost ~]# chmod&nb…

    Linux干貨 2016-09-05
  • ?文件服務器 – vsftpd

    文件服務器 – vsftpd 概述 FTP協議 vsftpd的配置文件 vsftpd + pam + file_db + virtual_vsftp_user vsftpd + pam + mysql + virtual_vsftp_user 登錄時錯誤類型 總結 文件服務器是一種專供其他電腦訪問文件和存儲的程序。文件服務器通常比一般的個人電腦擁…

    Linux干貨 2016-10-15
  • 自建回收站

    linux 自添加回收站 (1)建立一個回收站目錄 mkdir /tmp/trash_tmp (2) 編輯一個文件 vi /bin/trash mv $@ /tmp/trash_tmp :wq 保存退出 (3)添加別名 alias rm=/bin/trash (4)編輯/etc/bashrc 在最后一行添加alias rm=/bin/trash (5)給予目…

    Linux干貨 2017-09-04
  • Linux內核編譯

    1.安裝前準備:     安裝開發環境     獲取內核源碼包(www.kernel.org)     安裝軟件包        *curses*    &nb…

    Linux干貨 2016-09-17
  • Shell腳本編程中的if、case、for、while、until命令

    為何要學編程中的if、case、for、while、until命令?        作為一個運維工程師,總會聽到自動化,實際自動化離不開編寫shell腳本,而shell腳本中卻又離不開編程中的if、case、for、while、until, 這些關鍵字。 了解編程中的if、case、for、while、until命令,…

    Linux干貨 2016-08-19
欧美性久久久久