Linux samba伺服器配置

来源:https://www.cnblogs.com/hereboot/archive/2019/10/20/11707903.html
-Advertisement-
Play Games

samba伺服器配置 配置文件 1. /etc/samba/smb.conf samba的主要配置文件,可設置全局參數和共用目錄的參數 2. /etc/samba/lmhosts 通過hostname來訪問samba: 3. /etc/samba/smbusers 由於windows和linux里的 ...


samba伺服器配置

配置文件

  1. /etc/samba/smb.conf
    samba的主要配置文件,可設置全局參數和共用目錄的參數
  2. /etc/samba/lmhosts
    通過hostname來訪問samba:
  3. /etc/samba/smbusers
    由於windows和linux里的管理員和訪客賬號名稱不一致,可使用此配置文件來設置一個映射,比如administrator映射成root:
  4. /etc/sysconfig/samba
    配置smbd,nmbd啟動時帶的參數
  5. /var/lib/samba/private/{passdb.tdb, secrets.tdb}
    管理samba的用戶賬號/密碼時,會用到的資料庫檔案

可用命令

smbd, nmbd:smbd提供文件和列印共用伺服器,nmbd提供NetBIOS名稱服務和瀏覽支持,幫助客戶端定位伺服器,處理所有基於UDP的協議
tdbdump, tdbtool:samba使用了tdb資料庫,可以使用tdb工具來查看資料庫內容
smbstatus:查看samba的狀態
smbpasswd, pdbedit:伺服器功能,用於管理samba的用戶賬號和密碼,早期是使用smbpasswd命令,後來因為使用了tdb資料庫,所以推薦使用pdbedit命令來管理用戶數據
mount.cifs:用來掛載分享目錄
smbclient:samba客戶端
nmblookup:查找NetBIOS name
smbtree:未知,可能是用來查找網路鄰居的吧
testparm:驗證smb.conf文件的內容是否合法

工作模式

samba伺服器有5種工作模式,分別為:

  1. share,用戶對samba伺服器的訪問不需要身份驗證,允許匿名訪問,用戶的訪問許可權僅由相應用戶對共用文件的訪問許可權決定
  2. user,使用用戶名和密碼訪問samba伺服器,
  3. server,使用另外一臺伺服器專門用來做身份驗證,samba服務只提供文件和印表機共用服務
  4. domain,域模式,不常用
  5. ads,最新的一種工作模式,也不太常用

通過設置security選項即可設置samba的工作模式:security = share

配置項

全局

全局必須的配置項有:workgroup,netbios name,serverstirng,log file,max log size,security,passdb backend,load printer

    workgroup = rhel_6.3
    server string = Samba Server Version %v
    netbios name = rhel
    # logs split per machine
    log file = /var/log/samba/log.%m
    # max 500KB per log file, then rotate
    max log size = 500
    security = user
    passdb backend = tdbsam
    load printers = no

共用目錄

不需要密碼的共用

需要將全局參數中的security設置成share(暫不清楚,在user工作模式下通過設置guest ok好像也可以,需要驗證)
最小化配置:

[test]
    comment = test
    path = /tmp
    read only = no
    guest ok = yes
    create mask = 644

其中:
read only預設為yes,表示只允許讀,不允許寫,所以需要修改
guest ok預設是no,表示不允許匿名訪問
create mask預設是744,導致客戶端創建的文件都是可執行文件,所以需要修改

註意:
writable和writeable是同義詞
writeable和read only是反義同義詞
writeable預設為no
read only預設為yes
完整配置需要配置available和browseable,不過這兩個預設都是yes

用戶名/密碼方式的共用

需要將全局參數中的security設置成user

[win]
    comment = win
    path = /home/win
    read only = yes
    create mask = 644
    valid users = win

這種方式首先需要使用root許可權添加一個賬戶,然後使用smbpasswd -a xxx在samba資料庫添加此用戶的samba密碼
輸入smbpasswd -a xxx 時會直接讓用戶設置這個賬戶的samba密碼
這個用戶信息保存在tdb資料庫里
修改密碼:root許可權下輸入smbpasswd user_name即可修改user_name的samba密碼

配置文件驗證

使用testparm可以驗證smb.conf文件的內容是否合法

[RHEL@localhost ~]$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[test]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
    workgroup = TEST
    netbios name = TESTNET
    server string = Samba Server Version %v
    security = SHARE
    log file = /var/log/samba/log.%m
    max log size = 50
    load printers = No

