Samba服務器配置(1)--源碼安裝

 一、Samba概述 

1991年,Andrew Tridgwell通過對數據包的分析,而編寫了Samba這個自由軟件(Samba官方網站:http://www.samba.org,只要在類UNIX啓用Samba服務,類UNIX系統就好像變爲了Windows甜系統,可以利用SMB協議與Windows系統之間實現資源共享等功能。

Samba是開放源代碼的GPL自由軟件,可以說又是自由軟件界的一個重大貢獻。Samba的出現徹底解決了類UNIXWindows之間的資源共享與訪問,它以其簡潔、實用、靈活配置、功能強大的特點受到越來越廣泛的關注。也是因爲這個原因,現在幾乎所有的類UNIX都可以使用Samba服務。

由於Samba作爲類UNIX系統和Windows的通信橋樑,在設計上是讓類UNIX系統加入到Windows網絡中,而不是讓Windows加入類UNIX網絡中,因此需要了解一下Windows網絡的工作原理。Windows 9xWindows MeWindows NTSMB使用137UDP)、138UDP)、139TCP)、端口,Windows 2000以後的版本中使用445TCP)端口。

Samba服務主要提供以下功能:

1)共享UNIX系統上的資源(目錄、打印機)。

2)使用Windows上的共享資源(目錄、打印機)。

3)通過Windows對使用Samba資源的用戶進行認證。

4)使用WINS服務進行名稱解析及瀏覽。

5)通過SSL實現安全的數據傳輸。

Samba服務主要由以下兩個進程組成:

1nmbd:進行NetBIOS名稱解析,提供瀏覽服務顯示網絡上的共享資源列表。

2smbd:管理Samba服務器上的共享目錄、打印機等。主要是針對網絡上的共享資源進行管理服務。當要訪問服務器時,要查找共享文件,這時要靠smbd這個進程來管理數據傳輸。

Samba服務與Samba客戶端的工作流程如下:

1)協議協商:客戶端在訪問Samba服務器時,發送negprot命令包,告知目標計算機其支持的SMB類型。Samba服務器根據客戶端情況,選擇最優的SMB類型,並做出迴應。

2)建立連接:當SMB類型確認後,客戶端會發送session setup命令數據包,提交賬號、密碼,請求與Samba服務器建立連接。如果客戶端通過身份驗證,Samba服務器會對session setup報文做出迴應,併爲用戶分配唯一的UID,在客戶端與其通信。

3)訪問共享資源:客戶端訪問Samba共享資源時,發送tree connect命令數據包,通知服務器需要訪問的共享資源名,如果設置允許,Samba服務器會爲每個客戶與共享資源的連接分配TID,客戶端即可以訪問需要的共享資源。

4)斷開連接:共享完畢,客戶端向服務器發送tree disconnect報文關閉共享。

二、Samba服務源碼安裝 

1、下載 samba 源碼文件到目錄 /data1 下並解壓:

2、在 samba-3.6.1 下面有目錄 source3 source4 。這裏進入目錄 source3

3、配置編譯環境:

可以通過 #./configure --help 獲得幫助。根據個人情況選擇配置參數。

4、編譯安裝

#make

#make install                                                                                                                                                         

5、配置動態鏈接庫

/etc/ld.so.conf.d/ 目錄下創建 samba.conf 文件(文件只要以conf結尾即可),並輸入所安裝的 samba 庫位置的絕對路徑(/usr/local/samba/lib)即可;之後執行命令 #ldconfig 重新讀取 /etc/ld.so.conf.d 目錄下的配置文件。


注意:這一步必須要做,否則 smbd 不能啓動。

ldconfig命令的用途,主要是在默認搜尋目錄(/lib/lib64/usr/lib)以及動態庫配置目錄 /etc/ld.so.conf內的文件,搜索出可共享的動態鏈接庫(lib*.so*),進而創建出動態裝入程序(ld.so)所需的連接和緩存文件。

