歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> Samba使用和管理詳細指南完全分析

Samba使用和管理詳細指南完全分析

日期:2017/3/6 15:49:11   编辑:關於Unix
Windows 最令人感到方便的特色莫過於『網上鄰居』的檔案分享功能,有了這項功能後,使得局域網絡 裡資料的傳遞與分享得以落實。以往在 Linux 的世界裡其實也有 NFS 可以在 Unix Like 的操作系統下做檔案分享,但是與 Windows 作業環境的整合還是缺乏溝通的橋
  Windows 最令人感到方便的特色莫過於『網上鄰居』的檔案分享功能,有了這項功能後,使得局域網絡裡資料的傳遞與分享得以落實。以往在 Linux 的世界裡其實也有 NFS 可以在 Unix Like 的操作系統下做檔案分享,但是與 Windows 作業環境的整合還是缺乏溝通的橋梁。
  
  Samba Server 建立了 Linux 與 Windows 環境的溝通管道,也可以做為Print Server提供Windows 遠程聯機打印;若是使用 Samba Server 搭配 Apache Web Server,可在 Windows 環境下藉由『網上鄰居』登入 Linux 主機裡使用者的個人帳號放置網頁目錄(當然是在局域網絡內才行),有了這項功能,編輯個人網頁就如同在本機操作一般方便。除此之外,Samba Server 也可以完全取代 NT/2000 PDC(Primary Domain Controler)成為 NT/2000 網域主控者管理 NT/2000 網域機群,當然,Samba 也可以將目錄、檔案分享給其它 Unix Like、Mac、OS/2 的機器使用,應用層面可以說是相當廣闊,更令人驚訝的是 Samba Server 也可做為WINS Server,若配合 DHCP Server 更可以管理大型 NT/2000 網域,想想!這個集合眾多優點的服務器,是不是會對不同機種的操作系統工作環境在整合上有著極大的助益呢?
  
  Samba 可以定位為一套功能極為強大的檔案服務器軟件,所謂檔案服務器就是將檔案伺服主機上的目錄分享出來,讓您可以透過網絡對分享出來的目錄裡的檔案,做執行、讀取、寫入等動作。基本上 NT/2000 的網域是使用 NetBEUI 做計算機命名服務,使用廣播封包來偵測網絡上有哪些計算機、哪些目錄提供資源共享,而 Samba 與UNIX主機間的溝通(如目錄、檔案分享)是透過 TCP/IP 協議達成任務,Samba 若要與NT網域做溝通,透過TCP/IP當然是行不通的,只好使用 NetBIOS 對NT網域做廣播,讓 Windows 機器能夠認識它,進而成為NT網域成員;因此 Samba 是使用 smbd Daemon 透過 TCP/IP 聯系 Unix Like 主機,而使用 nmbd Daemon 透過 NetBIOS 對 NT/2000 網域做聯系,也就是說 Samba 使用兩種機制達成資源共享的目的。
  
  注:smbd Daemon主要用來處理檔案分享和打印分享服務;nmbd Daemon則用來處理WINS 名稱解析服務及NT Browser Service(即網上鄰居)。
  
  要使用 Samba Server 相當容易,在安裝好 Redhat 後,只要設定好工作群組,激活Samba Server 後就可以正常運作,您可以立即在 Windows 下的『網上鄰居』裡看到執行Samba服務的Linux 主機名稱。
  
  samba-2.0.7-21ssl
  
  samba-common-2.0.7-21ssl
  
  samba-client-2.0.7-21ssl(samba 所需要的套件,請隨時更新!!)
  
  想讓開機自動激活 samba 嗎?
  
  #chkconfig --level 345 smb on
  
  或是手動激活
  
  #/etc/rc.d/init.d/smb start
  
  以上是 samba 的簡單設定,接著介紹 samba 的設定及其它應用
  
  當安裝完 samba 套件後,也立即擁有以下的 samba 工具:
  
  smbclient:利用這個工具可連接其它 Unix like 的 Samba Server,或是連接 Windows 機器,以取得檔案分享服務。
  
  testparm :這個工具可讓您測試 smb.conf 組態檔定義是否正確。
  
  testprns :這個工具可讓您測試定義在 printcap 檔裡的列表機。
  
  smbstatus:這個工具可用來顯示目前 client 端連接到 Samba Server 的聯機狀況。
  
  nmblookup:這個工具可使用 NT/2000 網域內的主機名稱查詢出對應的 IP 地址。
  
  smbpasswd:這個工具可用來建立、變更登入到 Samba server 的加密密碼。
  
  swat:這個工具讓您可使用 web接口(如:IE、Netscape)對Samba Server做組態設定。
  
  先確定在 /etc/services 檔案裡面這些句子沒有被批注掉﹕
  
  netbios-dgm 138/tcp # NETBIOS Datagram Service
  
  netbios-dgm 138/udp
  
  netbios-ssn 139/tcp # NETBIOS session service
  
  netbios-ssn 139/udp
  
  然後是建立 /etc/lmhosts 檔案(如果它不存在的話)﹐建立起各主機的對應。我們只需將 MS Winndows 主機對應建立起來則可﹐但一定要包括作為 SAMBA 服務器的 Linux 主機本身﹕
  
  vi /etc/lmhosts
  
  192.168.0.17 redhat52
  
  192.168.0.15 PII266
  
  192.168.0.12 nt4ser2
  
  192.168.0.22 redhat62
  
  192.168.0.16 w2000ad
  
  然後是修改 /etc/samba/smb.conf 這個檔案
  
  ########################################################
  
  設定Samba的組態檔最基本可分為三個階段:Server基本設定、使用者home目錄的設定、目錄分享設定。至於「共享列表機設定」則是當您有需要時再做設定。若是在Samba 的組態設定檔/etc/smb.conf檔裡做設定,則是針對[global]、[homes]、[分享目錄]三大項目做設定。
  
  vi /etc/samba/smb.conf
  
  若是在etc/smb.conf檔裡做設定,則是在[global]項目裡設定如下:
  
  [global]
  
  workgroup = MYGROUP ;不分大小寫
  
  unix password sync = Yes
  
  設定 Linux 與 samba 使用相同的密碼
  
  domain master = yes
  
  設定 samba 成為 PDC (網域主控者),注意:若是將Samba設定為獨立服務器,則無須設定此項。
  
  client code page = 950
  
  如果想使用者能看到中文文件名稱﹐可以將這行加進 [global] 設定中
  
  [homes]
  
  browseable = yes
  
  writable = yes
  
  public = yes
  
  write list = @staff
  
  samba 內定帳號擁有者可對帳號目錄做讀寫動作,若想讓某些使用者也有權利對此目錄做寫入動作時,請在「Users」卷標的「write list」字段裡輸入其它使用者名稱,如:abc、test、working。
  
  所謂的使用者home目錄是指,以使用者帳號登入 Samba Server 後個人所擁有的帳號目錄,如:以帳號 root 登入後,內定的個人目錄是 /root。一般而言,對「使用者home目錄的設定」著重於是否將此個人目錄分享出來及設定存取的權限,其余項目大抵上是無需設定。
  
  注意:若您選擇了「Public aclearcase/" target="_blank" >ccess」、「Writable」兩個選項,並不代表所有的使用者皆有權利對您所分享的home目錄下的檔案具有寫入權,還得視檔案原來在Linux下的權限設定,例如,檔案權限為rwxr-xr-x(chmod 755),表示只有擁有者具可寫入權,此點務必留意。
  
  [works]
  
  comment = share works
  
  browseable = yes
  
  path = /works
  
  public = yes
  
  writable = yes
  
  目錄分享設定
  
  使用 Samba 最大的用途當然是將特定的目錄分享出去,分享目錄的原則不外乎是讀寫權限及分享對象,把握此原則就可很迅速的設定好分享目錄
  
  用 testparm 來測試一下smb.conf的語法是否正確,或是使用 smbclient -L (computer_name)
  
  重新激活 SAMBA
  
  /etc/rc.d/init.d/smb restart
  
  ########################################################3
  
  將 Samba 做為WINS Server
  
  Samba 最大的功用除了做 file Server 外,還可以做 WINS Server。Wins Server最大的好處是可在 NT/2000 網域內做名稱解析,傳統上在 Internet 上做 FQDN(Full Quality Domain Name)與 IP address 之間的轉換是藉由 DNS 做解析,但在局域網絡裡尤其是 NT/2000 網域,當您使用 NT/2000 的 WINS Server 與 NT/2000 的 DNS 做配搭時,假設有一台主機名稱叫做 abc,所屬領域是 test.com.tw,IP地址是192.168.0.229,目前此部主機尚未在 DNS 上注冊,但是在DNS 上激活正反查都可藉由 WINS 解析,當您使用 nslookup 查詢 abc 主機時,您會發現可解析出 192.168.0.229,並且觀察 DNS 上正查區域內,DNS自動將 abc 以A資源紀錄指定 IP 192.168.0.229,而反查區域內,DNS 自動將229.0.168.192.in-addr.arpa 指到 abc.test.com.tw,這就是 WINS 的好處。
  
  以往在 NT/2000 網域內使用 DNS+WINS Server 可免去在 DNS 上登錄主機記錄,若再搭配 DHCP Server 那麼連 Client 端主機的 IP 也免輸入,一切由 DHCP Server分配動態 IP ,再由 DNS+WINS Server 自動登錄主機 FQDN 與 IP 解析關系,這個簡單、易用組織網域的方法,如今也可以由 DNS+Linux下的Samba+Linux下的DHCP來取代,因為 Samba 可擔任 WINS Server 或指定 WINS Server做網域名稱解析。假設目前欲做 WINS + DHCP 的 Linux主機IP為192.168.0.229,其設定方式如下:
  
  首先確定已激活 DNS Server,並且在 DNS 裡啟用正、反查皆可透過 WINS 做解析。
  
  以下設定Samba為Wins Server
  
  wins server = 192.168.0.229
  
  設定完成後,可使用 nmblookup 查詢名稱解析,假設目前有一主機其名稱為 abc,使用動態分配 IP 聯機,所配得的IP地址是192.168.0.100,那麼當您使用nmblookup asp做名稱查詢時,則出現下列畫面:
  
  [root@abc testing]# nmblookup abc
  
  192.168.1.100 abc<00>
  
  當然,使用 DNS + DHCP + WINS 除了可分配動態 IP 外,『網上鄰居』、區域內主機 FQDN 與 IP 的對應關系皆可正常運作。
  
  Samba 除了可做為 File Server、Wins Server 外,還可做為 Printer Server,設定方法其為簡單:
  
  首先使用 Redhat 的print tool,列表機類型設定使用本機列表機。
  
  # linuxconf。
  
  按一下「Config」、「Networking」、「Server tasks」。
  
  按一下「Samba file server」、「Default setup for printers」。
  
  選擇 [X] This share is enable選項,可做打印分享。
  
  若選擇 [X] Public access選項,任何人皆可使用此部Printer Server,不限定只有擁有登入Samba帳號使用者。
  
  接下來設定win95/98/NT Client端
  
  在桌面上按兩下「我的計算機」、「打印機」、「新增打印機」。
  
  選擇「網絡打印機」、「下一步」。
  
  出現「網絡隊列或路徑名稱」對話窗後,請使用「浏覽」鈕挑選Samba Server所分享出來的打印服務,如:\\abc\lp。
  
  接著設定列表機的驅動程序後,即可大功告成。
  
  您會發現有了 Samba 後,NT/2000 所具備的優點似乎皆被取代了!
  
  ###################################################################
  
  Samba存取控制
  
  NT/2000 對分享出的目錄可針對特定群組、使用者做權限管理,同樣的,Samba 也能做到,並且能夠更精細的權限管理。在 Samba 裡對於目錄的管理可區分為『使用者帳號目錄』與『共享目錄』,『使用者帳號目錄』是在 Samba 的「Defaults」項目裡做設定,『共享目錄』則是在Samba的「Disk shares」項目裡做設定,其設定方式是不一樣的。
  
  首先就以「Defaults」項目為例,說明如何做Samba存取控制:
  
  若要針對登入 Samba 的來源主機做允許登入Samba主機,請在Allow hosts欄裡輸入來源主機,如:
  
  192.168.0.0/255.255.255.0 ;表示允許192.168.0. class C登入Samba。
  
  abc,test,working ;表示允許此三部主機登入 Samba。
  
  @mygroup ;表示允許mygroup群組內的成員登入Samba。
  
  若要針對登入 Samba 的來源主機做不允許登入 Samba 主機,請在 Deny hosts欄裡輸入來源主機,如:
  
  192.168.0.25 ;表示不允許此部主機登入 Samba。
  
  cracker,badboy ;表示不允許此兩部主機登入 Samba。
  
  @mygroup ;表示不允許這個工作群組成員登入 Samba。
  
  再以「Disk shares」項目為例,說明如何做 Samba 存取控制:
  
  Allow hosts欄、Deny hosts欄的設定方式與上述相同。
  
  「User list」欄可用來設定哪些使用者可使用分享目錄,例如:
  
  aaa,bbb,ccc,ddd,root ;表示此五個帳號可使用分享目錄。
  
  @cracker ;表示屬於 cracker 群組的帳號可使用分享目錄。
  
  @cracker,abc ;表示 cracker 群組成員及 abc 可使用分享目錄。
  
  「Write list」欄可用來設定哪些使用者具有寫入權,例如:
  
  aaa,bbb,root ;表示此三個帳號具有寫入權。
  
  @cracker ;表示屬於 cracker 群組的帳號具有寫入權。
  
  @cracker,abc ;表示 cracker 群組成員及 abc 具有寫入權。
  
  「Valid users」欄可用來設定哪些使用者可登入 Samba,例如:
  
  aaa,bbb,root ;表示此三個帳號登入Samba。
  
  @cracker ;表示屬於 cracker 群組的帳號登入Samba。
  
  @cracker,abc ;表示 cracker 群組成員及 abc 登入Samba。
  
  「Max. connections」欄可用來設定此分享目錄的最大聯機數量,例如:10。內定值是0,表示沒有聯機限制。
  
  mba Client
  Samba 除了提供 Server 方面的服務外,也可以充當 Samba Client 端登入其它Samba Server 或 Windows 所分享出來的目錄,要享用這些網絡上的分享資源並不難,用法如下:
  
  mount -t smbfs -o username=test,password=test //abc/test /data/test
  
  #################################################################
  
  結果就跟網絡芳鄰一樣,別人(//abc/test)的目錄就如同是本機的(/data/test)!!
  
  網絡芳鄰 linux 版 -- LinNeighborhood
  
  上述指令是利用文字模式下 mount 指令達成的,那麼在 XWindow 下是否可以像網絡芳鄰一樣的操作呢??當然可以,這裡介紹 LinNeighborhood
  
  原始網站 : http://www.bnro.de/~schmidjo/
  
  下載網址 : http://milkyway.thn.htu.se/~ds98rito/
  
  下載之後就直接安裝
  
  rpm -ivh LinNeighborhood-0.6.3-1.i386.rpm
  
  若是 GNOME ,則按左下角的大腳 --> "程序" --> "應用程序" --> "LinNeighborhood" 或者是從 xterm (終端窗口模式下) 執行 LinNeighborhood & (有分大小寫)
  
  第一次執行的話要先設定 "Options" --> "Preferences" ,設定要登入的 Windows 工作群組
  
  ################################################################
  
  然後在本機的圖標上按鼠標右鍵,執行 "rescan group",重新搜尋工作群組
  
  然後找到其它 Windows 的機器名稱,按鼠標右鍵,執行 "mount"
  
  設定要 mount 到 Linux 上的 path ,就大功告成了!!
  
  檢測
  
  若想要知道目前 Samba 的聯機狀態,可以使用 smbstatus 工具
  
  [root@vm_cle samba]# smbstatus
  
  Samba version 2.0.7
  
  Service uid gid pid machine
  
  abc1234 abc1234 abc1234 1240 abcedf (192.168.0.229) Sun May 6 17:01:09 2001
  
  No locked files
  
  Share mode memory usage (bytes):
  
  1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total
  
  另外要注意 /etc/hosts 裡,是否有加入以下內容:
  
  IP hosts_name
  
  如果沒有加入上面那一行, /etc/rc.d/init.d/smb start 時都是 [ OK ] ,但是其實都沒激活,可以檢查 /var/log/samba/* ,看看 log 訊息就知道了!!
  
  #################################################################
  
  Samba 的 Client 端設定
  
  若設定使用「Linux 主機的帳號與密碼做為登入 Samba Server 的帳號與密碼」時,由於 win95OSR2 之前版本及 NT SP3 之前版本的密碼機制是不加密的純文字密碼,當登入 Samba Server 時可傳送不加密的純文字密碼給 Samba,因而輕易認證登入。
  
  而 win98 及 NT SP3之後版本及 WIn2000 的密碼機制是屬於加過密的密碼,當登入Samba Server 時所傳送的是加密的密碼給 Samba,因而無法認證登入,此時,必須為需要登入 Samba Server 的使用者帳號,利用 smbpasswd 這個工具程序建立登入Samba 的密碼,當 windows Client 端登入 Samba 時,就可接受加過密的密碼做為認證,不過此時就無需使用「Linux主機的帳號與密碼做為登入Samba Server的帳號與密碼」,因為已經為使用者建立屬於登入 Samba 的密碼。必須注意的是:登入Samba 的使用者帳號必須是已存在於 /etc/passwd 文件內的Linux系統帳號,唯有如此,才能確保能使用個人帳號目錄。
  
  不加密的聯機
  
  由於 Samba 內定的接受密碼機制屬於純文字密碼,當設定好Samba Server 端後,此時若Client 端是 Windows 95 OSR2之前的版本或是 Win NT SP3 之前的版本,在登入本機時(假設使用 abc 帳號),直接使用『網上鄰居』即可看「home」、「abc」、「works」三個分享目錄,這是因為 Client 傳送純文字密碼到Server端做為認證。
  
  若 Client 端是 Windows 95 OSR2以後的版本或是Win NT SP3以後或是 Win2000 的版本,因為 Client 傳送加密碼到 Samba Server 端做為認證,則需設定為純文字密碼才可以與 Samba Server 聯機。您必須使用『登入記錄編輯器』(regedit)對聯機密碼形式做設定:
  
  Windows 95/98 ==> samba_9x.reg
  
  REGEDIT4
  
  [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
  
  "EnablePlainTextPassword"=dword:00000001
  
  Windows NT ==> samba_nt.reg
  
  REGEDIT4
  
  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]
  
  "EnablePlainTextPassword"=dword:00000001
  
  Windows 2000 ==>samba_2000.reg
  
  REGEDIT4
  
  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters]
  
  "EnablePlainTextPassword"=dword:00000001
  
  你可以手動用 regedit 改,也可以存成 *.reg 直接執行!!
  
  
  #####################################################################
  
  使用純文字密碼登入 Samba 的好處是:可享用現成的 Linux 帳號與密碼,但卻失去了安全性,此時可采用加密的密碼登入 Samba。為了讓 Samba 能對加密的密碼做認證,除了在基本設定裡需選擇「Encrypted password required」外,還需要使用smbpasswd 為每一帳號建立samba密碼,其步驟如下:
  
  vi /etc/samba/smb.conf
  
  [global]項目設定加密,如下所示:
  
  encrypt passwords = yes
  
  #smbpasswd -a abc
  
  如上設定後,Client 端是 Windows 95 OSR2以後的版本或是Win NT SP3以後的版本或是windows 2000,則不需要對 registry 的密碼項目做純文字密碼設定,直接就可登入Samba Server。
  
  注意:使用smbpasswd -a username之前,請先確定 /etc/passwd 檔裡存在username帳號。
  
  smbpasswd -d username:停用username帳號
  
  smbpasswd -e username:啟用username帳號
  
  相信您對 Samba 應該有了一些概念,Samba 是個相當強悍的 Server,在組織網域內的機群時,別忘了 Samba + DHCP + DNS 可幫您有效、快速的完成任務。
  
  用 Browser 管理 Samba
  
  必須安裝套件 -- samba-swat-xxx.rpm ,安裝完之後記得 restart smb 才會生效(當然也可以用 Webmin 透過 browser 管理 samba !!)
  
  /etc/rc.d/init.d/smb restart
  
  1.先使用 browser 聯機, port 901
  
  為何會 error 呢??這是小編要提醒您的,透過 Browser 方式管理固然方便,但是 security 可不要忘記,可以利用 /etc/samba/smb.conf 裡面的 hosts allow 來設定開放給誰使用 Browser 管理!!(千萬不要對 internet 全部開放,太危險了!!)
  
  2.輸入 ID , password (會依據不同 user 的權限出現不同的 menu )
  ######################################################
  
  3.這是 Anderson 這位 user 的 menu !!
  
  4.另外使用 root 登入
  
  5.有些 root 才有的權限才會出現!!

Copyright © Linux教程網 All Rights Reserved