SAMBA

一、用途:linux

文件共享:能夠在Linux/Windows之間,相似於windows之間的網上鄰居,能夠直接訪問文件並修改。ios

  • a服務器全局設置smb.conf  [global]主機信息部分,以global爲依據
  • b規劃準備共享的目錄參數smb.conf  [....]共享的信息,以個別的目錄名稱爲依據
  • c創建所須要的文件系統
  • d創建samba帳戶
  • e啓動服務smbd、nmdb

二、建立用戶:數據庫

用tdbsam方式創建samba用戶數據庫,可使用smbpasswd -a 來創建samba用戶,不過要創建的用戶必須是系統中存在的用戶,不過咱們能夠不用smbpasswd,用pdbedit命令來完成操做,它的參數不少這裏列出幾個經常使用的:vim

  • pdbedit -a -u username 添加一個用戶 -r修改 -x刪除
  • pdbedit -L (username) 查看samba用戶
  • smbpasswd username 修改用戶密碼

三、在Linux上測試windows

smbclient -L //192.168.1.144 -U username安全

[root@CentOS6 adduser]# smbclient -L //127.0.0.1 -U user1
Enter user1's password: 
Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9]

    Sharename       Type      Comment
    ---------       ----      -------
    homes           Disk      Home Directories
    IPC$            IPC       IPC Service (Samba Server Version 3.6.23-42.el6_9)
    user1           Disk      Home Directories
Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9]

    Server               Comment
    ---------            -------
    CENTOS6-SMB          Samba Server Version 3.6.23-42.el6_9

    Workgroup            Master
    ---------            -------
    SAMBA3-SHARE         CENTOS6-SMB

 linux掛載smb服務器

sudo mount -o username=colorv,password=123456 //192.168.0.239/data2 /mnt/smb-data2/dom

四、協議、端口、進程tcp

1)沒有使用相似TCP/IP之類的傳輸協議,所以不須要IP設置的。採用NetBIOS協議:主機在NetBIOS協議當中的定義爲使用「NetBIOS Nmae「,每臺主機必需要有不一樣的NetBIOS Name才行。測試

2)(windows網上鄰居:容許你登錄,開放資源給你)samba經過兩個服務來控制這兩個步驟:

nmbd:該daemon用來管理工做組、NetBIOS Name等的解析。用到UDP13七、UDP138端口負責名稱解析任務。['di:mən]守護進程

smdb:該daemon用來管理samba主機共享個的目錄、文件、打印機等。用到TCP13九、tcp445(445不必定使用)傳輸數據

3)開放以上端口、啓動以上兩個服務

五、局域網鏈接方式

1)Peer/Peer(Workgroup, 對等模式)

各臺電腦都是平等的,互相訪問資源,此時須要知道對方電腦的用戶名密碼。

2)Domain model(主控模式)

由一臺服務器,你們去訪問服務器。

(samba能夠實現於上術兩種模式)

六、samba配置文件

/etc/samba/smb.conf

1)#和;都是註釋

2)[global]

工做組、主機的NetBIOS名稱、字符編碼的顯示、日誌文件的設置、是否使用密碼、密碼驗證機制等

workgroup = 工做組的名稱:注意,工做組要相同

netbios name = 主機的NetBIOS名稱,每部主句都不一樣

server string = 主機的簡易說明

display charset = 本服務器上面的顯示編碼,通常與unix charset相同

unix charset = 在linux服務器上面所使用的編碼, /etc/sysconfig/i18n

dos charset = windows客戶端的編碼,gb2312寫爲cp936,(CMD:chcp命令查看)

log file = 日誌文件存儲位置,可以使用變量處理

max log size = 日誌文件最大能達到多少Kbytes,

security = share、user、domain(安全程度:不須要密碼、使用samba服務器自己的密碼數據庫,用戶必須存在於linux帳戶、使用外部服務器密碼,也就是samba是客戶端之意,此時須要提供password server = IP參數)

encrypt passwords = Yes 密碼要加密,爲默認

passdb back = 數據庫格式,默認爲tdbsam(/var/lib/samba/private/passwd.tdb)

# 跟防火牆的議題有關的設定
        hosts allow = 127. 192.168.100.254 192.168.100.10 192.168.1.

3)[共享資源名稱]

目錄權限、誰能夠瀏覽該目錄、讀寫等

comment = 目錄說明

path = 共享目錄

browseable = 是否讓全部用戶看到這個項目

writalbe =   (read only =)

create mode = 文件權限

directory mode = 目錄權限(不要與系統目錄權限衝突)

writelist = 用戶或 @組,這個選項能夠指定可以進入到此資源名稱的特定用戶

注:變量功能,eg 

  • %S
