samba的使用
samba可以使NFS相互分享,window下也可以连接linux下的share path,犹如访问自己的partition一般,十分方便。
如果只是为了使用samba来实现简单的功能,按照如下步骤就可快速完成。
在ubuntu下安装使用samba很简单:
1、apt-get install samba
2、gedit /etc/samba/smb.conf
增加共享的路径:
比如:
[share name]
comment=a share path
path=/work
public=yes
writable=yes
......
3、增加访问账户
在terminal中敲入:smbpasswd -a username
然后输入密码,核实密码
4、访问ip即可
-------------------------------------------------------
更详细的samba资料,参考文档:
http://120.105.184.250/peiyuli/network-3/SAMBA%E4%BC%BA%E6%9C%8D%E5%99%A8.htm
SAMBA 伺服器
UNIX-like 主機可以透過 NFS 互相分享檔案,而微軟 Windows 也可以透過類似的檔案系統 CIFS (Common Internet File Syatem) 形成「網路上的芳鄰」,達到檔案的分享。微軟的網路系統並不是使用 TCP/IP 協定 (但 Windows 系統支援),而是使用 NetBIOS/NetBEUI 將主機以工作群組 (workgroup) 組織起來,每個主機以電腦名稱區別。 可惜的是,NFS 只能讓 UNIX 主機互相溝通,CIFS 也只能讓 Windows 主機彼此聯繫。
SAMBA 的發展
1991 年,一位名叫 Addrew Tridgwell 的大學生為了想讓 Unix 與 DOS 之間可以分享資料,開發出 SMB (Server Message Block) 檔案系統,因 SMB 是無意義的字,無法註冊成為新檔案系統的商標,後來從字典裡面找到相近的字 ─ SAMBA,且又是著名拉丁舞曲的名稱,因此便決定以此名稱當作商標。
NetBIOS (Network Basic Input/Output System) 是由 IBM 發展出來讓區域網路內主機進行連繫的通訊協定,SAMBA 為了要讓 UNIX 主機加入 Windows 系統來分享資源,因此就是架構在 NetBIOS 上發展出來的。由於 NetBIOS 是定義在區域網路內 (無法跨越路由器),因此沒有使用類似 TCP/IP 的通訊協定,也就不需要 IP 的設定,主機與主機間的區別是利用 NetBIOS Name (不同於 Windows 電腦名稱 ),資料便是在不同的 NetBIOS Name 之間傳遞。想要從 SAMBA 主機登入 Windows 主機使用分享資源,就必須先加入該 Windows 主機所在的工作群組 (Workgroup),且在同一個工作群組中,NetBIOS 名稱必須是唯一的。至於 NetBEUI (NetBIOS Extended User Interface) ,則是 IBM 在 NetBIOS 發展出來後的改良版本。
常見的 SAMBA 主機連線方式有:
─ Workgroup model (peer/peer):區域網路內所有主機均具同等地位,可以自己管理本機的帳號與密碼,也有獨立執行各項軟體的能力。
─ Domain model:欲使用電腦資源,就需要帳號與密碼,而帳號與密碼集中保管在主要網域控制站 (PDC, Primary Domain Controller),藉由 PDC 進行身份確認後,才給予使用者適當的使用權限。
SAMBA 伺服器的設定
SAMBA 伺服器主要是透過兩個服務程式 (daemon) 來運作,分別為:
─ nmbd:主要是用來管理工作群組、NetBIOS Name 的解析,將會利用 UDP 協定開啟 port 137 與 138 來負責。
─ smbd:主要是用來管理 SAMBA 主機分享的目錄、檔案與印表機等資源,將會利用 TCP 協定開啟 port 139 與 445 來負責。
SAMBA 伺服器的相關設定檔案均放在目錄 /etc/samba 中:
/etc/samba/smb.confSAMBA 伺服器的主要設定檔,主要在設定工作群組、NetBIOS Name 以及分享的目錄等。/etc/samba/lmhostsLAN Manager Hosts,主要在設定 NetBIOS Name 與該主機 IP 的對應關係,有點類似 /etc/hosts 的功能,可以協助縮短 NetBIOS Name 的解析時間。/etc/samba/smbusers由於 Windows 與 UNIX 在管理者與訪客的帳號名稱不一致,例如 administrator vs. root,guest vs. nobody。此檔可以設定兩系統之間的相關帳號對應關係。/etc/samba/smbpasswd預設不存在,是 SAMBA 伺服器預設的使用者密碼對應表。當 SAMBA 伺服器的設定較嚴密時,將會要求輸入使用者帳號與密碼才能登入,此檔便是相關資料的存放位置。設定 smb.conf
設定檔 /etc/samba/smb.conf 可以分成兩部份來看,一個是主機整體參數,定義在 [global] 區段中;另一部份是分享目錄參數,定義在個別以共用目錄名稱為名義的區段。下列為幾個重要區段的簡易說明:
[global]
設定 SAMBA 主機的整體參數,包括工作群組、主機的 NetBIOS Name、字元編碼的顯示、登錄檔的設定、是否使用密碼、以及使用密碼驗證的機制等。[homes]
設定 SAMBA 伺服器的使用者家目錄之相關權限。[printers]
設定分享的印表機。[共用目錄名稱]
設定其他分享的目錄,名稱可自訂。e.g.,
─ 主機整體參數
workgroup
工作群組名稱。server string主機的註解說明。netbios name主機的 NetBIOS 名稱,在同一工作群組中必須是唯一。display charsetSAMBA 伺服器上面的顯示編碼,通常與 unix charset 設定值相同。unix charsetLinux 系統主機所使用的編碼,一般就是 /etc/sysconfig/i18n 內的預設編碼 UTF-8。dos charsetWindows 用戶端所使用的編碼,一般是 Big5,但在 SAMBA 伺服器內被稱為 cp950。log file登錄檔的存放位置max log size登錄檔的最大容量 (單位:KBytes),若大於此容量,登錄檔會被 rotate 掉。security使用者存取 SAMBA 伺服器的安全等級,由低至高分別為 share、user、server、domain 與 ads:share:使用者不需輸入帳號與密碼,即可登入 SAMBA 伺服器。
user:預設安全等級,使用者必須先輸入帳號與密碼,經 SAMBA 伺服器驗證通過後,才可登入使用分享的資源。
server:使用者需經登入驗證程序,但驗證工作會由另一台指定的 SAMBA 伺服器或 Windows 伺服器執行。
domain:若 SAMBA 伺服器要加入網域而非工作群組,則可使用此等級。使用者登入驗證工作則由網域中的 Windows 伺服器來執行。
ads:若 SAMBA 伺服器要加入網域,並使用 AD 目錄服務,則可使用此等級 (SAMBA 3.0 以上版本)。
encrypt passwords等於 Yes 表示密碼要加密。smb passwd file密碼存放檔案,預設是 /etc/samba/smbpasswd。─ 分享目錄參數
comment
共用目錄說明。path共用目錄在 Linux 主機的實際路徑。public是否讓登入者看到此分享目錄。readonly是否唯讀。writable是否可以寫入。若與 readonly 設定值相抵觸,以最後出現的設定為主。create mode設定新建檔案的預設權限。directory mode設定新建目錄的預設權限。valid users指定可以使用此分享目錄的使用者在參數的設定中,也有一些變數可以使用:
%S
取代目前區段名稱中的共用目錄名稱。%m代表 Client 端主機的 NetBIOS Name。%M代表 Client 端主機的電腦名稱 (HOSTNAME)。%L代表 SAMBA主機的 NetBIOS Name。%h代表 SAMBA主機的 HOSTNAME。%H代表目前使用者的家目錄%U代表目前使用者的帳號名稱%g代表目前使用者的群組名稱%I代表 CLient 端主機的 IP%T代表目前日期與時間檢驗設定檔
語法:testparm-v 顯示完整的參數設定,包含預設值e.g.,
啟動 SAMBA 服務
欲在開機時便自動啟動 SMB服務,可執行指令「setup」或「ntsysv」,在選單中選取「系統服務」工具進入服務設定,然後再於服務選單中按空白鍵選取 nmb 與 smb 項目並確定 (參考「遠端連線伺服器」部份)。若想以手動方式操控 SMB 服務,可執行下列指令:
# /etc/init.d/smb start
啟動 SMB 服務# /etc/init.d/nmb start啟動 NetBIOS 名稱解析服務# /etc/init.d/smb stop
停止 SMB 服務# /etc/init.d/smb restart
重新啟動 SMB 服務# service smb restart
重新啟動 SMB 服務觀察與使用分享資源
顯示分享資源
語法:smbclient -L //[netbios名稱 | IP] [-U 使用者帳號]-L 顯示指定主機所分享的資源e.g.,
顯示資源被使用情形
SAMBA 伺服器的資源被分享出來後,可利用指令「smbstatus」檢視目前資源被使用的情形。
e.g.,
在 Linux 主機存取遠端 Windows 系統的檔案
欲從 Linux 主機存取 Windows 系統資源,在文字模式中可利用指令「smbclient」:
語法:smbclient '\\電腦名稱\分享資料夾名稱' [-U 使用者帳號]
通過密碼驗證 (未輸入密碼將視同 guest 身份) 進入 Windows 系統後,會看到 smb 提示符號,接下來的操作方式與 ftp 的操作幾乎一樣。
e.g.,
在 X Window 視窗中,可利用檔案瀏覽器瀏覽「電腦/網路/Windows 網路/工作群組/電腦主機名稱/分享資料夾」。
e.g.,
或於位置欄位輸入:
smb://網路芳鄰主機 IP 位址/分享資料夾
e.g.,
在 Linux 主機掛載 Windows 檔案系統
Windows 的 smb 檔案系統可以像 Linux 的檔案系統一樣直接掛載到 Linux 的目錄樹中:
語法:mount.cifs //電腦名稱/分享資料夾名稱 掛載點
欲卸載由 mount.cifs 掛載的檔案系統,語法為:
語法:umount 掛載點
e.g.,
範例1 ― 安全等級 share
主機環境:
?工作群組 (workgroup):IM-GROUP設定檔 smb.conf:
說明:由於無參數 writable 出現,參數 readonly 值為 no 即代表可寫入 (非唯讀)。
範例2 ― 安全等級 user
主機環境:
?工作群組 (workgroup):IM-GROUP2. 實際路徑為 /public,共用目錄名稱為 public,只有群組 users 的成員可以進入,並擁有寫入權限
設定檔 smb.conf:
說明:
由於安全等級設定為 user,登入使用者帳號與密碼必須於 SAMBA 伺服器 之密碼檔 /etc/samba/smbpasswd 中設定。如欲使用 Linux 系統帳號與密碼登入 SAMBA 伺服器,可先將密碼檔 /etc/passwd 轉換成為 SAMBA 伺服器的密碼檔,請參考下列操作方式:
# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
# pdbedit -i smbpasswd:/etc/samba/smbpasswd
# rm /etc/samba/smbpasswd
接著利用指令「smbpasswd」,一一設定 SAMBA 伺服器中每個帳號的密碼:
語法:smbpasswd [-adem] 使用者帳號-a 新增使用者帳號於密碼檔 /etc/samba/smbpasswde.g.,
# smbpasswd -a guest
新增 SAMBA 使用者 guest# smbpasswd -d user1暫時拒絕使用者 user1 的登入如此就可使目前 Linux 系統上所有使用者同時成為 SAMBA 伺服器的使用者,未來 Linux 系統如有新增的使用者 (如 user1),亦可利用指令「pdbedit」使其成為 SAMBA 伺服器之使用者:
# pdbedit -a user1
設定檔經過修改過後,必須重新啟動 SAMBA 伺服器,新設定方可生效。若設定檔中變數 workgrouop 的值設定為一新增的工作群組 (如 IM-GROUP),則可能需等幾分鐘,才可以在網路上的芳鄰中看到該群組 (如下圖)。
è
è