天天看點

在RHEL5下建構Samba檔案共享伺服器

一.samba服服務的安裝

 在RHEL5系統的安裝CD光牒中,與samba相關的軟體包有五個:

1.samba-3.0.23c-2.i386.rpm           //伺服器程式檔案

2.samba-client-3.0.33-3.14.el5.i386.rpm      //用戶端程式檔案

3.samba-common-3.0.33-3.14.el5.i386.rpm   //伺服器和用戶端的公共檔案

4.samba-swat-3.0.33-3.14.el5.i386.rpm   //Web方式的管理工具

5.system-config-samba-1.2.41-5.el5.noarch.rpm     //圖形界面管理程式(需要在X圖形環境中使用)

要實作samba伺服器和用戶端的的基本功能,前三個軟體包必須安裝。

二.samba伺服器的提供的服務

1.smbd:為客戶機提供伺服器中共享資源的通路,監聽TCP協定的139端口(SMB)、445端口(CIFS);

2.nmbd:提供基于NetBios主機名稱的解析,為Windos網絡中的主機進行名稱解析,監聽UDP協定的137~138端口;

通過“/etct/init.d/smb”控制samba服務的啟動與終止,無需單獨運作smbd或nmbd。

三samba服務的配置檔案

1.lmhosts:用來進行NETBIOS名靜态解析。

2.passdb.tdb:用來存放samba賬戶。

3.secrets.tdb:用來存放samba賬戶密碼。

4.smb.conf: samba服務主配置檔案

5.smbusers:使用者名映射檔案

四.smb.conf檔案常用配置項

workgroup:設定伺服器所在的工作組名稱,例如“WORKGRUOP”(windows主機預設工作組名)

server string:設定伺服器的說明文字,用于描述samba伺服器

cecurity:設定伺服器的安全級别,可設為以下四個值中的一個:share(可匿名通路)、user(需由本伺服器驗證使用者名及密碼)、server(由另一台伺服器驗證使用者名及密碼)、domain(由windows域控制器驗證使用者名及密碼)

log file:設定samba伺服器的日志檔案,預設設定為“/var/log/samba/%m.log”,%m表示用戶端主機名或IP位址

max log size:設定日志檔案的最大容量,預設為50,表示50KB

comment:設定對應共享目錄的注釋、說明資訊

path:設定對應共享目錄在伺服器中的檔案夾路徑

browseable:設定該共享目錄在“網路上的芳鄰”中是否可見,設定為no時相當于隐藏共享目錄

guest ok / public:設定是否所有人都可以通路共享目錄

writable:設定該共享目錄是否可寫

read only:設定該共享目錄是否隻讀

valid users:哪些使用者可以通路共享目錄

invalid users:哪些使用者不能通路共享目錄

write list:哪些使用者有寫入權限

read list:哪些使用者隻有讀取權限

directory mask:設定共享目錄中的寫入的目錄的權限

create mask:設定共享目錄中的寫入的檔案的權限

force group:指定存取資源時須以此設定的群組使用者進入才能存取(使用者名/@組名)

force user:指定存取資源時須以此設定的使用者進入才能存取(使用者名/@組名)

host allow:設定僅允許通路共享的網段或IP

host deny:設定僅拒絕通路共享的網段或IP

下面開始搭建samba檔案共享伺服器

實驗環境:

根據公司的資訊建設要求,需要在區域網路内部搭建一台檔案伺服器,便于對于資料集中管理備份。考慮到伺服器的運作效率及穩定、定全性,選擇在RHEL5作業系統中建構samba伺服器以提供檔案資源共享服務。

需求描述:

1.在“/var/share/”目錄中建立子目錄public、training、devel,用途如下:

public目錄用于存放公共資料,如公司的規章制度、員工手冊、工作用表格等檔案;

training目錄用于存放公司的技術教育訓練資料;

devel目錄用于存放項目開發資料;

2.将“/var/share/public”目錄共享為public,所有員工可匿名通路,但是隻能讀取檔案,不能寫入;

3.将“/var/share/training”目錄共享為peixun,隻允許管理者admin及技術部的員工隻讀訪部;

4.将“/var/share/devel”目錄共享為kaifa,技術部的員工都可以讀取該目錄中的檔案,但是隻有管理者admin及project項目組的員工有寫入權限。

搭建此伺服器的思路:

1.建立共享目錄對應的檔案夾:“/var/share/public”、“/var/share/training”、“/var/share/devel”,并設定相應權限。

2.建立相關系統組,使用者并建立samba使用者。

3.修改smb.conf配置檔案,添加共享設定。

4.重新開機smb服務。

5.驗證明驗結果。

實驗步驟:

1.在/var/sahre/目錄下建立public、training、devel,分别設定權限為777(所有使用者均有讀取、寫入、可執行權限),此時把權限設定最大沒有關系,可以在cmb.conf檔案中設定共享權限來進行限制(類似于windsow中的NTFS權限和共享權限設定),别外将/var/share/devel目錄的改為project并增加粘滞位權限(devel權限為1777),以便實作有權限的使用者在/var/share/devel目錄中隻能寫入目錄或檔案,不能删除他人的目錄或檔案。最終設定如下:

2.建立相關系統組,使用者(隻用于通路samba檔案伺服器)并建立samba使用者:

#groupadd tech                   //建立技術組(技術部員工)

#groupadd project              //建立項目組(項目組員工)