6、創建 samba的配置文件 smb.conf


注意:smb.conf 文件默認位置有點彆扭。

1)我一般會建立 /usr/local/samba/etc/ 目錄,把smb.conf放在這個目錄下,然後在 /usr/local/samba/lib/ 目錄下創建符號鏈接到etc/目錄下的 smb.conf 文件。

2)在配置編譯環境時可以指定 samba 服務配置文件的位置;如:#./configure --prefix=/usr/local/samba --sysconfdir=/usr/local/samba/etc

爲了先把 samba 服務運行起來進行驗證,可以先簡單修改一下 smb.conf 文件。找到security的地方,將默認 security=user 改爲 security=share

7、啓動smbdnmbd服務

切換到 /usr/local/samba/sbin 目錄執行命令 #./smbd -D #./nmbd -D 啓動服務,通過命令 #ps -ef | grep smbd #ps -ef | grep nmbd 檢查啓動的服務。


8、設置 samba 服務開機啓動

/etc/rc.d/rc.local 文件中加入以下 samba 服務啓動命令,並讓服務在後臺啓動。

/usr/local/samba/sbin/smbd -D &

/usr/local/samba/sbin/nmbd -D &


注:到這一步 samba 服務安裝已經完成。乘下就是根據你的實際生產環境來修改 smb.conf 文件配置服務了。

三、SELinux和防火牆常規配置

在配置生產環境前,可以先把防火牆和 selinux 安全機制關閉。等到生產環境測試成功後再開啓 selinux 和防火牆。不關閉也可以,只要記得配置就可以。這些根據你的個人習慣和實際情況。

=================================================================

我的習慣是:

1)關閉防火牆和 selinux 通過命令 #/etc/rc.d/init.d/ iptables stop 關閉防火牆,#setenforce 0臨時關閉selinux

2)配置生產環境實現當初設計功能並測試成功

3)開啓 selinux 安全機制並配置服務的安全上下文,使相應服務的功能符合當初的生產環境設計。

4)開啓防火牆,開啓相應服務的端口。

==================================================================

1selinux 相關配置

setsebool -P samba_domain_controller on 是否啓用域控

setsebool -P samba_enable_home_dirs on 如果不需要使用默認共享的用戶家目錄,可不執行。

setsebool -P samba_export_all_ro on 是否啓用所有的共享目錄爲只讀

setsebool -P samba_export_all_rw on 是否啓用所有的共享目錄可讀可寫

setsebool -P smbd_disable_trans on 如果需要共享光驅時啓用

chcon -R -t samba_share_t /bin/mount如果需要共享光驅時啓用

chcon -R -t samba_share_t /bin/umount如果需要共享光驅時啓用

setsebool -P swat_disable_trans on 需要使用 swat 時啓用

setsebool -P smbd_disable_trans on 如果使用 PAM 模塊進行訪問控制時啓用

chcon -R -t samba_share_t [目錄] 指定目錄安全上下文的類型。

下圖爲 RHEL Workstation 6.0 X86_64 SELinux 的布爾值:

如果想知道當前系統中的那些 samba 相關的安全上下文。可以通過命令 #seinfo 獲取相關信息。如果沒有這條命令,需安裝 setools-console.x86_64.rpm包(for RHEL)。如:獲取安全上下文中與 samba 相關的類型:#seinfo -t | grep samba;獲取用戶:seinfo -u;獲取角色:#seinfo -r;獲取布爾值:seinfo -b同命令:getsebool -a

下圖是獲取安全上下文中與 samba 相關的類型:

2、防火牆相關配置

允許微軟的NetBIOS協議(UDP 端口137 138TCP端口 139)還有不使用NetBIOS協議時通過TCP 445端口實現SMB文件共享。

編輯 iptables 文件 #vim /etc/sysconfig/iptables

加入下面四行內容:


下面是一段設置防火牆的腳本:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章