[home]
    valid users = %S    #容許的登錄着:表示任何可登錄的用戶都可以登錄的意思,若是是user1,homes就會自動變爲[user1]  
  • %m:表明client端的netbios主機名  logfile = /var/log/samba/log.%m
  • %M
  • %L
  • %H
  • %U
  • %g
  • %h
  • %I
  • %T

七、例子:

1)無密碼

[root@www samba]# vim smb.conf
# 1. 先設定好服務器總體環境方面的參數 [global] # 與主機名有關的設定信息 workgroup = vbirdhouse netbios name = vbirdserver server string = This is vbird's samba server # 與語系方面有關的設定項目喔,爲什麼如此設定請參考前面的說明 unix charset = utf8 display charset = utf8 dos charset = cp950 # 與登陸文件有關的設定項目,注意變量 (%m) log file = /var/log/samba/log.%m max log size = 50 # 這裏纔是與密碼有關的設定項目哩! security = share # 修改一下打印機的加載方式,不要加載啦! load printers = no # 2. 分享的資源設定方面:主要得將舊的批註,新的加入! # 先取消 [homes], [printers] 的項目,而後針對 /tmp 的設定,可瀏覽且可寫入喔 [temp] <==分享資源名稱 comment = Temporary file space <==簡單的解釋此資源 path = /tmp <==實際 Linux 分享的目錄 writable = yes <==是否可寫入?在此例爲是的 browseable = yes <==能不能被瀏覽到資源名稱 guest ok = yes <==單純分享時,讓用戶隨意登入的設定值

testparm (-v)檢查配置文件,如有中括號表示有問題(這個不臺清楚了)

開啓服務、開機自啓、查看端口(端口是自動開放嗎,這個問題好幼稚嗎)

本機測試,見上邊(//127.0.0.1)

linux掛載:mount -t cifs //127.0.0.1/temp /mnt,而後df能看到

2)密碼user

[root@www ~]# vim /etc/samba/smb.conf
[global]
        workgroup       = vbirdhouse
        netbios name    = vbirdserver
        server string   = This is vbird's samba server
        unix charset    = utf8
        display charset = utf8
        dos charset     = cp950
        log file        = /var/log/samba/log.%m
        max log size    = 50
        load printers    = no

        # 與密碼有關的設定項目,包括密碼檔案所在格式喔!
        security = user          <==這行就是重點啦!改爲 user 層級
        passdb backend = tdbsam  <==使用的是 TDB 數據庫格式!

# 2. 分享的資源設定方面:刪除 temp  加入 homes 與 project
[homes]                                   <==分享的資源名稱  homes是最特殊的資源目錄名稱!
        comment        = Home Directories
        browseable     = no               <==除了使用者本身外,不可被其餘人瀏覽
        writable       = yes              <==掛載後可擦寫此分享
        create mode    = 0664             <==創建檔案的權限爲 664
        directory mode = 0775             <==創建目錄的權限爲 775

[project]                                 <==就是那三位使用者的共享資源
        comment    = smbuser's project
        path       = /home/project        <==實際的 Linux 上面的目錄位置
        browseable = yes                  <==可被其餘人所瀏覽到資源名稱(非內容)
        writable   = yes                  <==能夠被寫入
        write list = @users               <==寫入者有哪些人的意思:@用戶組

# 2. 每次改完 smb.conf 你都須要從新檢查一下語法正確否!
[root@www ~]# testparm

注意共享目錄的用戶組,權限等設置!

添加samba帳戶(先linux帳戶)

可能須要修改selinux:setsebool -P samba_enable_home_dirs=1

 

八、以samba爲例子,介紹selinux

1)找出與samba有關的selinuxguize:getsebool -a | grep samba

[root@www ~]# getsebool -a | grep samba
samba_domain_controller --> off  <==PDC 時可能會用到
samba_enable_home_dirs --> off   <==開放用戶使用家目錄
samba_export_all_ro --> off      <==容許只讀文件系統的功能
samba_export_all_rw --> off      <==容許讀寫文件系統的功能
samba_share_fusefs --> off
samba_share_nfs --> off
use_samba_home_dirs --> off      <==相似用戶家目錄的開放!
virt_use_samba --> off

2)設置:setseboll -P samba_enable_home_dirs=1解決沒法掛載等問題

對共享目錄使用 chcon -t samba_share_t  /home/project

若是共享的目錄不僅是samba,還包含ftp等,那就可能須要使用public_content_t這個你們都可以讀取的類型才行。

其餘:

iptable

利用 Quota 限制用戶磁盤使用

 

Linux 上掛載 Samba(Windows & macOS 共享文件夾)的正確姿式

 sudo mount -t cifs -o username=colorv,password=123456  //192.168.0.239/data2 smb-dir/

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息