Samba文件共用服務

来源:http://www.cnblogs.com/01-single/archive/2017/05/17/6865899.html
-Advertisement-
Play Games

Samba起源: 早期網路想要在不同主機之間共用文件大多要用FTP協議來傳輸,但FTP協議僅能做到傳輸文件卻不能直接修改對方主機的資料數據,這樣確實不太方便,於是便出現了NFS開源文件共用程式:NFS(NetworkFile System)是一個能夠將多台Linux的遠程主機數據掛載到本地目錄的服務 ...


Samba起源:

    早期網路想要在不同主機之間共用文件大多要用FTP協議來傳輸,但FTP協議僅能做到傳輸文件卻不能直接修改對方主機的資料數據,這樣確實不太方便,於是便出現了NFS開源文件共用程式:NFS(NetworkFile System)是一個能夠將多台Linux的遠程主機數據掛載到本地目錄的服務,屬於輕量級的文件共用服務,不支持Linux與 Windows系統間的文件共用。

    隨後在1991年時大學生Tridgwell為瞭解決Linux與Windows系統之間共用文件的問題,便開發出了SMB協議與Samba服務程式。

    SMB(Server Messages Block)協議:實現區域網內文件或印表機等資源共用服務的協議。

    當時Tridgwell想要註冊SMBServer這個商標,但卻被因為SMB是沒有意義的字元被拒絕了,經過Tridgwell不斷翻看詞典,終於找到了一個拉丁舞蹈的名字——SAMBA,而這個熱情舞蹈的名字中又恰好包含了SMB(SAMBA),於是這便是Samba程式名字的由來。

    Samba服務程式是一款基於SMB協議並由服務端和客戶端組成的開源文件共用軟體,實現了Linux與Windows系統間的文件共用。

wKiom1kaxKejQq-gAADzw79sJQ8120.png

 

 

所需主機配置:

主機名稱

操作系統

IP地址

Samba共用伺服器

紅帽RHEL6操作系統

192.168.0.141

客戶端

紅帽RHEL6操作系統

192.168.0.142

客戶端

Windows7操作系統

192.168.0.110

[root@host1 ~]## yum -y install samba

[root@host1 ~]# service smb restart

[root@host1 ~]# chkconfig smb --list

smb            0:關閉1:關閉2:啟用3:啟用4:啟用5:啟用6:關閉

[root@host1 ~]## cat /etc/samba/smb.conf | grep -v "#" | grep -v ";" | grep -v "^$"

[global]

workgroup = MYGROUP

server string = Samba Server Version %v

log file = /var/log/samba/log.%m

max log size = 50

security = user

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

writable = no

printable = yes

過濾後的配置文件:

[global]

 

#全局參數。

 

workgroup = MYGROUP

#工作組名稱。

 

server string = Samba Server Version %v

#伺服器介紹信息,參數%v為顯示SMB版本號。

 

log file = /var/log/samba/log.%m

#定義日誌文件存放位置與名稱,參數%m為來訪的主機名。

 

max log size = 50

#定義日誌文件最大容量為50Kb。

 

security = user

#安全驗證的方式,總共有4種。

 

#share:來訪主機無需驗證口令,更加方便,但安全性很差。

 

#user:需由SMB服務驗證來訪主機提供的口令後才可建立訪問,更加的安全。

 

#server:使用獨立的遠程主機驗證來訪主機提供的口令(集中管理帳號)。

 

#domain:使用PDC來完成驗證

 

passdb backend = tdbsam

#定義用戶後臺的類型,共有3種。

 

#smbpasswd:使用SMB服務的smbpasswd命令給系統用戶設置SMB密碼。

 

#tdbsam:創建資料庫文件並使用pdbedit建立SMB獨立的用戶。

 

#ldapsam:基於LDAP服務進行帳戶驗證。

 

load printers = yes

#設置是否當Samba服務啟動時共用印表機設備。

 

cups options = raw

#印表機的選項

[homes]

 

#共用參數

 

comment = Home Directories

#描述信息

 

browseable = no

#指定共用是否在“網上鄰居”中可見。

 

writable = yes

#定義是否可寫入操作,與"read only"相反。

[printers]

 

#印表機共用參數

 

comment = All Printers

 
 

path = /var/spool/samba

#共用文件的實際路徑(重要)。

 

browseable = no

 
 

guest ok = no

#是否所有人可見,等同於"public"參數。

 

writable = no

 
 

printable = yes

 

 

標準的Samba共用參數是這樣的:

參數

作用

[linuxprobe]

共用名稱為linuxprobe

comment = Do not arbitrarily modify the database file

警告用戶不要隨意修改資料庫

path = /home/database

共用文件夾在/home/database

public = no

關閉所有人可見

writable = yes

允許寫入操作

 

使用Samba服務口令驗證方式可以讓共用文件更加的安全,做到僅讓信任的用戶訪問,而且驗證過程也很簡單,要想使用口令驗證模式,我們需要先需要創建Samba服務獨立的資料庫。

第1步:檢查當前是否為user驗證模式

[root@host1 ~]# cat /etc/samba/smb.conf

……

 security = user

passdb backend = tdbsam

……

第2步:創建共用文件夾:

[root@host1 ~]# mkdir /database

第3步:描述共用文件夾信息。

在SMB服務主配置文件的最下麵追加共用文件夾的配置參數:

[database]
comment = Do not arbitrarily modify the database file
path = /database
public = no
writable = yes

保存smb.conf文件後重啟啟動SMB服務:

[root@host1 ~]# service smb restart

