如何搭建與Windows客戶機結合使用的Samba文件服務器?
2014-08-25 09:36 布加迪編譯 51CTO 字號:T | T
據Samba項目網站聲稱,Samba是一組開源/免費軟件套件,它爲SMB/CIFS客戶機提供了無縫順暢 的文件和打印服務。不像實現SMB/CIFS網絡協議的其他系統(比如面向HP-UX的LM Server、面向OS/2的LAN Server或VisionFS),Samba(及其源代碼)可以免費獲取(最終用戶不需要支付任何費用),並且允許Linux/Unix服務器和 Windows/Unix/Linux客戶機之間實現協同運行。
據Samba項目網站聲稱,Samba是一組開源/免費軟件套件,它爲SMB/CIFS客戶機提供了無縫順暢的文件和打印服務。不像 實現SMB/CIFS網絡協議的其他系統(比如面向HP-UX的LM Server、面向OS/2的LAN Server或VisionFS),Samba(及其源代碼)可以免費獲取(最終用戶不需要支付任何費用),並且允許Linux/Unix服務器和 Windows/Unix/Linux客戶機之間實現協同運行。
正是由於這些原因,在不同的操作系統(並非僅僅只有Linux)共存的網絡環境下,Samba是文件服務器的優選解決方案――而最常見的網絡架構就是多個微軟Windows客戶機訪問一臺安裝有Samba的Linux服務器,我們將在本文中探討這種情形。
要注意:另一方面,如果我們的網絡完全由基於Unix的客戶機(比如Linux、AIX或Solaris等等)組成,可以考慮使用NFS(不過在這種情況下Samba仍是一種選擇),這時NFS的速度更快。
將Samba安裝在Debian和CentOS上
在我們開始着手安裝之前,可以使用操作系統的軟件包管理系統,尋找關於Samba的信息:
在Debian上:
# aptitude show samba
在CentOS上:
# yum info samba
在下面這個屏幕截圖中,我們可以看到“aptitude show samba”的輸出結果(“yum info samba”會得到類似的結果):
現在不妨安裝Samba(下面這個屏幕截圖對應於安裝到Debian 7 [Wheezy]服務器上的情況):
在Debian上:
# aptitude install samba
在CentOS上:
# yum install samba
將用戶添加到Samba
如果是4.x之前的版本,想將用戶添加到Samba,就需要一個本地Unix帳戶:
# adduser <username>
下一步,我們需要使用帶“-a”選項的smbpasswd命令,將用戶添加到Samba,該選項指定隨後用戶名應添加到本地smbpasswd文件。系統會提示我們輸入一個密碼(該密碼沒必要與本地Unix帳戶的密碼一樣):
# smbpassword -a <username>
最後,我們將訪問系統中用作Samba共享區的一個目錄的權限授予用戶xmodulo(如果需要的話,還可以將訪問權限授予其他用戶)。要完成這一 步,只需用文件編輯器(比如Vim)打開/etc/samba/smb.conf文件,瀏覽到文件末尾,使用描述性名稱,創建一段代碼(將名稱括在方括號 內),比如[xmodulo]:
# SAMBA SHARE [xmodulo] path = /home/xmodulo available = yes valid users = xmodulo read only = no browseable = yes public = yes writeable = yes
現在我們必須重啓Samba;爲了以防萬一,使用testparm命令檢查smb.conf文件,查找有無語法錯誤:
# service samba restart # testparm
要是有什麼錯誤,testparm結束運行後,就會如實報告。
將Samba共享區映射爲Windows 7 PC上的網絡驅動器
鼠標右擊Computer(電腦),選擇“Map network drive”(映射網絡驅動器):
鍵入安裝有Samba的那臺機器的IP地址,隨後鍵入共享區的名稱(這是smb.conf文件中刮在單括號內的名稱),並確保“Connect using different credentials”(使用不同的登錄資料來連接)複選框已勾選:
輸入之前用“smbpasswd -a”設置的用戶名和密碼:
進入到Computer(電腦),檢查網絡驅動器是否已正確添加上去:
爲了測試一下,不妨利用Samba的參考手冊頁創建一個PDF文件,並將它保存到/home/xmodulo目錄中:
下一步,我們可以證實該文件可以從Windows來進行訪問:
我們可以使用默認的pdf閱讀軟件打開該文件:
最後,不妨看一下我們能否將來自Windows的一個文件保存到剛映射的網絡驅動器。我們將打開change.log文件,該文件列出了Notepad++的功能特性:
然後試着將它作爲一個明文文件(.txt擴展名)保存到Z:\;然後,不妨看一下該文件在Linux中是否能瀏覽:
啓用配額
第一步,我們需要證實當前內核是不是已經過編譯並支持配額:
# cat /boot/config-$(uname -r) | grep -i config_quota
每一個文件系統最多有五種配額限制可予以實施:用戶軟限制、用戶硬限制、用戶組軟限制、用戶組硬限制和寬限時間。
現在我們將爲/home文件系統啓用配額,爲此在/etc/fstab文件中對應/home文件系統的那一行,將usrquota和grpquota掛載選項添加到現有的defaults選項;爲了讓變更生效,我們將重新掛載文件系統:
下一步,我們需要在/home中創建兩個文件,它們將充當用戶配額和用戶組配額的數據庫:分別是aquota.user和aquota.group。之後,我們將針對啓用配額的文件系統,創建當前磁盤使用表:
# quotacheck -cug /home # quotacheck -avugm
儘管我們已爲/home文件系統啓用了配額,但我們還沒有對任何用戶或用戶組設置任何限制。檢查現有用戶/用戶組的配額信息:
# quota -u <username> # quota -g <groupname>
最後,後幾步包括:使用quotatool命令,爲每個用戶及/或每個用戶組指定配額(注意:可以使用edquota來執行這項任務,但quotatool更直觀簡單,不太容易出錯)。
想爲名爲xmodulo的用戶將軟限制設置在4 MB、將硬限制設置在5 MB,併爲xmodulo用戶組將軟限制和硬限制分別設置在10 MB和15 MB:
# quotatool -u xmodulo -bq 4M -l '5 Mb' /home # quotatool -g xmodulo -bq 10M -l '15 Mb' /home
我們可以在Windows 7中看到結果(4.00MB中3.98MB閒置):
英文鏈接:http://xmodulo.com/2014/08/samba-file-server-windows-clients.html
【責任編輯:牛小雨 TEL:(010)68476606】
Windows與Linux文件系統互訪的幾種方法
2014-08-22 15:50 童燕羣 shentar.me 字號:T | T
首先,我們知道基於文件的幾種服務:ftp,sftp,這兩種服務都是文件傳輸服務,偏重於網絡傳輸,並不是實時互訪。通常,我們需要在遠程和本地同時操作同一個目錄,如:在Windows下使用各種強大的IDE編輯代碼,在Linux下編譯和運行該代碼……
首先,我們知道基於文件的幾種服務:ftp,sftp,這兩種服務都是文件傳輸服務,偏重於網絡傳輸,並不是實時互訪。通常,我們需 要在遠程和本地同時操作同一個目錄,如:在Windows下使用各種強大的IDE編輯代碼,在Linux下編譯和運行該代碼。如果在Windows下編寫 好代碼再拷貝到Linux下編譯,這樣修改時很費事,直接在Linux下修改,還要同步回Windows,相當費事。當然有人會說,所有的工作都在 Linux下搞定,VI、Linux命令行足夠強大,沒有需要使用Windows系統的理由,本文的重點不在討論命令行熟練程度與工作效率的問題。
怎樣像訪問本地文件系統一樣訪問遠程的文件呢?如果遠程的系統與本地系統是不同類型的,又該如何做呢。
我們知道,在Windows系統之間,可以通過共享目錄的方式,讓遠程系統直接訪問。其實這裏是Windows提供一種遠程文件系統機制,NAS協 議的一種——CIFS協議。如果是Linux系統呢,同樣有另外一種NAS協議——NFS協議來實現遠程訪問。那麼這兩種NAS協議能否互通呢?答案是否 定的。雖然二者不能互通,但是,在Linux系統上面已經有了CIFS協議的服務端和客戶端的實現,這樣,無論是Linux給Windows共享還是 Windows給Linux共享都可以藉助這些已有的實現來做到了。
相反的,Windows上面有沒有NFS的客戶端或者服務端呢?也有,但是不常用,這裏就不詳細介紹了。
這裏主要圍繞着Linux上面使用CIFS協議來闡述如何實現兩個系統之間的跨文件系統,跨操作系統共享。按照上面的描述,有兩種方式來實現共享。Linux分別作爲CIFS的服務端和客戶端。下面分別就這兩種方式來說明操作步驟和簡單的原理介紹:
一、Samba軟件實現共享Linux文件系統給Windows用戶
Samba軟件被譽爲10大最有價值的開源軟件之第五位。其獲取方式非常容易,配置使用也非常簡單。下面以fedora系統爲例,先看一下本地是否 已經安裝好samba,如果/etc/init.d/smb 文件存在,則說明已經安裝好了samba軟件,否則使用如下命令安裝:
yum install samba
安裝完成後,修改配置文件,打開:/etc/samba/smb.conf,在文件末尾加上如下配置:
[root] comment = root path = / creat mask = 64 writeable = yes browseable = yes valid users = root
這個配置的意思是,創建一個名爲root的共享,將根文件目錄“/”共享給用戶。允許登錄的用戶名是root。
然後給samba系統添加root用戶,使用如下命令:
smbpasswd -a root
按照提示設置root用戶的密碼。
重新啓動samba服務。
service smb restart
檢查smb進程是否已經運行:
root 1787 0.0 0.4 33068 4784 ? Ss 21:51 0:00 smbd root 1788 0.0 0.2 33068 2580 ? S 21:51 0:00 \_ smbd
在需要訪問該Linux系統的Windows客戶機上面,打開Windows的資源管理器,在地址欄輸入:\\192.168.1.110
會發現,提示有一個共享root,雙擊訪問時,提示輸入用戶名和密碼,輸入此前配置的root用戶和密碼即可訪問。這裏就是Samba軟件實現了 CIFS的服務端,Windows資源管理作爲客戶端訪問遠程的共享文件系統。爲了更爲方便的使用該文件系統,還可以將該共享映射成一個本地的盤符,讓 Windows上面的各種工具像使用本地磁盤一樣使用該目錄。所有在Windows上面對該共享做的操作都會實時同步到Linux系統上面。
二、Linux訪問Windows的共享
上面的藉助於Samba的方式是大家常用的。還有一種,Windows系統天然就是一個CIFS的服務端和客戶端,既然Windows系統可以給 Windows系統共享目錄,那麼Linux系統能否訪問這些共享呢?答案是肯定的,由於有強大的VFS支撐,Linux支持掛載和訪問各種文件系統。 mount工具支持掛在CIFS甚至NTFS的文件系統。如果是Windows本機上面的Linux虛擬機,那麼可以直接通過虛擬機管理軟件,如 Vmware直接共享本地的磁盤分區給Linux系統,Linux系統根據Windows的磁盤分區的文件系統類型掛載即可。這裏不詳述該方案。
進入本段的正題,首先我們需要共享一個Windows的目錄:
下面以Windows XP爲例,Windows 7未做驗證,應該類似。在共享之前,首先需要確保Windows系統的server服務處於啓動狀態,如下圖:
選擇需要共享的目錄,右鍵,屬性,選擇“共享”頁,如下圖:
選擇在網絡上共享這個文件夾,並指定共享名。根據需要選擇是否允許遠程用戶修改該文件夾。這樣這個文件夾就被共享給遠程訪問了。
在Linux系統下掛載該共享:
[root@f2 ~]# mount -t cifs -o username="Test" //192.168.1.100/sourcecode /root/sourcecode Password for Test@//192.168.1.100/sourcecode:
按照要求輸入指定用戶的密碼即可。
此時,Windows的共享sourcecode目錄就已經掛載到Linux系統上面了,Linux系統可以像訪問本地目錄一樣訪問該目錄了。
這種方法應該是更好的訪問方式,因爲一般而言,我們操作的文件和工作空間都是在Windows上面的,只有少數時候,需要在Linux上面進行編 譯,調試。但是用起來稍顯麻煩。注意,此前曾遇到過Windows系統與虛擬出來的Linux系統之間無法傳輸數據的問題,原因是Windows系統的防 火牆未開啓。