Samba服务全攻略
生活随笔
收集整理的這篇文章主要介紹了
Samba服务全攻略
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
From: http://redking.blog.51cto.com/27212/120934
1.1 Samba概述 接觸Linux我們聽的最多的就是Samba服務,為什么Samba應用這么廣泛哈~,原因是Samba最先在Linux和Windows兩個平臺之間架起了一座橋梁哈,正是由于Samba的出現,我們可以在Linux系統和Windows系統之間互相通信,比如拷貝文件、實現不同操作系統之間的資源共享等等,我們可以將其架設成一個功能非常強大的文件服務器,也可以將其架設成打印服務器提供本地和遠程聯機打印,甚至我們可以使用samba Server完全取代NT/2K/2K3中的域控制器,做域管理工作,使用也非常方便滴哈~既然samba這樣滴強大哈,我們還不趕快來把玩一下哈~~~ 1.2 Samba應用環境 文件和打印機共享:文件和打印機共享是Samba的主要功能,SMB進程實現資源共享,將文件和打印機發布到網絡之中,以供用戶可以訪問哈。
身份驗證和權限設置:smbd服務支持user mode和domain mode等身份驗證和權限設置模式,通過加密方式可以保護共享的文件和打印機。
名稱解析:Samba通過nmbd服務可以搭建NBNS(NetBIOS Name Service)服務器,提供名稱解析,將計算機的NetBIOS名解析為IP地址。
瀏覽服務:局域網中,Samba服務器可以成為本地主瀏覽服務器(LMB),保存可用資源列表,當使用客戶端訪問Windows網上鄰居時,會提供瀏覽列表,顯示共享目錄、打印機等資源。 1.3 Samba工作原理 Samba服務功能強大,這與其通信基于SMB協議有關。SMB不僅提供目錄和打印機共享,還支持認證、權限設置。在早期哈,SMB運行于NBT協議(NetBIOS over TCP/IP)上,使用UDP協議的137、138及TCP協議的139端口,后期SMB經過開發,可以直接運行于TCP/IP協議上,沒有額外的NBT層,使用TCP協議的445端口。 (1)Samba工作流程 當客戶端訪問服務器時,信息通過SMB協議進行傳輸,其工作過程可以分成四個步驟哈: 步驟1:協議協商 客戶端在訪問Samba服務器時,發送negprot指令數據包,告知目標計算機其支持的SMB類型。Samba服務器根據客戶端的情況,選擇最優的SMB類型,并做出回應。 --------negprot請求-------> 客戶端??????????????????????????????????????????? ?? 服務器 --------negprot響應-------> 步驟2:建立連接 當SMB類型確認后,客戶端會發送session setup指令數據包,提交帳號和密碼,請求與Samba服務器建立連接,如果客戶端通過身份驗證,Samba服務器會對session setup報文作出回應,并為用戶分配唯一的UID,在客戶端與其通信時使用。 --------session setup &X請求-------> 客戶端???????????????????????????????????????????????????????????? 服務器 --------session setup &X響應-------> 步驟3:訪問共享資源 客戶端訪問Samba共享資源時,發送tree connect指令數據包,通知服務器需要訪問的共享資源名,如果設置允許,Samba服務器會為每個客戶端與共享資源連接分配TID,客戶端即可訪問需要的共享資源哈。 --------tree connect &X請求-------> 客戶端?? ??????????????????????????????????????????????????????????? 服務器 --------tree connect &X響應-------> 步驟4:斷開連接 共享使用完畢,客戶端向服務器發送tree disconnect報文關閉共享,與服務器斷開連接。 --------tree disconnect請求-------> 客戶端 ?????????????????????????????????????????????????????????? 服務器 --------tree disconnect響應-------> (2)Samba相關進程 Samba服務是由兩個進程組成,分別是nmbd和smbd。 nmbd:其功能是進行NetBIOS名解析,并提供瀏覽服務顯示網絡上的共享資源列表。 smbd:其主要功能就是用來管理Samba服務器上的共享目錄、打印機等,主要是針對網絡上的共享資源進行管理的服務。當要訪問服務器時,要查找共享文件,這時我們就要依靠smbd這個進程來管理數據傳輸哈~~~ 2 安裝Samba服務
2.1 Samba所需軟件 在我們安裝Samba服務之前哈,我們先來了解一下其所需要的軟件包以及它們的用途哈~ samba-3.0.25b-0.el5.4.i386.rpm:該包為Samba服務的主程序包。服務器必須安裝該軟件包,后面的數字為版本號(我們安裝時使用的是RHEL5.1DVD版,如果是RHEL5.1CD版則該軟件包位于第二張RHEL5安裝光盤上)。 samba-client-3.0.25b-0.el5.4.i386.rpm:該包為Samba的客戶端工具,是連接服務器和連接網上鄰居的客戶端工具并包含其測試工具(該軟件包位于第一張RHEL5安裝光盤哈~) samba-common-3.0.25b-0.el5.4.i386.rpm:該包存放的是通用的工具和庫文件,無論是服務器還是客戶端都需要安裝該軟件包(這個軟件包也位于第一張RHEL5安裝光盤哈~) samba-swat-3.0.25b-0.el5.4.i386.rpm:當安裝了這個包以后,就可以通過瀏覽器(比如IE等哈)來對Samba服務器進行圖形化管理(這個軟件包位于第三張RHEL5安裝光盤哈)。
2.2 Samba的安裝 建議在安裝Samba服務之前,使用rpm -qa命令檢測系統是否安裝了Samba相關性軟件包:rpm -qa |grep samba 如果系統還沒有安裝Samba軟件包,我們可以使用rpm命令安裝所需軟件包。 安裝Samba主程序包:rpm -ivh samba-3.0.25b-0.el5.4.i386.rpm 其他軟件包的安裝方法也一樣哈~ 安裝Samba客戶端工具:rpm -ivh samba-client-3.0.25b-0.el5.4.i386.rpm 提示已經安裝過了哈~ 安裝Samba通用工具和庫文件:rpm -ivh samba-common-3.0.25b-0.el5.4.i386.rpm 其實我們一開始rpm qa |grep samba命令查詢時已經發現客戶端工具和通用工具及庫文件已經安裝了哈,我們上面兩步安裝就可以不要執行了哈,偶主要是演示一下哈~ 最后我們安裝Samba圖形化管理工具:rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm 我們發現缺少xinetd,OK,那我們安裝一下哈~:rpm -ivh xinetd-2.3.14-10.el5.i386.rpm 現在我們再來安裝Samba圖形化管理工具:rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm 現在我們看到Samba圖形化管理工具安裝成功了哈~ 所有軟件包安裝完畢之后,我們可以使用rpm命令進行查詢哈:rpm -qa | grep samba 3 Samba常規服務器配置?
在Samba服務安裝完畢之后,并不是直接可以使用Windows或Linux的客戶端訪問Samba服務器哈,我們還必須對服務器進行設置,下面需要做的操作就是說我們要告訴Samba服務器將哪些目錄共享出來給客戶端進行訪問,并根據需要設置其他選項哈,比如添加對共享目錄內容的簡單描述信息和訪問權限等具體設置。 作為我們Linux系統工程師了解及熟悉Samba服務器的搭建流程是至關重要滴。 基本的Samba服務器的搭建流程主要分為四個步驟: [1]、編輯主配置文件smb.conf,指定需要共享的目錄,并為共享目錄設置共享權限。 [2]、在smb.conf文件中指定日志文件名稱和存放路徑。 [3]、設置共享目錄的本地系統權限。 [4]、重新加載配置文件或重新啟動smb服務,使用配置生效哈~ 為了更好地理解設定流程中每一步的作用,下面通過一個圖例進行講解哈~ Samba工作流程: ---------(1)--------->????????????????? ----------(2)---------->smb.conf主配置文件 [客戶端]???????????????????? ???????????? [Samba服務器] -------- (4)---------->???????????????? ----------(3)---------->日志文件 (1)客戶端請求訪問Samba服務器上的Share共享目錄。 (2) Samba服務器接收到請求后,會查詢主配置文件smb.conf,看是否共享了Share目錄,如果共享了這個目錄則查看客戶端是否有權限訪問。 (3)Samba服務器會將本次訪問信息記錄在日志文件之中,日志文件的名稱和路徑都是需要我們設置。 (4)如果客戶端滿足訪問權限設置,則允許客戶端進行訪問。 實際上,Samba服務器和我們的圖書館有點相似之處哈,圖書館為讀者共享了圖書資源,而Samba服務器共享了我們的文件數據哈。 圖書館會有圖書分類,比如科普類、文學類等,并且圖書館會對借閱的圖書做限制,擁有資格的讀者,才可以借閱相應的圖書,當然讀者訪問圖書館時,圖書管理員會對他們的瀏覽、借閱信息進行記錄。 對于Samba服務器來說,其主配置文件smb.conf記錄了共享的目錄列表。比如share目錄,temp目錄等。對于每個共享目錄,需要配置相應權限,服務器會根據smb.conf文件中的設置,判斷客戶端是否有權限訪問,只有擁有權限才可以訪問服務器的資源。Samba服務器同樣會對用戶的行為進行記錄,每一次訪問的信息都會記錄在日志文件中,以便我們Linux管理員查詢哪些客戶端訪問過Samba服務器。 我們大致講了Samba工作流程后,下面我們將對Samba具體配置過程中遇到的重要概念進行詳細講解哈~~ 3.1 主要配置文件smb.conf 我們先從最重要的配置文件開始哦,Samba的配置文件一般就放在/etc/samba目錄中,主配置文件名為smb.conf。如果把Samba服務器比喻成一個公共圖書館,那么/etc/samba目錄中,那么主配置文件/etc/samba/smb.conf文件,就相當于這個圖書館的圖書總目錄,記錄著大量的共享信息和規則,所以該文件是samba服務非常重要的核心配置文件哈,幾乎絕大部分的配置文件都在該文件中進行滴。此外,在smb.conf這個配置文檔中本身就含有非常豐富的說明哈,所以在我們配置之前可以先看一下這樣說明性的文字。 我們先看一下smb.conf這個文件哈:vim /etc/samba/smb.conf smb.conf配置文件有288行內容,配置也相對比較復雜哈,不過我們不用擔心,Samba開發組按照功能不同,對smb.conf文件進行了分段劃分,條理非常地清楚哈。 下面我們來具體看下smb.conf的內容哈,smb.conf大致分為三個部分,我們來了解一下,其中我們經常要使用到的字段,我們將以實例解釋,其他字段我們整理到字段匯總,有興趣的可以去看下哈~~ 1、samba配置簡介 smb.conf文件的開頭部分為samba配置簡介,告訴我們smb.conf文件的作用及相關信息。 smb.conf中以“#”開頭的為注釋,為用戶提供相關的配置解釋信息,方便用戶參考,不用修改它哈。 smb.conf中還有以“;”開頭滴,這些都是samba配置的格式范例,默認是不生效滴,可以通過去掉前面的“;”并加以修改來設置想使用的功能。 2、Global Settings Global Settings設置為全局變量區域。那什么是全局變量哈?全局變量就是說我們只要在global時進行設置,那么該設置項目就是針對所有共享資源生效滴。這與以后我們學習的很多服務器配置文件相似哈。 該部分以[global]開始: smb.conf配置通用格式,對相應功能進行設置:字段=設定值? 下面我們說下[global]常用字段及設置方法: 1)設置工作組或域名稱 工作組是網絡中地位平等的一組計算機,可以通過設置workgroup字段來對samba服務器所在工作組或域名進行設置。 我們設置samba服務器的工作組為RHEL5 2)服務器描述 服務器描述實際上類似于備注信息哈,在一個工作組中,可能存在多臺服務器,為了方便用戶瀏覽,我們可以在server string配置相應描述信息,這樣用戶就可以通過描述信息知道自己要登錄哪臺服務器了啊~ 我們設置samba描述信息為“RHEL5 File Server”。 3)設置samba服務器安全模式 samba服務器有share、user、server、domain和ads 五種安全模式,用來適應不同的企業服務器需求。 (1)share安全級別模式 客戶端登錄samba服務器,不需要輸入用戶名和密碼就可以瀏覽samba服務器的資源,適用于公共的共享資源,安全性差,需要配合其他權限設置,保證samba服務器的安全性。 (2)user安全級別模式 客戶端登錄samba服務器,需要提交合法帳號和密碼,經過服務器驗證才可以訪問共享資源,服務器默認為此級別模式。 (3)server安全級別模式 客戶端需要將用戶名和密碼,提交到指定的一臺samba服務器上進行驗證,如果驗證出現錯誤,客戶端會用user級別訪問。 (4)domain安全級別模式 如果samba服務器加入windows域環境中,驗證工作服將由windows域控制器負責,domain級別的samba服務器只是成為域的成員客戶端,并不具備服務器的特性,samba早期的版本就是使用此級別登錄windows域滴。 (5)ads安全級別模式 當samba服務器使用ads安全級別加入到windows域環境中,其就具備了domain安全級別模式中所有的功能并可以具備域控制器的功能。 3、Share Definitions共享服務的定義 Share Definitions設置對象為共享目錄和打印機,如果我們想發布共享資源,需要對Share Definitions部分進行配置。Share Definitions字段非常豐富,設置靈活。 我們先來講下幾個最常用的字段哈~ 1)設置共享名 共享資源發布后,必須為每個共享目錄或打印機設置不同的共享名,給網絡用戶訪問時使用,并且共享名可以與原目錄名不同。 共享名設置非常簡單:[共享名] 我們來看個例子,Samba服務器中有個目錄為/share,需要發布該目錄成為共享目錄,定義共享名為public 2)共享資源描述 網絡中存在各種共享資源,為了方便用戶識別,可以為其添加備注信息,以方便用戶查看時知道共享資源的內容是什么哈。 格式:comment = 備注信息 舉個例子哈,samba服務器上有個/sales目錄存放公司銷售部的數據,為了對公司部門員工進行區分,可以添加備注信息。 3)共享路徑 共享資源的原始完整路徑,可以使用path字段進行發布,務必正確指定。 格式:path =? 絕對地址路徑 samba服務器上/share/tools目錄存放常用工具軟件,需要發布該目錄為共享,我們可以這樣做。 4)設置匿名訪問 共享資源如果對匿名訪問進行設置,可以更改public字段。 格式: public = yes???? #允許匿名訪問 public = no????? #禁止匿名訪問 samba服務器/share共享目錄允許匿名用戶訪問,可以這樣設置。 5)設置訪問用戶 如果共享資源存在重要數據的話,需要對訪問用戶審核,我們可以使用valid users字段進行設置哈~ 格式: valid users = 用戶名 valid users = @組名 我們來看下面一個例子哈,samba服務器/share/tech目錄存放了公司技術部數據,只允許技術部員工和經理訪問,技術部組為tech,經理帳號為gm 6)設置目錄只讀 共享目錄如果限制用戶的讀寫操作,我們可以通過readonly實現哈~ 格式: readonly = yes??? #只讀 readonly = no???? #讀寫 samba服務器公共目錄/public存放大量共享數據,為保證目錄安全我們只允許讀取,禁止寫入哈~ 7)設置目錄可寫 如果共享目錄允許用戶寫操作,可以使用writable或write list兩個字段進行設置哈~ writable格式: writable = yes????? #讀寫 writable = no?????? #只讀 write list格式: write list = 用戶名 write list = @組名 注意: [homes]為特殊共享目錄,表示用戶主目錄。 [printers]表示共享打印機。 3.2 Samba服務日志文件 日志文件對于samba非常滴重要哈,它存儲著客戶端訪問samba服務器的信息,以及samba服務的錯誤提示信息等,可以通過分析日志,幫助解決客戶端訪問和服務器維護等問題。 在/etc/samba/smb.conf文件中,log file為設置samba日志的字段。 samba服務的日志文件默認存放在/var/log/samba/中,其中samba會為每個連接到samba服務器的計算機分別建立日志文件。 我們啟動smb服務:/etc/rc.d/init.d/smb start 使用ls -a命令可以查看日志的所有文件。 其中,當samba服務器剛剛建立好后,只有兩個文件,分別是nmbd.log和smbd.log,它們分別記錄nmbd和smbd進程的運行日志。 nmbd.log記錄nmbd進程的解析信息。
smbd.log記錄用戶訪問samba服務器的問題,以及服務器本身的錯誤信息,可以通過該文件獲得大部分的samba維護信息。 當客戶端通過網絡訪問samba服務器后,會自動添加客戶端的相關日志。 所以哈,我們Linux管理員可以根據這些文件來查看用戶的訪問情況和服務器的運行情況。另外當samba服務器工作異常時,也可以通過/var/log/samba/下的日志進行分析哈~ 3.3 Samba服務密碼文件 samba服務器發布共享資源后,客戶端訪問samba服務器,需要提交用戶名和密碼進行身份驗證,驗證合格后才可以登錄。samba服務為了實現客戶身份驗證功能,將用戶名和密碼信息存放在/etc/samba/smbpasswd中,在客戶端訪問時,將用戶提交資料與smbpasswd存放的信息進行比對,如果相同,并且samba服務器其他安全設置允許,客戶端與samba服務器連接才能建立成功哈~ 那如何建立samba帳號呢?偶在說之前先強調一點哈,samba帳號并不能直接建立滴,需要先建立Linux同名的系統帳號。比如如果我們要建立一個名為michael的samba帳號,那Linux系統中必須提前存在一個同名的michael系統帳號。 samba中添加帳號命令為smbpasswd,命令格式: smbpasswd -a 用戶名 我們來測試下,在samba服務器中添加samba帳號redking,我們建立samba帳號之前必須先添加相對應的系統帳號,使用useradd命令建立帳號redking,然后執行passwd命令為帳號redking設置密碼哈~最后我們添加redking用戶的samba帳號,執行smbpasswd添加帳號redking到samba配置文件中。 OK,Samba帳號添加完畢哈,如果我們在添加samba帳號時輸入完兩次密碼出錯:Failed to modify password entry for user amy,就像下面這樣 這是因為Linux本地用戶里沒有amy這個用戶,我們在系統里面添加一下就OK了哈~ 呵,所以哈,務必要注意在建立samba帳號之前,一定要先建立一個與samba帳號同名的系統帳號。 我們經過上面的設置,再次訪問samba共享文件時就可以使用redking或amy帳號訪問了。 注意:解決/etc/samba目錄下沒有smbpasswd文件 原因:samba啟用了tdbsam驗證。 解決:smb.conf文件中注釋掉passdb backend = tdbsam 一行,加上smb passwd file = /etc/samba/smbpasswd,然后保存退出。 這樣再建立用戶就產生了/etc/samba/smbpasswd文件了。 ? 使用cat命令查看smbpasswd文件滴內容哈~:cat /etc/samba/smbpasswd 3.4 Samba的啟動與停止 1)samba服務的啟動 service smb start 或 /etc/rc.d/init.d/smb start 2)samba服務的停止 service smb stop 或 /etc/rc.d/init.d/smb stop 3)samba服務的重啟 service smb restart 或 /etc/rc.d/init.d/smb restart 4)samba服務配置重新加載 service smb reload 或 /etc/rc.d/init.d/smb reload 注意:Linux服務中,當我們更改配置文件后,一定要記得重啟服務哈,讓服務重新加載配置文件,這樣新的配置才可以生效哈~ 5)自動加載samba服務 chkconfig 我們可以使用chkconfig命令自動加載smb服務:
chkconfig --level 3 smb?on????? #運行級別3自動加載
chkconfig --level 3 smb off???? #運行級別3不自動加載 ntsysv 我們還可以使用ntsysv命令利用文本圖形界面對smb自動加載進行配置,如果要自動加載smb可以在其前面選中“*”,否則取消掉就不自動加載了哈~ 3.5 share服務器實例及詳解 ok,上面已經對samba的相關性配置文件講了個大概哈,現在我們通過實例來掌握一下samba具體使用流程來搭建samba服務器。 如果公司現在用一個工作組Workgroup需要添加samba服務器作為文件服務器哈,并發布共享目錄/share,共享名為public,這個共享目錄允許所有公司員工訪問。 我們分析下哈,這個案例屬于samba的基本配置,我們可以實用share安全級別模式,既然允許所有員工訪問,則需要為每個用戶建立一個samba帳號,那么如果公司擁有大量用戶呢?1000個用戶,100000個用戶,一個個設置會非常滴麻煩哈,我們可以通過配置security = share來讓所有用戶登錄時采用匿名帳戶nobody訪問,這樣實現起來非常簡單哈~~~ 1) 修改samba主配置文件smb.conf vim /etc/samba/smb.conf (1).設置samba服務器工作組名為Workgroup (2).添加samba服務器注釋信息為"File Server" (3).設置samba安全級別為share模式,允許用戶匿名訪問
| #================= Global Settings ======================= [global] # ----------------------- Netwrok Related Options ------------------------- # # workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH # # server string is the equivalent of the NT De.ion field # # netbios name can be used to specify a server name not tied to the hostname # # Interfaces lets you configure Samba to use multiple interfaces # If you have multiple network interfaces then you can list the .es # you want to listen . (never omit localhost) # # Hosts Allow/Hosts Deny lets you restrict who can connect, and you can # specifiy it as a per share option as well # ??????? workgroup = Workgroup???????? #設置samba服務器工作組名為Workgroup ??????? server string = File Server?????? #添加samba服務器注釋信息為"File Server" ;?????? netbios name = MYSERVER ;?????? interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 ;?????? hosts allow = 127. 192.168.12. 192.168.13. # --------------------------- Logging Options ----------------------------- # # Log File let you specify where to put logs and how to split them up. # # Max Log Size let you specify the max size log files should reach # logs split per machine ;?????? log file = /var/log/samba/%m.log ??????? # max 50KB per log file, then rotate ;?????? max log size = 50 # ----------------------- Standalone Server Options ------------------------ # # Scurity can be set to user, share(deprecated) or server(deprecated) # # Backend to store user information in. New installations should # use either tdbsam or ldapsam. smbpasswd is available for backwards # compatibility. tdbsam requires no further configuration. security = share???????? #設置samba安全級別為share模式,允許用戶匿名訪問 ;?????? passdb backend = tdbsam ??????? smb passwd file = /etc/samba/smbpasswd # ----------------------- Domain Members Options ------------------------ # # Security must be set to domain or ads # # Use the realm option .ly with security = ads # Specifies the Active Directory realm the host is part of # # Backend to store user information in. New installations should # use either tdbsam or ldapsam. smbpasswd is available for backwards # compatibility. tdbsam requires no further configuration. # |
偶這里強調一下細節,重啟samba服務,雖然可以讓配置生效,但是restart是先關閉samba服務,再開啟服務哈,這樣如果在公司網絡運營中肯定會對客戶端員工的訪問造成影響,建議使用reload命令重新加載配置文件使其生效,這樣不需要中斷服務就可以重新加載配置哈~ samba服務器通過以上設置,現在用戶就可以不需要輸入帳號和密碼就可以直接登錄samba服務器并訪問public共享目錄哈~ 我們測試下,在/share目錄下建個文件試下:touch /share/test_sharemode_samba.tar 我們看下效果哈~ 3.6 user服務器實例及詳解 上面的案例我們講了share安全級別模式的samba服務器哈,可以實現用戶方便滴通過匿名方式訪問,但是如果在我們samba服務器上存在重要文件的目錄,為了保證系統安全性及資料保密性哈,我們就必須對用戶進行篩選,允許或禁止相應的用戶訪問指定滴目錄哈,這里share安全級別模式就不能滿足我們這樣的實際要求了。 實現用戶身份驗證的方法很多,我們可以將安全級別模式配置為user、server、domain和ads,但是最常用的還是user安全級別模式哈,下面偶就來看下user這個安全級別模式的配置哈~ 如果公司有多個部門,因工作需要,我們就會分門別類的建立相應部門的目錄,并將銷售部的資料存放在samba服務器的/companydata/sales/目錄下,集中管理,以便銷售人員瀏覽,并且該目錄只允許銷售部員工訪問。 我們分析下,在/companydata/sales/目錄中存放有銷售部的重要數據,為了保證其他部門無法查看其內容,我們需要將全局配置中security設置為user安全級別,這樣就啟用了samba服務器的身份驗證機制,然后在共享目錄/companydata/sales下設置valid users字段,配置只允許銷售部員工能夠訪問這個共享目錄。 1)添加銷售部用戶和組并添加相應samba帳號 使用groupadd命令添加sales組,然后執行useradd命令和passwd命令添加銷售部員工的帳號及密碼哈~ 接下來為銷售部成員添加相應samba帳號 2)修改samba主配置文件smb.conf (1).設置user安全級別模式 (2).設置銷售部共享目錄為sales (3).指定共享目錄為絕對路徑為/companydata/sales (4).設置可以訪問的用戶為sales組成員 3)重新加載配置 上個案例講過了哈,要讓修改后的Linux配置文件生效,我們就要重新加載配置。 #service smb reload 現在我們測試下 輸入銷售部的帳號及密碼進行登錄 打開sales共享目錄 這樣銷售部成員就可以進行訪問sales共享目錄下的數據了 4 Samba高級服務器配置 上面偶說了下samba滴常規配置哈,這些已經可以使用企業內部滴資料通過網絡共享并分配適當滴共享權限來管理共享目錄,但這僅僅對于很多大型企業或安全要求高滴來說還是不能滿足其需求哈,所以偶下面就來講下samba滴高級服務器配置讓我們搭建滴samba服務器功能更強大,管理更靈活,我們滴數據也更安全哈~ 4.1 用戶賬號映射 前面已經說過,samba的用戶帳號信息是保存在smbpasswd文件中滴,而且可以訪問samba服務器的帳號也必須對應一個同名的系統帳號?;谶@一點,所以哈,對于一些hacker來說,只要知道samba服務器滴samba帳號,就等于是知道了Linux系統帳號,只要crack其samba帳號密碼加以利用就可以攻擊samba服務器哈。所以我們要使用用戶帳號映射這個功能來解決這個問題哈~~~ 用戶帳號映射這個功能需要建立一個帳號映射關系表,里面記錄了samba帳號和虛擬帳號的對應關系,客戶端訪問samba服務器時就使用虛擬來登錄哈。 1)編輯主配置文件/etc/samba/smb.conf 在global下添加一行字段username map = /etc/samba/smbusers開啟用戶帳號映射功能。 2)編輯/etc/samba/smbusers smbusers文件保存帳號映射關系,其有固定滴格式: samba帳號 = 虛擬帳號(映射帳號) 帳號redking就是我們上面建立的samba帳號(同時也是Linux系統帳號),51cto及51blog就是映射滴帳號名(虛擬帳號),帳號redking在我們訪問共享目錄時只要輸入51cto或51blog就可以成功訪問了,但是實際上訪問samba服務器的還是我們滴redking帳號,這樣一來就解決了安全問題哈~我們繼續。 3)重啟samba服務:service smb restart 4)驗證效果哈~ 輸入我們定義的映射帳號51cto,注意我們沒有輸入帳號redking哈~,映射帳號51cto滴密碼和redking帳號一樣哈~ 現在就可以通過映射帳號瀏覽共享目錄了哈~ 注意:強烈建議不要將samba用戶的密碼與本地系統用戶的密碼設置成一樣哈,可以避免非法用戶使用samba帳號登錄系統非法破壞哈~~~ 4.2 客戶端訪問控制 對于samba服務器的安全性,我們已經說過可以使用valid users字段去實現用戶訪問控制,但是如果企業龐大,存在大量用戶的話,這種方法操作起來就顯得比較麻煩哈~比如samba服務器共享出一個目錄來訪問,但是要禁止某個IP子網或某個域的客戶端訪問此資源,這樣滴情況使用valid users字段就無法實現客戶端訪問控制。 下面我們就講下使用hosts allow和hosts deny兩個字段來實現該功能。而用好這兩個字段滴關鍵在于熟悉和清楚它們的使用方法和作用范圍哈 hosts allow 和 hosts deny 的使用方法? 1)hosts allow 和 hosts deny 字段的使用 hosts allow 字段定義允許訪問的客戶端 hosts deny 字段定義禁止訪問的客戶端 2)使用IP地址進行限制 比如公司內部samba服務器上共享了一個目錄sales,這個目錄是存放銷售部的共享目錄,公司規定192.168.0.0/24這個網段的IP地址禁止訪問此sales共享目錄,但是其中192.168.0.24這個IP地址可以訪問。 先將安全級別模式由user改為share 這里我們添加hosts deny和hosts allow字段 hosts deny = 192.168.0. 表示禁止所有來自192.168.0.0/24網段的IP地址訪問 hosts allow = 192.168.0.24 表示允許192.168.0.24這個IP地址訪問 當host deny和hosts allow字段同時出現并定義滴內容相互沖突時,hosts allow優先?,F在設置的意思就是禁止C類地址192.168.0.0/24網段主機訪問,但是允許192.168.0.24主機訪問。 測試下效果,如果是192.168.0.24的客戶端就可以正常訪問 如果是其他客戶端滴話就是這樣的效果 如果想同時禁止多個網段滴IP地址訪問此服務器可以這樣設置 hosts deny = 192.168.1. 172.16. 表示拒絕所有192.168.1.0網段和172.16.0.0網段的IP地址訪問sales這個共享目錄。 hosts allow = 10. 表示允許10.0.0.0網段的IP地址訪問sales這個共享目錄。 注意:當需要輸入多個網段IP地址的時候,需要使用“空格”符號隔開。 3)使用域名進行限制 我們來看這樣一個例子哈,公司samba服務器上共享了一個目錄public,公司規定.sale.com域和.net域的客戶端不能訪問,并且主機名為free的客戶端也不能訪問。 hosts deny = .sale.com .net free 表示禁止.sale.com域和.net域及主機名為free的客戶端訪問public這個共享目錄。 注意:域名和域名之間或域名和主機名之間需要使用“空格”符號隔開。 4)使用通配符進行訪問控制 samba服務器共享了一個目錄security,規定所有人不允許訪問,只有主機名為boss的客戶端才可以訪問。對于這樣一個實例哈,我們就可以通過使用通配符的方式來簡化配置。 hosts deny = All 表示所有客戶端,并不是說允許主機名為ALL的客戶端可以訪問哈~~~ 常用的通配符還有“*”,“?”,“LOCAL”等。 還有一種比較有意思的情況,如果我們規定所有人不能訪問security目錄,只允許192.168.0.0網段的IP地址可以訪問,但是192.168.0.100及192.168.0.78的主機是要禁止訪問滴。我們可以使用hosts deny禁止所有用戶訪問,再設置hosts allow允許192.168.0.0網段主機,但當hosts deny和hosts allow同時出現而且沖突滴時候,hosts allow生效,如果這樣滴話,那么允許192.168.0.0網段的IP地址可以訪問,但是192.168.0.100及192.168.0.78的主機禁止訪問就無法生效了哈~我們可以使用EXCEPT進行設置。 hosts allow = 192.168.0. EXCEPT 192.168.0.100 192.168.0.78 表示允許192.168.0.0網段IP地址訪問,但是192.168.0.100和192.168.0.78除外哈~ hosts allow 和 hosts deny 的作用范圍? hosts allow和hosts deny設置在不同的位置上,它們的作用范圍是不一樣滴。如果設置在[global]里面,表示對samba服務器全局生效哈,如果設置在目錄下面,則表只對這個目錄生效。 這樣設置表示只有192.168.0.88才可以訪問samba服務器,全局生效哈~ 這樣設置就表示只對單一目錄security生效,只有192.168.0.88才可以訪問security目錄里面的資料。 4.3 設置Samba的權限 到這里我們已經可以對客戶端訪問進行有效的控制,但是對于能訪問的客戶端來說,我們還是不能靈活方便滴控制他們訪問共享資源的權限,比如boss或gm這樣的帳號可以對某個共享目錄具有完全控制權限,其他帳號只有只讀權限哈,這樣的情況我們就可以使用write list字段來實現哈~ 例如公司samba服務器上有個共享目錄tech,公司規定只有boss帳號和tech組的帳號可以完全控制,其他人只有只讀權限。如果只用writable字段則無法滿足這個實例的要求,因為當writable = yes時,表示所有人都可以寫入了哈,而當writable = no時表示所有人都不可以寫入。這時我們就需要用到write list字段哈~ write list = boss,@tech 就表示只有boss帳號和tech組成員才可以對tech共享目錄有寫入權限哈(其中@tech就表示tech組)。 我們來看下writable和write list之間的區別:
| 字段 | 值 | 描述 |
| writable | yes | 所有帳號都允許寫入 |
| writable | no | 所有帳號都禁止寫入 |
| write list | 寫入權限帳號列表 | 列表中的帳號允許寫入 |
5.1 Linux客戶端訪問Samba共享 linux客戶端訪問服務器主要有兩種方法 1)使用smbclient命令 在Linux中,samba客戶端使用smbclint這個程序來訪問samba服務器時,先要確保客戶端已經安裝了samba-client這個rpm包。 smbclient可以列出目標主機共享目錄列表 smbclient命令格式:smbclient -L 目標IP地址或主機名 -U 登錄用戶名%密碼 當我們查看rhel5(192.168.0.188)主機的共享目錄列表時,提示輸入密碼,這時候可以不輸入密碼哈,我們直接按回車,這樣表示匿名登錄,然后就會顯示匿名用戶可以看到的共享目錄列表了哈~ smbclient -L rhel5或者smbclient -L 192.168.0.188 如果想使用samba帳號相看samba服務器端共享了什么目錄,我們可以加上-U參數哈~,后面跟上用戶名%密碼。 smbclient -L 192.168.0.188 -U boss%boss 這樣就顯示了只有boss帳號才顯示的tech技術部共享目錄。 注意:不同用戶使用smblient瀏覽的結果可能是不一樣滴,這要根據服務器設置的訪問控制權限而定哈~ 我們還可以在使用smbclient命令行共享訪問模式瀏覽共享的資料哈 smbclient命令行共享訪問模式命令格式: smbclient //目標IP地址或主機名/共享目錄 -U 用戶名%密碼 上面已經顯示了服務器上有一個tech共享目錄,我們來查看一下里面的內容哈~ 另外smbclient登錄samba服務器后,我們可以使用help查詢所支持的命令。 2)使用mount命令掛載共享目錄 mount命令掛載共享目錄格式: mount -t cifs //目標IP地址或主機名/共享目錄名稱 掛載點 -o username=用戶名 [root@client ~]# mount -t cifs //192.168.0.188/tech /mnt/sambadata/ -o username=boss%boss 這表示掛載192.168.0.188主機上的共享目錄tech到/mnt/sambadata目錄下,cifs就是samba所使用的文件系統哈 5.2 Windows客戶端訪問Samba共享 這個就比較簡單了哈,我們也一直用這個訪問微軟的共享目錄哈,上面其他也已經講過了哈,方法就是在開始運行里面使用UNC路徑直接進行訪問哈~~也可以到網上鄰居里面找,但是偶不太喜歡用這個方法,因為速度太慢哈。還是覺得在開始--運行或是直接在資源管理器或IE的地址欄里面輸入UNC路徑比較快哈~ 1)在開始--運行里面使用UNC路徑直接進行訪問 2)映射網絡驅動器訪問samba服務器共享目錄 輸入tech共享目錄的地址 輸入可以訪問tech共享目錄的samba帳號和密碼 這時在我的電腦的網絡驅動器中就可以看到映射的Z盤了哈~ 打開Z盤就可以訪問tech共享目錄里面的資源。 6 Samba的打印共享 默認情況下,samba的打印服務是開放滴~所以我們只要把打印機安裝好后客戶端的用戶就可以使用打印機了。 1)設置global配置項? 修改smb.conf全局配置,開啟打印共享功能 2)設置printers配置項 使用默認設置就可以讓客戶端正常使用權打印機了哈,需要注意的就是printable一定要設置成yes哈,如果不設置成yes那還打什么哈~~~path字段定義打印機隊列,可以根據需要自己定制哈,另外共享打印和共享目錄不一樣哈,安裝完打印機后必須重新啟動samba服務,否則客戶端可能無法看到共享的打印機。如果設置只允許部分員工使用打印機,我們可以使用valid users、hosts allow或hosts deny字段來實現哈,這些在講共享目錄時已經說過了,不清楚可以再翻翻看哈~~下面進入samba企業實戰與應用。 7 Samba企業實戰與應用
7.1 企業環境及需求 samba服務器目錄: 企業數據目錄:/companydata 公共目錄:/companydata/share 銷售部目錄:/companydata/sales 技術部:/companydata/tech 企業員工情況: 總經理:gm 銷售部:銷售部經理 redking、員工 sky、員工 jane 技術部:技術部經理 michael、員工 bill、員工 joy 搭建samba文件服務器,建立公共共享目錄,允許所有人訪問,權限為只讀,為銷售部和技術部分別建立單獨的目錄,只可以總經理和相應部門員工訪問,并且公司員工禁止訪問非本部門的共享目錄。這是個典型的企業文件服務器案例哈。 總經理-----------------------
???????????????????????????? ????????????? |
銷售部-------------------交換機--------------------samba服務器
????????????????????????????????? ???????? |
技術部----------------------- 7.2 需求分析 對于建立公共目錄public字段就可以實現匿名訪問,員工只能訪問本部門的共享目錄,禁止訪問非本部門的共享目錄,我們可以通過設置目錄共享字段“browseable = no”及字段“valid users”來實現其隱藏功能和相應的訪問權限。這樣設置不能很好得解決同一目錄多種需求的權限設置,所以我們需要建立獨立配置文件,為每個部門建立一個組后并為每個組建立配置文件來實現隔離用戶權限會比較靈活哈~ 7.3 解決方案 1)建立各部門專用共享目錄 使用mkdir建立需求的共享目錄以便分門別類的存儲相應資料。 同時設置/companydata共享目錄的用戶權限 2)添加samba服務器描述及設置smbpasswd文件 默認/etc/samba/目錄下沒有smbpasswd文件,我們要先關閉samba的tdbsam驗證。 解決方法:在smb.conf文件中注釋掉passdb backend = tdbsam 一行,為了指定samba用戶的驗證我們加上這一條smb passwd file = /etc/samba/smbpasswd,然后保存退出。 3)添加用戶和組 先建立銷售部組sales,技術部組tech,然后使用useradd命令添加總經理帳號gm及各個員工的帳號并加入相應的用戶組。 ? 接著使用smbpasswd命令添加samba用戶 呃~~~不好意思哈~~~帳號gm的samba用戶忘記添加了,現在補上哈~ 4)配置smb.conf文件 (1)建立單獨配置文件 用戶配置文件使用用戶名命令哈,組配置文件使用組名命令。 (2)設置主配置文件smb.conf 這里我們配置smb.conf主配置文件,在global中添加相應字段哈,確保samba服務器的主配置文件可以調用獨立的用戶配置文件和組配置文件。 include = /etc/samba/%U.smb.conf表示使samba服務器加載/etc/samba目錄下格式為“用戶名.smb.conf”的配置文件。 include = /etc/samba/%G.smb.conf表示使samba服務器加載/etc/samba目錄下格式為“組名.smb.conf”的配置文件。 設置共享目錄/companydata/share (5)設置總經理gm配置文件 vim /etc/samba/gm.smb.conf (6)設置銷售部組sales配置文件 vim /etc/samba/sales.smb.conf (7)設置技術部組tech配置文件 vim /etc/samba/tech.smb.conf (8)開啟samba服務 service smb start (9)測試 我們先用gm帳號登錄測試 可以全部看到共享目錄。 /companydata/share目錄只讀 注意: 最好禁用RHEL5中的selinux功能,否則會出現些莫名其妙滴問題,比如下面的帳號gm明明對共享目錄sales和tech是777的權限,但就是只能創建文件卻不能創建文件夾哈~ 關閉selinux,打開selinux配置文件/etc/selinux/config設置selinux = disabled后保存退出并重啟系統。 ? 查看selinux當前狀態sestatus -v 現在我們就可以創建文件夾了 現在我們以其他帳號測試,就用技術部joy吧 在這里技術部的員工就看不到銷售部的共享目錄。同時對public目錄只讀權限,對tech目錄有讀寫權限。 因為禁止對共享目錄sales訪問,就算知道了\\rhel5\sales路徑也是不能訪問滴 8 Samba排錯 1)Linux服務一般滴排錯方法 (1)錯誤信息 一般仔細看下顯示的錯誤信息,根據錯誤提示一般滴問題就可以判斷問題出在什么地方了。 (2)配置文件 第2個我們可以查配置文件,有時可能誤操作導致配置失誤,服務無法正常運行,我們可以通過檢查配置文件來確認問題。現在很多服務的軟件包有自帶配置文件檢查工具,我們可以通過這些工具對配置文件進行檢查哈~ (3)日志文件 如果服務出現問題,我們還可以使用tail命令來動態監控日志文件(在CLI狀態下可以使用Ctrl+Alt+F1~F6切換到另一個CLI文字終端下查看)。 tail -F /var/log/messages 2)samba服務故障排錯 (1)使用testparm命令檢查 上面偶提到軟件包有自帶的配置文件檢查工具,我們可以使用testparm命令檢測smb.conf文件的語法,如果報錯,說明smb.conf文件設置有錯誤哈,這樣我們可以根據提示信息來修改主配置文件和獨立配置文件。 testparm /etc/samba/smb.conf
| [root@rhel5 ~]# testparm /etc/samba/smb.conf Load smb config files from /etc/samba/smb.conf Can't find include file /etc/samba/.smb.conf Can't find include file /etc/samba/%G.smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[public]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global] ??????? workgroup = COMPANYDOMAIN ??????? server string = Company Samba File Server ??????? cups options = raw ??????? include = /etc/samba/%G.smb.conf [homes] ??????? comment = Home Directories ??????? read .ly = No ??????? browseable = No [printers] ??????? comment = All Printers ??????? path = /var/spool/samba ??????? printable = Yes ??????? browseable = No [public] ??????? comment = public data ??????? path = /companydata/share ??????? guest ok = Yes [root@rhel5 ~]# testparm /etc/samba/gm.smb.conf Load smb config files from /etc/samba/gm.smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[sales]" Processing section "[tech]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global] ??????? workgroup = COMPANYDOMAIN ??????? server string = Company Samba File Server ??????? cups options = raw [homes] ??????? comment = Home Directories ??????? read .ly = No ??????? browseable = No [printers] ??????? comment = All Printers ??????? path = /var/spool/samba ??????? printable = Yes ??????? browseable = No [sales] ??????? comment = sales data ??????? path = /companydata/sales ??????? valid users = gm ??????? read .ly = No [tech] ??????? comment = tech data ??????? path = /companydata/tech ??????? valid users = gm ??????? read .ly = No [root@rhel5 ~]# testparm /etc/samba/sales.smb.conf Load smb config files from /etc/samba/sales.smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[sales]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global] ??????? workgroup = COMPANYDOMAIN ??????? server string = Company Samba File Server ??????? cups options = raw [homes] ??????? comment = Home Directories ??????? read .ly = No ??????? browseable = No [printers] ??????? comment = All Printers ??????? path = /var/spool/samba ??????? printable = Yes ??????? browseable = No [sales] ??????? comment = sales data ??????? path = /companydata/sales ??????? valid users = @sales, gm ??????? read .ly = No [root@rhel5 ~]# testparm /etc/samba/tech.smb.conf Load smb config files from /etc/samba/tech.smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[tech]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global] ??????? workgroup = COMPANYDOMAIN ??????? server string = Company Samba File Server ??????? cups options = raw [homes] ??????? comment = Home Directories ??????? read .ly = No ??????? browseable = No [printers] ??????? comment = All Printers ??????? path = /var/spool/samba ??????? printable = Yes ??????? browseable = No [tech] ??????? comment = tech data ??????? path = /companydata/tech ??????? valid users = @tech, gm ??????? read .ly = No [root@rhel5 ~]# |
netbios-ns 名字解析
netbios-dgm 數據報 如果提示“session setup failed”連接建立失敗則說明服務器拒絕了連接請求,這是因為輸入的用戶名和密碼錯誤引起滴,我們輸入正確的帳號和密碼就ok了哈~ 有時也會收到比如“Your server software is being unfriendly”錯誤信息,提示服務器軟件存在問題,這個故障一般是因為配置smbd時使用了錯誤的參數或者啟用smbd時遇到的類似嚴重破壞錯誤,我們可以使用testparm來檢查相應的配置文件并同時檢查相關日志文件哈。 ###########################################################
總結
以上是生活随笔為你收集整理的Samba服务全攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《HTML5 2D游戏编程核心技术》——
- 下一篇: 笔记本电脑显示打印机服务器关闭,电脑打印