[test]
    comment = test
    path = /tmp
    read only = No
    guest ok = Yes

客戶端本地驗證samba伺服器共用的內容

smbclient -L //127.0.0.1
當samba伺服器的工作模式被設置成share模式時,需要在上面的命令後面加-N選項表示不請求密碼

[RHEL@localhost ~]$ smbclient -L //127.0.0.1 -N
Domain=[TEST] OS=[Unix] Server=[Samba 3.5.10-125.el6]

    Sharename       Type      Comment
    ---------       ----      -------
    test            Disk      test
    IPC$            IPC       IPC Service (Samba Server Version 3.5.10-125.el6)
Domain=[TEST] OS=[Unix] Server=[Samba 3.5.10-125.el6]

    Server               Comment
    ---------            -------
    TESTNET              Samba Server Version 3.5.10-125.el6

    Workgroup            Master
    ---------            -------
    TEST                 TESTNET

查看samba資料庫里的用戶信息

pdbedit -L

防火牆和SELinux

關閉防火牆:/etc/init.d/iptables stop
設置SELinux為寬容模式:setenforce 0
獲取SELinux的狀態: getenforce

排障

排障總共4種方式,

  1. nmap掃描是否有139和445埠被監聽
  2. 映射網路驅動器
  3. net use命令查看當前有哪些連接
  4. 重啟(對於修改了密碼後登錄不上非常有效)

常見問題場景:
1、windows訪問時提示找不到網路路徑,並帶有錯誤碼0x80070035,表示samba伺服器未監聽139和445埠(通過nmap可以看到)

2、直接在windows的文件管理器里輸入網路路徑後提示"找不到xxxx,請檢查拼寫並重試",且無錯誤碼,

通過映射網路驅動器發現windows給出了詳細的信息:SMB1協議不安全,需要使用SMB2以上的安全的協議,

這種情況一般出現在win 10上,解決辦法有兩個,一是升級samba伺服器,二是給win 10添加SMB1支持(在程式與功能裡面可以啟用)

3、windows訪問時提示無許可權

一般來說應該是和SELinux有關
解決辦法也有兩個:

  1. 如果共用的是家目錄,使用setsebool -P samba_enable_home_dirs on命令即可,
    如果是添加的目錄,使用命令chcon -t samba_share_t /path給這個目錄添加samba_share_t標簽即可
  2. 關閉SELinux

原文:
#---------------
# SELINUX NOTES:
#
# If you want to use the useradd/groupadd family of binaries please run:
# setsebool -P samba_domain_controller on
#
# If you want to share home directories via samba please run:
# setsebool -P samba_enable_home_dirs on
#
# If you create a new directory you want to share you should mark it as
# "samba_share_t" so that selinux will let you write into it.
# Make sure not to do that on system directories as they may already have
# been marked with othe SELinux labels.
#
# Use ls -ldZ /path to see which context a directory has
#
# Set labels only on directories you created!
# To set a label use the following: chcon -t samba_share_t /path
#
# If you need to share a system created directory you can use one of the
# following (read-only/read-write):
# setsebool -P samba_export_all_ro on
# or
# setsebool -P samba_export_all_rw on
#
# If you want to run scripts (preexec/root prexec/print command/...) please
# put them into the /var/lib/samba/scripts directory so that smbd will be
# allowed to run them.
# Make sure you COPY them and not MOVE them so that the right SELinux context
# is applied, to check all is ok use restorecon -R -v /var/lib/samba/scripts
#
#--------------

版本

3.5.10里使用的是SMB1協議,被證明有漏洞,不推薦使用。

windows客戶端訪問符號鏈接失敗

在/etc/samba/smb.conf里添加如下的內容即可正常

[global] 
unix extensions  = no

[share]
follow symlinks = yes
wide links = yes

其中:

  • unix extensions是為了在samba里支持符號鏈接,硬鏈接等特性,主要給UNIX下的samba客戶端使用,對windows客戶端沒有任何用處,所以在windows客戶端訪問時需要關掉這個選項,這個是選項是預設啟用的。
  • follow symlinks,這個參數控制samba伺服器是否會跟隨特定samba共用目錄(非global選項)里的符號鏈接,預設是啟用的。
  • wide links,這個參數控制是否能夠創建一個鏈接指向samba伺服器未共用的目錄(samba伺服器預設允許創建指向已共用的目錄的鏈接),可能會導致一個安全問題,所以這個參數預設不啟用

