一.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,如需轉載請自行聯系原作者