第4步:使用Windows主機嘗試訪問

在Windows主機的運行框中輸入遠程主機的信息

wKioL1kasYKDt7RPAAAtopSZz74443.png

此時訪問Samba服務報錯

wKiom1kasXCRwiOMAAA9KNmNI_0578.png

這時我們需要關閉防火牆(或清空防火牆規則)和修改SElinux規則

 

第5步:清空防火牆規則鏈:

[root@host1 ~]# /etc/init.d/iptables stop

或者:

[root@host1 ~]# iptables -F

[root@host1 ~]# service iptables save

第6步:創建SMB服務獨立的帳號。

現在Windows系統要求先驗證後才能訪問共用,而SMB服務配置文件中密碼資料庫後臺類型為”tdbsam“,所以這個帳戶和口令是Samba服務的獨立帳號信息,我們需要使用pdbedit命令來創建SMB服務的用戶資料庫。

pdbedit命令用於管理SMB服務的帳戶信息資料庫,格式為:“pdbedit [選項] 帳戶”。

參數

作用

-a 用戶名

建立Samba用戶

-x 用戶名

刪除Samba用戶

-L

列出用戶列表

-Lv

列出用戶詳細信息的列表

創建系統用戶:

[root@host1 ~]# useradd smbuser

將此系統用戶提升為SMB用戶:

[root@host1 ~]# pdbedit -a -u smbuser

new password:        //設置SMB服務獨立密碼

retype new password:

Unix username:        smbuser

NT username:          

……

第7步:允許SELinux規則

設置共用目錄的ACL許可權添加smbuser用戶:

[root@host1 ~]# setfacl -m u:smbuser:rwx /database

允許SELinux對於SMB用戶共用家目錄的布爾值:

[root@host1 ~]# setsebool -P samba_enable_home_dirs on

將共用目錄的SELinux安全上下文設置妥當:

[root@host1 ~]# chcon -t samba_share_t -R /database

重啟服務:

[root@host1 ~]# service smb restart

第8步:使用Windows主機驗證共用結果

使用SMB服務並創建文件

wKiom1katsmyXlmfAACqMfmTHEA515.png

 

實現Linux系統之間數據共用

客戶端安裝cifs-utils軟體包:

[root@host2 ~]# yum -y install cifs-utils

[root@host2 ~]# smbclient -L 192.168.0.141    //查看141伺服器提供了哪些共用

Enter root's password: 

Anonymous login successful

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-20.el6]

 

Sharename       Type      Comment

---------       ----      -------

database        Disk      Do not arbitrarily modify the database file

IPC$            IPC       IPC Service (Samba Server Version 3.6.23-20.el6)

……

[root@host2 ~]# mkdir /mntsmb

[root@host2 ~]# vim /etc/fstab

//192.168.0.141/database /mntsmb cifs username=smbuser,password=123456,domain=MYGROUP,_netdev 0 0

[root@host2 ~]# mount -a

[root@host2 ~]# mount | grep /mntsmb

//192.168.0.141/database on /mntsmb type cifs (rw)

[root@host2 ~]# cat /mntsmb/smb.txt 

hello 

 

PS:寫的內容比較多,但是實際配置起來,步驟很少的,也比較簡單的!


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

-Advertisement-
Play Games
更多相關文章
  • 1、基礎環境說明 虛擬機:VMWare 操作系統:linux 資料庫版本:mysql 5.7.13 社區版(別問為什麼不裝企業版,因為企業版要錢) 背景:虛擬機可以連上外網 2、摸底 查看linux上是否已經安裝了mysql ① 啟動服務 service mysqld start 沒有安裝,則提示 ...
  • " 1、游標 " "1.1、游標屬性" "1.2、隱式游標" "1.3、游標處理及案例" " 2、異常 " "2.1、異常類別" "2.2、異常函數" "2.3、異常處理及案例" " 3、事務 " "3.1、開始事務、結束事務" "3.2、自治事務" "3.3、事務處理及案例" " 4、總結 " 1 ...
  • Microsoft SQL Server2008複習提高 一.Microsoft SQL Server 系統的體繫結構 1.Microsoft SQL Server2008由4個主要的部分組成,即4個服務: 資料庫引擎、分析服務、報表服務、集成服務。如下圖: 2.Microsoft SQL Serv ...
  • 程式在調用到資料庫的視圖時報錯,直接在資料庫中打開視圖時也報錯,類似: mysql 1449 : The user specified as a definer ('montor'@'%') does not exist mysql 1449 : The user specified as a de ...
  • 回到目錄 今天主要用了一個mongodb.driver里的分組,事實上在網上介紹這方面的文章非常少,以至於我在出現問題後,無法找到一個正確的解決方案,最後還是通過異常信息找到的解決方法,所以感覺自己更應該去寫一篇關於如何在C#驅動里進行聚合Aggregate的文章! 註意,目前mongodb for ...
  • 以Spark-Client模式運行,Spark-Submit時出現了下麵的錯誤: 意思是說Container要用2.2GB的記憶體,而虛擬記憶體只有2.1GB,不夠用了,所以Kill了Container。 我的SPARK-EXECUTOR-MEMORY設置的是1G,即物理記憶體是1G,Yarn預設的虛擬內 ...
  • 1. 先去官網下載一個安裝包 ,假設目錄/APP/ido 2. cd /APP/ido 3. tar -zxvf git-2.7.2.tar.gz 4. 安裝依賴 yum -y install gcc openssl openssl-devel curl curl-devel unzip perl ...
  • #code:utf-8 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header smtpser ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...