man 5 smb.conf中的解釋如下

unix extensions (G)
    This boolean parameter controls whether Samba implements the CIFS UNIX
    extensions, as defined by HP. These extensions enable Samba to better
    serve UNIX CIFS clients by supporting features such as symbolic links,
    hard links, etc... These extensions require a similarly enabled client,
    and are of no current use to Windows clients.
    
    Note if this parameter is turned on, the wide links parameter will
    automatically be disabled.
    
    Default: unix extensions = yes

follow symlinks (S)
    This parameter allows the Samba administrator to stop smbd(8) from
    following symbolic links in a particular share. Setting this parameter to
    no prevents any file or directory that is a symbolic link from being
    followed (the user will get an error). This option is very useful to stop
    users from adding a symbolic link to /etc/passwd in their home directory
    for instance. However it will slow filename lookups down slightly.
    
    This option is enabled (i.e.  smbd will follow symbolic links) by default.
    
    Default: follow symlinks = yes

wide links (S)
    This parameter controls whether or not links in the UNIX file system may
    be followed by the server. Links that point to areas within the directory
    tree exported by the server are always allowed; this parameter controls
    access only to areas that are outside the directory tree being exported.
    
    Note: Turning this parameter on when UNIX extensions are enabled will
    allow UNIX clients to create symbolic links on the share that can point to
    files or directories outside restricted path exported by the share
    definition. This can cause access to areas outside of the share. Due to
    this problem, this parameter will be automatically disabled (with a
    message in the log file) if the unix extensions option is on.
    
    Default: wide links = no

如何判斷smb.conf里的某些欄位的預設選項

比如follow symlinks欄位預設是yes, 則當在smb.conf里配置了這個欄位等於yes時在testparm里不會顯示這個欄位,如果配置成no則會顯示


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [TOC] 1.前言 Linux命令行的組成結構 2.Linux系統命令操作語法格式 | 命令 | 空格 | 參數 | 空格 | 【文件或路徑】需要處理的內容 | | | | | | | | rm | | rf | | /tmp/ | | ls | | la | | /home | | 結婚 | | ...
  • [TOC] 1.Linux文件系統結構 Linux目錄結構的組織形式和Windows有很大的不同。首先Linux沒有“盤(C盤、D盤、E盤)”的概念。已經建立文件系統的硬碟分區被掛載到某一個目錄下,用戶通過操作目錄來實現磁碟讀寫。 Linux不像Windows那樣的系統目錄,Linux使用正斜杠"/ ...
  • [TOC] 1.為什麼要遠程連接Linux 在實際的工作場景中,虛擬機界面或者物理伺服器本地的終端都是很少接觸的,因為伺服器裝完系統之後,都要拉倒IDC機房托管,如果是購買的雲主機,那更碰不到伺服器本體了,只能通過遠程連接的方式管理自己的Linux系統。 因此在裝好Linux系統之後,使用的第一步應 ...
  • [TOC] 1.下載centos系統ISO鏡像 要安裝centos系統,就必須得有centos系統軟體安裝程式,可以通過瀏覽器訪問centos官網http://www.centos.org,然後找到Downloads mirrors鏈接,點擊後進入下載,但是由於這是國外的網址,下載速度肯定受限。 因 ...
  • 介紹 集電極反饋偏置 的BJT 共射放大電路的直流分析方法。 ...
  • 1、問題描述 錯誤信息是:sudo :apt-get:command not found 2、問題原因及解決 在centos下用yum install xxxyum和apt-get的區別一般來說著名的linux系統基本上分兩大類: 1.RedHat系列:Redhat、Centos、Fedora等 2 ...
  • [TOC] 1.電腦:輔助人腦的工具 現在的人們幾乎無時無刻都會碰電腦!不管是桌上型電腦(桌機)、筆記型電腦(筆電)、平板電腦、智慧型手機等等,這些東西都算是電腦。雖然接觸的這麼多,但是,你瞭解電腦裡面的元件有什麼嗎?以桌機來說,電腦的機殼裡面含有什麼元件?不同的電腦可以應用在哪些工作?你生活周遭有 ...
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex A53,雙核 3. 使用工具:Source Insight 3.5, Visio 1. 概述 本文將分析 。 簡單來說,在使用 分配頁面時,會將可用的 與`zone watermark`進 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...