Windows與Linux資源共享 SAMBA 指導老師 : 黃燕忠 學生:徐庭軒(97140252) 江柏松(97140279)
目錄 SAMBA 主要目的 SAMBA 簡介與常見應用 SAMBA 所需套件與架構 SAMBA 設定流程 【說明】smb.conf基本組態設定 SAMBA 檔案功能介紹 SAMBA 相關分享程式與加密程式 SAMBA 安裝 SAMBA 組態設定 SAMBA 使用者設定 Windows 連線 SAMBA Linux 連線 SAMBA SAMBA 疑難雜症 參考來源
SAMBA 主要目的
SAMBA 主要目的 主要就是讓 Linux 與 Windows 主機之間能彼此透過『網路上的芳鄰』這個方式來分享檔案。 當你的區域網路內辦公用的主機大多是 Windows 系統時, 可以透過網芳來存取 Linux 主機上面的資源,讓你不覺得有任何不一樣!
SAMBA 簡介與常見應用
SAMBA 簡介-[1] 早期的網路世界當中,大多使用 FTP在不同主機之間傳輸檔案資料,不過使用 FTP 傳輸檔案卻無法直接修改主機上面的檔案資料。 當要更改 Linux 主機上面的某個檔案時,必須要將該檔案自伺服器上下載下來後才能修改。 也因此該檔案在伺服器與用戶端都會存在。此時,萬一有一天修改某個檔案, 卻忘記將資料上傳回主機,等過了一陣子之後,如何知道那個檔案才是最新的?
SAMBA 簡介-[2] Samba 檔案系統是架構在 NetBIOS 通訊協定上面所開發出來的 NetBIOS 是用來進行機器之間通訊的軟體介面 (API)。在此提供了名稱服務, 它允許連線至網路的機器保留自己的名稱 Samba讓 Linux 系統可以加入 Windows 的系統當中來分享使用彼此的檔案資料
SMB 使用的 NetBIOS 通訊協定 (Network Basic Input/Output System) SAMBA 簡介-NetBIOS SMB 使用的 NetBIOS 通訊協定 (Network Basic Input/Output System) 最早 IBM 發展出 NetBIOS 的目的僅是要讓區域網路內少數電腦進行網路連結的一個通訊協定,因此NetBIOS 是無法跨路由 (Router / Gateway)的。 所以微軟的網路架構就使用了它來進行溝通的。 而 SAMBA 最早時,是想要讓 Linux 系統可以加入 Windows 的系統當中來分享使用彼此的檔案資料的,所以 SAMBA 就架構在 NetBIOS 發展出來。 因NetBIOS 是無法跨路由的,所以SAMBA理論上也是無法跨越路由的。因此另外使用 NetBIOS over TCP/IP 的技術,就可以跨越路由。不過目前 SAMBA 還是比較廣泛的使用在 LAN 裡面。
SAMBA 常見的應用 分享檔案與印表機服務 可提供使用者登入 Samba 主機時的身份認證,以提供不同身份者的個別資料 可進行 Windows 網路上的主機名稱解析 (NetBIOS name) 可進行裝置分享 (例如 Zip, CDROM...)
SAMBA 常見的應用- FTP vs. 網路芳鄰 FTP 【File Transfer Protocaol】 - 網路上任一主機和另一部主機作檔案傳輸 網路芳鄰 - 透過網路,分享同『區域網路』間的資源
SAMBA 套件與其架構
SAMBA 所需套件 samba: 這個套件主要包含了 SAMBA 的主要 daemon 檔案 (smbd 及 nmbd)、 SAMBA 的文件檔 (document)、以及其他與 SAMBA 相關的 logrotate 設定檔及開機預設選項檔案等; Samba-common: 主要提供設定檔 ( smb .conf ) 、 smb .conf 語法檢驗的測試程式 (test parm)等 Samba-client: 提供Client 端所需的工具指令,如掛載檔案格式的執行檔 smbmount等
SAMBA 套件結構【1】 安裝完畢後,可以依序察看 Samba 的套件結構。與他相關的檔案基本上有這些東西: /etc/samba/smb.conf: smb.conf 是 Samba 的主要設定檔名,主要在設 定工作群組、 NetBIOS 名稱以及分享的目錄等相 關設定,如果你的 distribution的SAMBA 設定檔 不在 /etc/samba/ 目錄當中,使用locate或find 等方式可找出。 /etc/samba/lmhosts: 目的在對應NetBIOS name與該主機名稱的IP,現 在通常啟動SAMBA,就能捉到此資訊,因此通常不 用設定。
Samba 套件結構【2】 /etc/samba/smbpasswd: 預設不存在,是SAMBA使用者密碼對應表。這個檔 案因包含使用者的密碼,權限方面擁有者需要是root。 /etc/samba/smbusers: 在Windows 與 Unix-like帳號分別為 administrator 及 root, 為對應兩者帳號關係,可用此設定。此檔案的使用須經由 smb.conf 內的『 username map 』項目來啟動。 testparm: 這個指令主要檢驗 samba 設定檔 smb.conf 的語法 正確與否,當編輯過 smb.conf 時,請務必使用此指 令檢查,避免錯誤。 testprns :測試定義在 printcap 檔裡的列表機
Samba 套件結構【3】 smbd, nmbd: 之前曾提過兩個主要daemon在此。 。 smbstatus: 列出目前 SMB server狀態。 smbpasswd: 如果SAMBA設定為需要規定使用者的帳號密碼,密碼 檔案的建立就需使用 smbpasswd 來建置。 smbclient: 當Linux主機想藉由『網路上的芳鄰』功能查看別台電 腦分享的目錄與裝置時,可用此查看。此指令也可用 在自己SAMBA主機上面,來查看是否設定成功。
Samba 套件結構【4】 smbmount: 在Linux上,可以透過 smbmount將遠端主機分享的檔案與目錄掛載到自己 的Linux主機上。不過,也可直接用 mount這個指令 進行同樣功能。 nmblookup: 測Samba Server 是否正確啟動,查出 NetBIOS name。 smbtree: 能夠查到工作群組與電腦名稱的樹狀目錄分佈圖。 /usr/share/doc/samba-<版本>: 包含SAMBA所有相關的技術手冊。
SAMBA 設定流程
SAMBA設定流程-網芳設定 既然 Samba 要加入Windows 的網芳中,所以設定方式應是要與網芳差不多。 早期 Windows 的網芳設定簡單,不過也因此, 產生麻煩的安全問題。後來在 Windows XP 的 sp2加入很多預設防火牆機制,因此網芳的預設限制: 主機間須在同一網域,否則要修改windows預設防火牆 最好設定為同一工作群組 主機名稱不可相同 (NetBIOS name) 專業版 Windows XP 最多僅能提供同時十個用戶連線到網芳。
SAMBA設定流程-網芳設定(續) 叫出檔案總管,然後在要分享的目錄、磁碟或裝置 (如印表機) 上面按下右鍵,選擇『共用』,然後就能夠設定好分享的資料了。 最好建立一組給用戶使用的帳號與密碼,讓其他主機的使用者可以透過該帳號密碼連線進入網芳。
SAMBA設定流程- SAMBA設定 在 smb.conf 當中設定好工作群組、NetBIOS 主機名、密碼使用狀態等等與主機相關的資訊。 根據步驟 2 的設定,在 Linux 檔案系統當中建立好分享出去的檔案或裝置的使用權限。 根據步驟 2 的設定,以 smbpasswd 建立起使用者的帳號及密碼。 啟動 Samba 的 smbd, nmbd 服務,開始運轉。
SAMBA設定流程-smb.conf設定檔的資訊 /etc/Samba/smb.conf: Samba 主要設定檔名 檔案其實可分為兩部份來看: 主機資訊:[global] 分享的資訊:以個別的目錄名稱為依據 【註】在 smb.conf 當中, 『#』與『 ;』 都是註解符號
smb.conf 基本組態設定
smb.conf 基本組態設定【1】 [global]設定 workgroup = <工作群組>注意,主機群要相同 netbios name = <伺服器名稱>每部主機均不同 server string = <說明>隨便寫即可 max log size = <KB> security = <安全等級>share、user、server、domain share: 為最寬鬆等級,不須認證程序即可存取 user: 認證user可否存取,使用 SAMBA 本身的密碼資料庫, 密碼資料庫與底下的 smb passwd file 有關 server:另一台smb server來負責認證user domain:當Samba Server加入NT網域時,另一台NT網域控制站 主機來認證
smb.conf 基本組態設定【1】(續) encrypt passwords = <Yes 代表密碼要加密> 承前,server和domain是使用外部主機的密碼,也就是SAMBA是用戶端之意,如果設定這個項目,還得要提供『password server = IP』的設定值才行。 encrypt passwords = <Yes 代表密碼要加密> 注意那個 passwords 要有 s 才對! smb passwd file = <密碼放置的檔案> 通常是 /etc/samba/smbpasswd
smb.conf 基本組態設定【2】 [Homes][分享目錄] comment:此目錄註解說明 path :在網芳當中看到的是 [分享] 的名稱,實際操作的檔案系統則是在 path 裡頭所設定的。 public:是否讓所有可以登入的使用者看到這個項目 valid users = 使用者,這個項目可以指定能夠進入到此資源的特定使用者 guest ok:是否公開分享,若為否則須進行身份驗證 read only:是否唯讀 writeable:設定資源是否以可寫方式來分享
smb.conf 基本組態設定【2】(續) [分享名稱] :這個分享名稱很重要,它是一個『代號』。 舉例來說,在 Windows 當中使用『共用』來分享網芳時,假設將『D:\game』分享出來, 系統還會要輸入一個『在網路上面的名稱』,假設輸入為『My_Games』, 那麼之後在網芳看到的這個資料夾 『 D:\game 』, 名稱其實是『\\你的IP\My_Games』。 read only 與 writable 為相似的設定值。如果 writable 在這裡設定為 no ,亦即不可寫入,與 read only則互相抵觸,此時,最後出現的設定值為主要的設定。
SAMBA 檔案功能介紹
SAMBA 檔案功能介紹 smbclient:可登入 Windows 機器,也可測Samba Server 是否運作正常 是否運作正常 smbstatus:顯示目前 client 連到 Samba Server 連線狀況 smbpasswd:建立登入到 Samba Server 的登入密碼 testparm :測試 smb.conf 組態檔定義是否語法正確 testprns :測試定義在 printcap 檔裡的列表機 nmblookup:測Samba Server 是否正確啟動
SAMBA 相關分享程式與加密程式 (smbclient)(smbpasswd)
Samba 相關分享程式 smbclient 列出server分享給client的清單 /smbclient –L //HostName –U username -L:分享狀態之顯示 HostName:輸入Samba server的主機名稱或IP 位置 –U:client端使用者名稱
Samba相關加密程式 smbpasswd 使用者更改密碼之設定 /etc/Samba/smbpasswd –a username username:使用者名稱,使用者必須是Linux系統內合法使用者才行。 -a:新增使用者
SAMBA 安裝
SAMBA 安裝-套件 SAMBA中有以下必要的套件需要安裝: samba samba-common samba-client 主要包含了 SAMBA 的主要執行檔案 (smbd 及 nmbd)、 文件檔 (document)、以及其他與 SAMBA 相關的 logrotate 設定檔及開機預設選項檔案等 samba-common 主要提供了 SAMBA 的主要設定檔 (smb.conf) 、 smb.conf 語法檢驗的測試程式 (testparm)等等 samba-client 當 Linux 做為 SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 檔案格式的執行檔 smbmount 等等。
SAMBA 安裝 – 安裝方式 以 yum 來安裝 以 CentOS 內建Add/Remove Software 圖形化功能來安裝 yum –y install samba samba-common samba-client 以 CentOS 內建Add/Remove Software 圖形化功能來安裝
SAMBA 安裝 – [1] 點選Applications底下的Add/Remove Software
SAMBA 安裝 – [2] 選擇Search輸入samba按下Search
SAMBA 安裝 – [3]
SAMBA 安裝 – [4]
SAMBA 組態設定
SAMBA 組態設定 – [1] 使用SSH登入或直接使用Terminal
SAMBA 組態設定 – [2] SAMBA設定檔位在/etc/samba
SAMBA 組態設定 – [3] 輸入vi smb.conf 來修改設定檔內容
SAMBA 組態設定 – [4] vi 指令簡易說明 在smb.conf中”;”跟”#”都是註解 :a :輸入 :w :儲存 :q :離開 ESC :退出編輯模式 在smb.conf中”;”跟”#”都是註解
SAMBA 組態設定 – [global] [global]的設定 workgroup = MYGROUP # 不分大小寫,設定群組名稱 netbios name = Samba # 主機名稱 server string = Samba Server # 主機說明 security = user # 共有五種安全等級(ADS, server, domain, user, share) encrypt passwords = yes # 設定 Samba 使用加密方式傳送密碼
SAMBA 組態設定 – security 介紹 ADS:使用windows的AD Server來認證存取資源。 domain:當 Samba Server 加入 NT 網域時,藉由另一台 NT 網域控制站主機來進行認證的工作。 server:經由另外一台 SMB Server 來負責帳號密碼的檢查工作。 share:Client 端不須經過認證程序,即可存取所分享的資源。 user:使用者需先通過認證方可存取,而帳號密碼的檢查工作為 Samba 本身來負責。此為預設值。
SAMBA 組態設定 – 分享目錄設定 [ccc] 分享資料夾的名稱 # 說明文字 path = /temp/ccc # 分享的路徑 comment = HA HA HA # 說明文字 path = /temp/ccc # 分享的路徑 valid users = julia mary # 只有julia與mary能使用此資源 browseable = yes # 瀏覽目錄 read only = yes # 只能讀取資料
SAMBA 組態設定 – 建立目錄及權限[1] 請先切回根目錄 cd / 然後觀看各目錄的權限ls -l
SAMBA 組態設定 – 建立目錄及權限[2] 進入開放權限最多的 tmp 然後創資料夾mkdir ccc
SAMBA 組態設定 – 建立目錄及權限[3] 變更 ccc 的權限為 777 即可讓登入後的 julia 跟 mary 可以存取 ccc 內的資料
SAMBA 組態設定 – 完成設定 testparm: /etc/rc.d/init.d/smb restart : 重新啟動SAMBA 檢查smb.conf區段的設定 /etc/rc.d/init.d/smb restart : 重新啟動SAMBA smbstatus :顯示資源被使用情形
SAMBA 使用者設定
SAMBA 使用者設定 - [1] 替使用者於Samba建立帳號密碼: 變更密碼的方法 若要停用或重新啟動帳號,其方法如下: smbpasswd -a [使用者帳號](帳號需為Linux帳號) New SMB password: 輸入密碼 Retype new SMB password: 再輸入密碼 變更密碼的方法 smbpasswd [使用者帳號] 若要停用或重新啟動帳號,其方法如下: 停用: smbpasswd –d 使用者帳號 啟用: smbpasswd –e 使用者帳號
SAMBA 使用者設定 – [2] 查看使用者資料 pdbedit –L #列出所有使用者 pdbedit –v 使用者帳號 #列出使用者詳細資料
SAMBA 設定實例
SAMBA 設定實例 – 範例 假設今天要將我們的電腦做以下設定: 電腦名稱取名為HOHO 加入群組LULU 分享一個名叫HAHA的目錄,並指定/tmp/HAHA為Linux上之目錄;且設定只有moo群組的使用者可以寫入。
[global] SAMBA 設定實例 - smb.conf vi /etc/samba/smb.conf netbios name = HOHO ;設定電腦名稱 workgroup = LULU ;設定群組 security = user ;驗證方式 encrypt passwords = yes ;密碼加密
SAMBA 設定實例 - 建立資料夾及權限 mkdir /tmp/HAHA ;建立資料夾 chgrp moo /tmp/HAHA ;改變建立群組 chmod 775 /tmp/HAHA ;修改權限
SAMBA 設定實例 - 目錄設定 [mgr_files] ;分享目錄 path = /home/samba_files ;Linux上目錄 read only = yes ;只能讀取 write list = @moo ;能寫入的人員 備註: @moo 意思是”moo”這個群組的人員 “@”是群組的意思,後面接群組名稱
Windows 連線 SAMBA
Windows 連線 SAMBA 輸入於SAMBA中建立之帳號密碼
Linux 連線 SAMBA
Linux 連線 SAMBA – [1] 點選Places/Networks Services
Linux 連線 SAMBA – [2] 選擇連線群組
Linux 連線 SAMBA – [3] 點選File/Connect to Server
Linux 連線 SAMBA – [4] Server:主機名稱 Share:分享目錄 [Folder]:資料夾 User Name: 使用者帳號 Domain Name: 網域名稱 Name to use for connection: 建立於桌面連線的名稱
Linux 連線 SAMBA – [5] 再輸入使用者密碼即可進入主機分享目錄
Linux 連線 SAMBA – [6] 建立完後桌面會顯示
Linux 連線 SAMBA – [7] 如果已知道Server資料直接點選Places/Connection to Server Server Type 選擇 Windows Share
SAMBA 疑難雜症
SAMBA 疑難雜症 – 如法進入home [1] Q:如法進入home(個人帳號)資料夾
SAMBA 疑難雜症– 如法進入home [2] 查看CentOS內右上角是否有顆星星(SELinux)
SAMBA 疑難雜症– 如法進入home [3] 問題是由於SELinux使用者權限控管關係
SAMBA 疑難雜症– 如法進入home [4] 輸入set sebool –P samba_enable_home_dirs=1 即可正常連線
SAMBA 疑難雜症 – 無法連線網芳 [1] Q:當進入網芳發現有群組名稱卻無法連線, 或進入群組後發現沒有主機名稱時
SAMBA 疑難雜症 – 無法連線網芳 [2] 進入System/Administration/Security Level and Fiewall
SAMBA 疑難雜症 – 無法連線網芳 [3] 查看防火牆選項中是否有讓SAMBA通過(打勾為允許)
參考來源 藍色部落 -- Linux網管實驗室 鳥哥的linux私房菜 UNIX電子書 http://itgroup.blueshop.com.tw/yjhwang/linuxlab 鳥哥的linux私房菜 UNIX電子書 http://moto.debian.org.tw/viewtopic.php?t=3066 http://kenduest.sayya.org/blog/kenduest-data/2008/5/kenduest-UNIX-selinux-2008-05-15.pdf