#useradd -M -g tech  lee       //建立系統使用者lee并加入tech組,并不為其建立宿主目錄

#useradd -M -g tech  tom       //建立系統使用者tom并加入tech組,并不為其建立宿主目錄

#useradd -M -g project  jarry       //建立系統使用者jarry并加入project組,并不為其建立宿主目錄

#useradd -M -g project  linda       //建立系統使用者linda并加入project組,并不為其建立宿主目錄

#smbpasswd -a lee                     //添加samba使用者lee

#smbpasswd -a tom                   //添加samba使用者tom

#smbpasswd -a jarry                  //添加samba使用者jarry

#smbpasswd -a linda                //添加samba使用者linda

#smbpasswd -a root                  //添加samba使用者root

3.修改smbusers檔案,配置使用者映射,以提高使用者安全性:

root = admin

lee = tech1

tom = tech 2

jarry = pro1

linda = pro2

4.修改smb.conf配置檔案,進行共享目錄的設定,經過配置檔案檢查工具:testparm指令檢查後顯示的配置清單如下(security設定為user):

<a href="http://blog.51cto.com/attachment/201008/135506285.jpg" target="_blank"></a>

5.重新開機samba服務:

service smb restart   或   /etc/init.d/smb restart

6.驗證明驗結果(使用windows客戶機進行驗證):

6.1.使用技術組使用者tech1登入,驗證是否有通路所有共享目錄的權限:(可通路所有共享目錄)

<a href="http://blog.51cto.com/attachment/201008/141314280.jpg" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201008/141344414.jpg" target="_blank"></a>

6.2.使用項目組使用者pro1登入,驗證是否隻有通路public和kaifa共享目錄在kaifa目錄的寫入權限:(驗證成功!)

<a href="http://blog.51cto.com/attachment/201008/142214364.jpg" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201008/142321708.jpg" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201008/142450491.jpg" target="_blank"></a>

6.3.使用項目組使用者pro2登入,驗證是否隻有通路public和kaifa共享目錄在kaifa目錄的寫入權限與粘滞位權限:(驗證成功!)

<a href="http://blog.51cto.com/attachment/201008/142636350.jpg" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201008/142825555.jpg" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201008/142953875.jpg" target="_blank"></a>

6.4.另外還可以使用linux客戶機進行驗證(略),相關指令如下:

6.4.1.使用smbclient工具登入samba伺服器

smbclient -L  伺服器IP/主機名            //檢視samba伺服器共享目錄

smbclient -U 使用者名   //伺服器IP/共享目錄       //以仿ftp用戶端方式登入通路samba伺服器中的共享目錄

6.4.2smbclient 指令說明                                                           

?或help [command]  : 提供關于幫助或某個指令的幫助

![shell command]  :執行所用的SHELL指令,或讓使用者進入 SHELL提示符

cd [目錄]  : 切換到伺服器端的指定目錄,如未指定,則 smbclient 傳回目前本地目錄

lcd [目錄] : 切換到用戶端指定的目錄;

dir 或ls : 列出目前目錄下的檔案;

exit 或quit : 退出smbclient        

get file1  file2 :從伺服器上下載下傳file1,并以檔案名file2存在本地機上;如果不想改名,可以把file2省略

mget file1 file 2 file 3  file n :從伺服器上下載下傳多個檔案;

md或mkdir 目錄 :在伺服器上建立目錄

rd或rmdir   目錄 : 删除伺服器上的目錄

put file1 [file2] :向伺服器上傳一個檔案file1,傳到伺服器上改名為file2;

mput file1 file2 filen :向伺服器上傳多個檔案

6.4.3.使用mount指令将共享目錄挂載到本地

mount -o username=使用者名 //伺服器IP/共享目錄    /本地主機目錄

搭建此samba伺服器所引發的問題:

做完這個實驗有點郁悶,按照實驗的需求描述,所有員工可以匿名通路public檔案夾,即不需要使用者名和密碼驗證就能看到public目錄,peixun和kaifa這兩個目錄需要使用者名及密碼驗證才能通路。也就是要實作匿名使用者與普通使用者并發登入samba伺服器。然而問題是在smb.conf主配置檔案中的global全局配置中security配置項隻要設定為user,就不能實作匿名通路public檔案,如果security配置項設定為share,雖然匿名方式能登入samba伺服器通路public目錄,但tech組和project組無法使用驗證方式通路peixun和kaifa這兩個目錄。

測試如下:

security配置項設定為user就不再示範了,不能進行匿名通路public目錄,以上實驗中已經驗證,隻進行security配置項設定為share時的測試:

配置檔案如下:

<a href="http://blog.51cto.com/attachment/201008/150047736.jpg" target="_blank"></a>

進行匿名通路:

<a href="http://blog.51cto.com/attachment/201008/150210119.jpg" target="_blank"></a>

通路kaifa和peixun這兩個目錄無法進行身份驗證:

<a href="http://blog.51cto.com/attachment/201008/150651317.jpg" target="_blank"></a>

為了解決這個問題,想了好多辦法,也在網上查找了這方面問題,雖然同樣有人在我之前提出這類問題,但還是沒有看到解決的方法,期待有高手指教一下!

本文轉自 kk5234 51CTO部落格,原文連結:http://blog.51cto.com/kk5234/385516,如需轉載請自行聯系原作者

繼續閱讀