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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...