Samba是一個能讓Linux系統應用Microsoft網絡通訊協議的軟件,而SMB是Server Message Block的縮寫,即為服務器消息塊 ,SMB主要是作為Microsoft的網絡通訊協議,后來Samba將SMB通信協議應用到了Linux系統上,就形成了現在的Samba軟件。后來微軟又把 SMB 改名為 CIFS(Common Internet File System),即公共 Internet 文件系統,并且加入了許多新的功能,這樣一來,使得Samba具有了更強大的功能。
Samba最大的功能就是可以用于Linux與windows系統直接的文件共享和打印共享,Samba既可以用于windows與Linux之間的文件共享,也可以用于Linux與Linux之間的資源共享,由于NFS(網絡文件系統)可以很好的完成Linux與Linux之間的數據共享,因而 Samba較多的用在了Linux與windows之間的數據共享上面。
SMB是基于客戶機/服務器型的協議,因而一臺Samba服務器既可以充當文件共享服務器,也可以充當一個Samba的客戶端,例如,一臺在Linux 下已經架設好的Samba服務器,windows客戶端就可以通過SMB協議共享Samba服務器上的資源文件,同時,Samba服務器也可以訪問網絡中 其它windows系統或者Linux系統共享出來的文件。
Samba在windows下使用的是NetBIOS協議,如果你要使用Linux下共享出來的文件,請確認你的windows系統下是否安裝了NetBIOS協議。
組成Samba運行的有兩個服務,一個是SMB,另一個是NMB;SMB是Samba 的核心啟動服務,主要負責建立 Linux Samba服務器與Samba客戶機之間的對話, 驗證用戶身份并提供對文件和打印系統的訪問,只有SMB服務啟動,才能實現文件的共享,監聽139 TCP端口;而NMB服務是負責解析用的,類似與DNS實現的功能,NMB可以把Linux系統共享的工作組名稱與其IP對應起來,如果NMB服務沒有啟動,就只能通過IP來訪問共享文件,監聽137和138 UDP端口。
一、安裝Samba
1.獲取Samba的源碼包并且進行解壓縮
源碼下載:Samba的官方網站,http://www.samba.org/samba/,目前最新版本已經是4.5.2了,我下載的是3.6.13版本的。
拷貝軟件包samba-3.6.13.tar.gz到/home/user/downloads目錄下
切換目錄
cd /home/user/downloads
解壓
tar -zxvf samba-3.6.13.tar.gz
2.配置
切換目錄
cd /samba-3.6.13/source3
執行配置命令
./configure
3.生成和安裝make && make install
在環境配置命令./configure成功執行后,可以運行命令
make
來生成二進制可執行文件,這可能需要五分鐘。成功生成可執行文件后,可以通過下面命令
make install
來進行安裝。系統默認的安裝路徑是/usr/local/samba。
4.配置動態鏈接庫路徑
安裝完成后,我們需要配置動態鏈接庫路徑,因為運行samba的進行smbd和nmbd需要到目錄/usr/local/samba/lib下的動態鏈接 庫文件。但是該目錄不是系統默認的動態鏈接庫文件搜索路徑,于是我們需要將該目錄添加到文件ld.so.conf中。執行下面的命令
vim /etc/ld.so.conf
然后,打開ld.so.conf文件,并在該文件中加入下面這一行內容
/usr/local/samba/lib
然后執行命令
ldconfig
來更新動態鏈接庫緩沖。
二、配置Samba
1.添加用戶
groupadd sw
useradd -g sw-s/sbin/nologin nickye
smbpasswd -a nickye
2.備份smb配置文件并編輯
cd /usr/local/samba
cp smb.conf smb.conf.bak
vim smb.conf
修改
#============================ Share Definitions ==============================
;[homes]
; comment = Home Directories
; browseable = no
; writable = yes
# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
; comment = Network Logon Service
; path = /usr/local/samba/lib/netlogon
; guest ok = yes
; writable = no
; share modes = no
# Un-comment the following to provide a specific roving profile share
# the default is to use the user's home directory
;[Profiles]
; path = /usr/local/samba/profiles
; browseable = no
; guest ok = yes
# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer
[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
# Set public = yes to allow user 'guest account' to print
guest ok = no
writable = no
printable = yes
# This one is useful for people to share files
;[tmp]
; comment = Temporary file space
; path = /tmp
; read only = no
; public = yes
# A publicly accessible directory, but read only, except for people in
# the "staff" group
[軟件部]
comment = Public Stuff
path = /home/data/data/sw
public = yes
writable = yes
printable = no
browseable = yes
write list = @sw
read list = @sw, @hw, @test, @prj, @md
valid users = @sw, @hw, @test, @prj, @md
create mask = 0775
directory mask = 0775
[硬件部]
comment = Public Stuff
path = /home/data/data/hw
public = yes
writable = yes
printable = no
browseable = yes
write list = @hw
read list = @sw, @hw, @test, @prj, @md
valid users = @sw, @hw, @test, @prj, @md
create mask = 0775
directory mask = 0775
[測試部]
comment = Public Stuff
path = /home/data/data/test
public = yes
writable = yes
printable = no
browseable = yes
write list = @test
read list = @sw, @hw, @test, @prj, @md
valid users = @sw, @hw, @test, @prj, @md
create mask = 0775
directory mask = 0775
[項目部]
comment = Public Stuff
path = /home/data/data/prj
public = yes
writable = yes
printable = no
browseable = yes
write list = @prj
read list = @sw, @hw, @test, @prj, @md
valid users = @sw, @hw, @test, @prj, @md
create mask = 0775
directory mask = 0775
[結構部]
comment = Public Stuff
path = /home/data/data/md
public = yes
writable = yes
printable = no
browseable = yes
write list = @md
read list = @sw, @hw, @test, @prj, @md
valid users = @sw, @hw, @test, @prj, @md
create mask = 0775
directory mask = 0775
[產品]
comment = Public Stuff
path = /home/data/data/product
public = yes
writable = yes
printable = no
browseable = yes
write list = @md
read list = @sw, @hw, @test, @prj, @md
valid users = @sw, @hw, @test, @prj, @md
create mask = 0775
directory mask = 0775
[共用]
comment = Public Stuff
path = /home/data/data/common
public = yes
writable = yes
printable = no
browseable = yes
write list = @sw, @hw, @test, @prj, @md
read list = @sw, @hw, @test, @prj, @md
valid users = @sw, @hw, @test, @prj, @md
create mask = 0777
directory mask = 0777
三、啟動Samba
samba有兩個主要的進程smbd和nmbd。smbd進程提供了文件和打印服務,而nmbd則提供了NetBIOS名稱服務和瀏覽支持,幫助SMB客戶定位服務器,處理所有基于UDP的協議。
1.運行samba的服務進程smbd和nmbd
/usr/local/samba/sbin/smbd –D
/usr/local/samba/sbin/nmbd –D
此時我們可以通過如下命令來進行查看服務是否已經啟動:
pgrep smbd
pgrep nmbd
2.設置開機自啟動
編輯文件 /etc/rc.local
添加兩行
/usr/local/samba/sbin/smbd –D
/usr/local/samba/sbin/nmbd –D