Samba文件共享服務器配置


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共享服務器(host1)

CentOS6.7

192.168.0.141

客戶端(host2)

CentOS6.7

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 | egrep -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服務主配置文件(/etc/samba/smb.conf)的最下面追加共享文件夾的配置參數:

[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服務報錯:無法訪問

這時我們需要關閉防火牆(或清空防火牆規則)和修改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主機驗證共享結果

使用第4步搜索主機,然后輸入第6步創建的SMB賬號和密碼即可進入了

使用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 ~]# smbclient -L 192.168.0.141 
Enter root's password: 
session setup failed: NT_STATUS_LOGON_FAILURE
輸入如下命令解決:
[root@host2 ~]# smbclient -L 192.168.0.141  -U smbuser
[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:寫的內容比較多,但是實際配置起來,步驟很少的,也比較簡單的!

  如果是外網訪問smb服務器,則需要設置端口轉發,445端口一般默認被封的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM