1. 程式人生 > >Linux環境下Samba檔案共享服務

Linux環境下Samba檔案共享服務

01

服務概述

在Windows網路環境中,主機之間進行檔案和印表機共享是通過微軟公司自己的SMB/CIFS網路協議實現的。SMB(Server Message Block,服務訊息塊)和CIFS(Common Internet File System,通用網際網路檔案系統)協議是微軟的私有協議,在Samba專案出現之前,並不能直接與Linux/unix系統進行通訊。

Samba是著名的開源軟體專案之一,它在Linux/unix系統中實現了微軟的SMB/CIFS網路協議,從而使得跨平臺的檔案共享變得更加容易。在部署windows、Linux/unix混合平臺的企業環境時,選用Samba可以很好的解決不同系統之間的檔案互訪問題。

02

安裝需要的升級包

samba                 服務端軟體

samba-client          客戶端軟體

samba-common            提供服務端和客戶端的公共元件

System-config-samba     samba 的圖形介面軟體包

Samba-swat            samba的web介面管理軟體包

03

Samba服務相關程序及埠號

/usr/sbin/smbd    為客戶機提供伺服器中的共享資源的訪問

/usr/sbin/nmbd    提供基於 NetBIOS 協議的主機名稱解析

Samba的指令碼      /etc/init.d/smb

Samba的埠:

Nmbd:(137138)NetBIOS 協議

smbd:139(SMB 協議)  445(CIFS 協議)

04

主配置檔案smb.conf

Samba服務的配置檔案位於/etc/samba目錄中,其中smb.conf是主配置檔案。在smb.conf檔案中,以“#”號開始的行表示註釋性的文字,以“;”開始的行表示是配置樣例。

在配置共享資料夾時,使用者可以參考檔案中提供的樣例行進行設定。刪除註釋行,樣例行及空行以外的內容,才是samba伺服器的有效配置。

[global]全域性配置:這部分配置項的內容對整個samba伺服器都有效。

[homes]宿主目錄共享設定:設定Linux使用者的預設共享,對應使用者的宿主目錄。當用戶訪問伺服器中與自己使用者名稱同名的共享目錄時,通過驗證後將會自動對映到該使用者的宿主資料夾中。

[printers]印表機共享設定:如果需要共享印表機裝置,可以在這部分進行設定。若需要在smb.conf檔案中設定新的共享資料夾,只需要增加一段如“[myshare]”開始的共享設定即可,其中“myshare”為使用者自定義的共享名。新的共享資料夾設定可以參考“[homes]”和“[printers]”部分的內容。

Samba伺服器的常見配置項及含義說明

配置項 說明
workgroup 設定伺服器所在的工作組名稱。
server string 設定伺服器的說明文字,用於描述samba伺服器。
security 設定伺服器的安全級別,share:可匿名訪問、user:需由本伺服器驗證使用者名稱及密碼、server:需指定另一臺伺服器來驗證使用者名稱及密碼、domain:由windows域控制器驗證使用者名稱及密碼。
log file

設定samba伺服器的日誌檔案,預設設定為“/var/log/smaba/log.%m",表示將日誌檔案儲存到/var/log/samba目錄中,按每個客戶機建立一個日誌檔案。其中“%m”變量表示客戶端主機名或ip地址。

passwd backend 設定共享賬戶檔案的型別,預設使用tdbsam(TDB資料庫檔案)。
comment 設定對應共享目錄的註釋、說明資訊。
path 設定對應共享目錄在伺服器中的資料夾路徑。
browseable 設定該共享目錄中“網路鄰居”中是否可見,設定為no時相當於隱藏共享目錄。
guest ok 設定是否所有人都可以訪問共享目錄,與“public”配置項的作用相同。
writable 設定該共享目錄是否可寫,與“read only”配置項的作用相反。

05

安裝服務

1.掛載光碟

[[email protected] ~]# mkdir /media/cdrom
[[email protected] ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[[email protected] ~]#

2.安裝軟體包

[[email protected] ~]# cd /media/cdrom/Packages/
[[email protected] Packages]# rpm -ivh samba-3.6.9-164.el6.x86_64.rpm 
warning: samba-3.6.9-164.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
  1:samba                  ########################################### [100%]
[[email protected] Packages]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-*
[[email protected] Packages]# rpm -ivh samba-client-3.6.9-164.el6.x86_64.rpm Preparing...                ########################################### [100%]
 package samba-client-0:3.6.9-164.el6.x86_64 is already installed
[[email protected] Packages]# rpm -ivh samba-common-3.6.9-164.el6.x86_64.rpm Preparing...                ########################################### [100%]
 package samba-common-0:3.6.9-164.el6.x86_64 is already installed
[[email protected] Packages]#

3.建立測試檔案備份smb.conf到自定義資料夾/beifen 下

[[email protected] Packages]# mkdir /gongxiang
[[email protected] Packages]# mkdir /beifen
[[email protected] Packages]# cp /etc/samba/smb.conf /beifen/

4.設定共享目錄[test]將samba的安全級別改為share。

[[email protected] Packages]# vim /etc/samba/smb.conf

此處省略配置檔案中的註釋行
workgroup = MYGROUP
server string = Samba Server Version %v 

此處省略配置檔案中的註釋行
log file = /var/log/samba/log.%m
max log size = 50

此處省略配置檔案中的註釋行
security = share
passdb backend = tdbsam

///[home]和[printers]全部註釋掉,否則共享時家目錄也會出現。
#[homes]
#       comment = Home Directories
#       browseable = no
#       writable = yes
#;      valid users = %S
#;      valid users = MYDOMAIN\%S

///設定共享目錄
[test]
       comment = Public Stuff
       path = /gongxiang
       public = yes
       read only = no
#       valid users = test1,test2
#       write list = test1
#       directory mask = 0755
#       create mask =0644

[181118]
       comment = Public Stuff
       path = /beifen
       public = yes
       read only = no

#[printers]
#       comment = All Printers
#       path = /var/spool/samba
#       browseable = no
#       guest ok = no
#       writable = no
#       printable = yes

5.關閉防火牆,啟動服務並監聽smb埠是否正常執行;

[[email protected] Packages]# service smb start
啟動 SMB 服務:                                  [確定]
[[email protected] Packages]# netstat -anpt | grep smb
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      48344/smbd          
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      48344/smbd          
tcp        0      0 :::139                      :::*                        LISTEN      48344/smbd          
tcp        0      0 :::445                      :::*                        LISTEN      48344/smbd          
[[email protected] Packages]# service iptables stop
iptables:將鏈設定為政策 ACCEPT:filter                  [確定]
iptables:清除防火牆規則:                           [確定]
iptables:正在解除安裝模組:                            [確定]
[[email protected] Packages]# setenforce 0

6.確認客戶端的ip地址及聯通性;

[[email protected] Packages]# ping 192.168.231.132
PING 192.168.231.132 (192.168.231.132) 56(84) bytes of data.
64 bytes from 192.168.231.132: icmp_seq=1 ttl=128 time=0.384 ms
^C
--- 192.168.231.132 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 953ms
rtt min/avg/max/mdev = 0.384/0.384/0.384/0.000 ms

7.訪問測試檔案,在windows中開啟檔案資源管理器輸入\\ip地址進行訪問;

  • Samba服務的預設安全級別為user,要求提供使用者驗證。對於匿名共享服務,一般將安全級別設為share。

  • 使用pdbedit工具可以建立、刪除Samba共享使用者。

  • 通過smbusers檔案可以為共享使用者賬號設定別名。

  • 使用smbclient工具可以查詢並登入、訪問共享資源,而使用mount命令可以將共享資料夾掛載到本地。