Linux下Samba詳解及安裝配置


1.簡介

2.安裝配置

3.在windows和linux系統上驗證

 

一、簡介

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

Samba服務程序是一款基於SMB協議並由服務端和客戶端組成的開源文件共享軟件,實現了Linux和windows系統間的文件共享。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置"NetBIOS over TCP/IP"可跨路由的使用samba所提供的功能。

 

samba的兩個服務及端口

1.nmbd 主要利用udp 137和138端口負責名稱解析的服務。

2.smbd 這個 進程 的主要功能就是用來管理 SAMBA 主機分享的目錄、文件和打印機等等。 主要利用 TCP 協定來傳輸資料,使用端口為 139 及 445。

 

Samba的套件

1.samba:這個套件主要包含了 SAMBA 的主要 daemon檔案 ( smbd 及 nmbd )、 SAMBA 的文件檔 ( document )、以及其它與 SAMBA 相關的logrotate 設定文件及開機預設選項檔案等;

2.samba-common:這個套件則主要提供了 SAMBA 的主要設定檔(smb.conf) 、 smb.conf 語法檢驗的測試程序 ( testparm )等等;

3.samba-client:這個套件則提供了當 Linux 做為SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 檔案格式的執行檔 smbmount等等。

 

配置文件相關參數(不同系統稍有差別):

[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

允許寫入操作

但此時SMB服務默認的驗證模式為user,我們需要先創建用戶數據庫后才可以正常使用。

 

 

二、安裝配置

1.yum安裝

# yum install samba

2.關閉selinux和iptables,或者添加規則

關閉:systemctl stop iptables

         setenforce 0

         或者將/etc/selinux/config下SELINUX=enforcing改為SELINUX=disabled

3.修改配置文件並添加系統用戶並將用戶添加到samba用戶數據庫中

        pam password change = no

       passwd chat =**NEW*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *successfully*

      passwd program = LANG=en_US/usr/bin/passwd %u

      unix password sync = yes 

      passdb backend = smbpasswd

      smb passwd file = /etc/samba/smbpasswd

    若/etc/samba/下沒有smbpasswd,會自動創建。

      

    #useradd smbuser

    #smbpasswd –a smbuser 添加用戶並設置密碼  

    

 

smbpasswd(選項)(參數)

選項

-a:向smbpasswd文件中添加用戶;

-c:指定samba的配置文件;

-x:從smbpasswd文件中刪除用戶;

-d:在smbpasswd文件中禁用指定的用戶;

-e:在smbpasswd文件中激活指定的用戶;

-n:將指定的用戶的密碼置空。

 

 4.在SMB服務主配置文件的最下面追加共享文件夾的配置參數:

      [database]

      comment = Do not arbitrarily modify the database file

      path = /database

      public = no

      writable = yes

 

      在根目錄下創建database目錄

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

    #systemctl restart smb
 

5.在Windows下驗證:

      

      登錄進來可以看到剛剛所創建的database目錄和用戶的家目錄。

      

      在smbuser下新建一個文件

      

      然后可以在服務器上用戶家目錄可以看到剛剛所創建的文件

      

 

      還可以通過磁盤映射使得局域網的訪問更加方便。

      

      

      至此在windows上簡單的部署成功。

 

6.在linux系統上驗證共享結果:

      1)在客戶端安裝cifs-utils軟件包

      #yum install –y cifs-utils

      2)創建掛載目錄,並且掛載

      # mkdir /database

      在root家目錄創建認證文件(依次為SMB用戶名、SMB用戶密碼、SMB共享域):

      # vim auth.smb

      username=smbuser

      password=123

      domain=MYGROUP

      # chmod -Rf 600 auth.smb 權限太高不安全

      配置其掛載信息(內容依次為遠程共享信息、本地掛載目錄、文件系統類型、認證文件以及開機自檢選項):

 

      # vim /etc/fstab

      //192.168.1.1222/database /database cifs credentials=/root/auth.smb 0 0

      # mount –a

 然后查看掛載目錄

  

      3)在服務器的/database目錄下創建目錄或者文件並在客戶端上查看是否成功

      服務器上創建111文件:

      

      若提示權限不足,把/database目錄權限修改為如下即可:

      

      注意所屬主與所屬組

      在客戶端查看:

      

      至此實現了Linux系統之間分享數據。


免責聲明!

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



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