隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,實(shí)現(xiàn)不同操作系統(tǒng)的文件和打印共享成為一個(gè)必然的趨勢。用過Windows的用戶都知道,網(wǎng)上鄰居是一個(gè)可以方便地訪問其他Windows計(jì)算機(jī)資源的共享方式。為了使Windows用戶以及Linux用戶能夠互相訪問彼此的資源,Linux提供了一套資源共享的軟件——Samba服務(wù)器。
4.1 SMB協(xié)議和Samba簡介
4.1.1 SMB協(xié)議
為了使Windows 主機(jī)間的資源能夠共享,微軟于1980年開發(fā)了SMB(Server Message Block)通信協(xié)議,并通過SMB通信協(xié)議,使網(wǎng)絡(luò)上各臺主機(jī)之間能夠共享文件、打印機(jī)等資源。目前類似這種資源共享的通信協(xié)議還有NFS、Appletalk、Netware等。
4.1.2 Samba簡介
這些年來,Windows 和Linux 操作系統(tǒng)各自擁有自己的用戶群和市場。然而在一般的公司或?qū)W校里,可能同時(shí)有Windows 和Linux 操作系統(tǒng)的主機(jī)。Windows 主機(jī)彼此間可利用“網(wǎng)上鄰居”來訪問共享的資源,NFS也能使Linux 主機(jī)之間實(shí)現(xiàn)資源共享。但如何能使Windows 主機(jī)和Linux主機(jī)之間實(shí)現(xiàn)資源共享呢?
微軟的“網(wǎng)上鄰居(就是Windows 上利用SMB通信協(xié)議實(shí)現(xiàn)資源共享的程序)”一經(jīng)推出,便廣受用戶的好評,大家突然覺得原來要在網(wǎng)上共享資源盡是那么簡單,有鑒于此,便有一些Linux 愛好者開始在Linux 主機(jī)上實(shí)現(xiàn)SMB通信協(xié)議,后來這個(gè)實(shí)現(xiàn)了SMB功能的軟件既被稱為 Samba ,它使得Windows 主機(jī)和Linux主機(jī)之間實(shí)現(xiàn)了資源共享。
4.1.3 Samba軟件的功能
由于SMB通信協(xié)議采用的是Client/Server架構(gòu),所以Samba 軟件可以分為客戶端和服務(wù)器端兩部分。通過執(zhí)行Samba 客戶端程序,Linux 主機(jī)便可以使用網(wǎng)絡(luò)上Windows 主機(jī)所共享的資源;而在Linux 主機(jī)上安裝Samba 服務(wù)器,則可以使Windows 主機(jī)訪問Samba 服務(wù)器共享的資源
Samba 提供了以下功能:
(1)共享Linux 的文件系統(tǒng)
(2)共享安裝在Samba 服務(wù)器上的打印機(jī)
(3)使用Windows 系統(tǒng)共享的文件和打印機(jī)
(4)支持 Windows 域控制器和Windows 成員服務(wù)器對使用Samba 資源的用戶進(jìn)行認(rèn)證
(5)支持WINS名字服務(wù)器解析及瀏覽 (6)支持SSL安全套接層協(xié)議
4.2 安裝和啟動SambaSamba 軟件安裝在Linux 一端。目前主要由一個(gè)20人左右的Samba 團(tuán)隊(duì)負(fù)責(zé)維護(hù)及開發(fā),用戶可以在http://www./站點(diǎn)獲得Samba的詳細(xì)信息。同時(shí),也可以在網(wǎng)頁上下載Samba 的最新版本 4.2.1 安裝Samba服務(wù)器 如果用戶在安裝Linux 時(shí)已經(jīng)安裝了Samba ,就無需再安裝了可以通過下列命令確定是否已經(jīng)安裝了Samba 。 [root@ smb_server root]# rpm –qa | grep samba samba-commom -2.2.7a-7.9.0 samba-2.2.7a-7.9.0 samba-client-2.2.7a-7.9.0 redhat-config-samba-1.0.4-1 samba-swat-2.2.7a-7.9.0 若出現(xiàn)這5個(gè)軟件包,則表示已經(jīng)安裝了Samba ,否則必須安裝Samba 。 [root@smb_server root]# mount /dev/cdrom /mnt/cdrom 將光盤掛載到 /mnt/cdrom目錄] [root@smb_server root]# cd /mnt/cdrom/RedHat/RPMS 切換到放置rpm文件的目錄 [root@smb_server root]# rpm -ivh samba-commom -2.2.7a-7.9.0i386.rpm 這是Samba 必備的程序,必須安裝 [root@smb_server root]# rpm -ivh samba-2.2.7a-7.9.0.i386.rpm 安裝Samba 服務(wù)器程序,可以使我Windows 主機(jī)訪問Samba 服務(wù)器共享的資源。 如果需要使Linux 主機(jī)訪問Windows 主機(jī)上的共享資源,則還應(yīng)該安裝Samba 客戶端程序。 [root@smb_server root]# rpm -ivh samba-client-2.2.7a-7.9.0.i386.rpm 4.2.2 Samba的全局參數(shù)的配置 Samba最主要的配置文件是 /etc/samba/smb.conf,其中有很多選項(xiàng)可以設(shè)置,但作為初學(xué)者,只需要掌握其中一小部分選項(xiàng)的設(shè)置就可以配置所需要的Samba服務(wù)器了。在了解基本配置的基礎(chǔ)上,就能很快架設(shè)一個(gè)基本的Samba服務(wù)器。在基本配置文件中,也只用到其中一小部分命令選項(xiàng)。 全局參數(shù)的配置在[global]字段中,沒有出現(xiàn)(或被注釋)的參數(shù),Samba 采用的是默認(rèn)配置。 # This is the main Samba configuration file. You should read the # smb.conf(5) manual page in order to understand the options listed # here. Samba has a huge number of configurable options (perhaps too # many!) most of which are not shown in this example #================== Global Settings ============================ [global] #這是配置文件中關(guān)于全局參數(shù)的設(shè)置部分。 ………… workgroup = SMBGROUP #這是設(shè)置服務(wù)器所要加入的工作組的名稱,會在Windows 的“網(wǎng)上鄰居”中能看到MYGROUP工作組,可以在此設(shè)置所需要的工作組的名稱。 netbios name=smb-server #設(shè)置出現(xiàn)在“網(wǎng)上鄰居”中的主機(jī)名。默認(rèn)情況下,則使用真正的主機(jī)名。 server string = Samba Server #這是設(shè)置服務(wù)器主機(jī)的說明信息,當(dāng)在Windows 的“網(wǎng)上鄰居”中打開Samba 上設(shè)置的工作組時(shí),在Windows 的資源管理器窗口,會列出“名稱”和“備注”欄,其中“名稱”欄會顯示出Samba服務(wù)器的NetBios名稱,而“備注”欄則顯示出此處設(shè)置的“Samba Server”。當(dāng)然,可以修改默認(rèn)的“Sambe Server”,使用自己的描述信息。 hosts allow = 192.168.1. 127 #這里是設(shè)置允許什么樣的IP地址的主機(jī)訪問Samba服務(wù)器。默認(rèn)的情況下,hosts allow選項(xiàng)被注釋,表示允許所有IP地址的主機(jī)訪問。 guest account = pcguest #設(shè)置當(dāng)訪問那些被設(shè)置了“guest ok=yes”參數(shù)的資源時(shí)所要使用的賬號名。默認(rèn)的賬號為”nobody”,如果不想用默認(rèn)的值,則應(yīng)該去掉注釋用的分號,用你想要的賬號(如pcguest、 zhangsan等 ),然后,你必需將這一新賬號加入到/etc/passwd文件中去。 client code page=950 設(shè)置客戶端訪問Samba 服務(wù)器時(shí)所使用的字符編碼表(code page),默認(rèn)值為850,如果Samba 服務(wù)器要使用年中文名稱來來命名共享的資源,要將此值改為950 log file = /var/log/samba/%m.log #這一選項(xiàng)要求Samba服務(wù)器為每一個(gè)連接的機(jī)器使用一個(gè)單獨(dú)的日志文件,指定文件的位置,名稱。Samba會自動將%m轉(zhuǎn)換成連接主機(jī)的NetBios名。 max log size = 0 指定日志文件的最大容量(以KB為單位),設(shè)置為0,表示沒有限制。默認(rèn)值為5000。 max disk size =1000 #設(shè)置能夠共享的最大磁盤空間,單位為MB,默認(rèn)值為0,表示不作任何限制。 max open file =100 #設(shè)置同一客戶端最多能打開文件的數(shù)目,默認(rèn)值為10000個(gè)。 security = user #設(shè)置Samba服務(wù)器的安全等級。默認(rèn)情況下,使用user等級。 #Samba服務(wù)器一共有四種安全等級。 share: 使用此等級,用戶不需要賬號及密碼可以登陸Samba服務(wù)器。 user: 使用此等級,由提供服務(wù)的Samba服務(wù)器檢查用戶賬號及密碼。 server: 使用此等級,檢查賬號及密碼的工作可指定另一臺Samba服務(wù)器負(fù)責(zé)。 domain: 使用此等級,需要指定一臺Windows NT/2000/XP服務(wù)器(通常為域控制器),以驗(yàn)證用戶輸入的賬號及密碼。 ; password server = <NT-Server-Name> #如果安全等級為“server”或“domain”,則使用此選項(xiàng)指定要驗(yàn)證密碼的主機(jī)名。 password level = 8 username level = 8 #設(shè)置當(dāng)驗(yàn)證用戶口令和賬號時(shí)最多允許幾個(gè)大小寫字不同。默認(rèn)值為0。 encrypt passwords = yes #設(shè)置當(dāng)Samba客戶端將賬號及密碼傳送到服務(wù)器端時(shí),是否采取密碼加密的方式。客戶的操作系統(tǒng)如果是Windows 95 OSR2 及NT SP3以后的版本,應(yīng)該將此選項(xiàng)的值設(shè)為yes,默認(rèn)值為no。 smb passwd file = /etc/samba/smbpasswd #設(shè)置在Samba服務(wù)器上存放加密的密碼文件的位置(注意:Samba服務(wù)器與Linux采用不同的密碼文件)。
4.2.3 設(shè)置Samba密碼文件 smb.conf 文件中有“smb password file =/ect/samba/smbpassword”一行設(shè)置項(xiàng),現(xiàn)在就要創(chuàng)建該設(shè)置項(xiàng)所指定的/ect/samba/smbpassword密碼文件(若是用Windows NT/2000Server 來驗(yàn)證密碼,則可以跳過此段內(nèi)容)。以root賬號登錄,然后按下列步驟進(jìn)行: [root@smb_server root]#cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd [root@ smb_server root]# chmod 500 /etc/samba [root@ smb_server root]# chmod 600 /etc/samba/smbpasswd
此步驟是將未加密的/etc/passwd文件轉(zhuǎn)換成加密的smbpasswd文件?;诒C艿脑瓌t,將/etc/samba目錄的權(quán)限設(shè)為500,該文件的權(quán)限設(shè)為600,以避免他人取得密碼文件。 完成之后再利用smbpasswd命令,設(shè)置/ect/samba/smbpassword文件中每個(gè)賬號所使用的密碼。(下面以fred為例。注意:此處設(shè)置的密碼是fred要訪問Samba服務(wù)器的密碼,并非登錄Linux 主機(jī)的密碼,默認(rèn)設(shè)置”UNIX password sync=YES”, 則登錄Linux 主機(jī)的密碼將改變,與Samba服務(wù)器的密碼一致,如果希望這兩個(gè)密碼不一致,則設(shè)置”UNIX password sync=NO”) [root@smb_server root]# smbpasswd fred New SMB password: 此處輸入密碼 Retype SMB password: 重新輸入密碼 Password changed for user fred 看到這一句表示密碼設(shè)置成功。
4.2.4 啟動Samba服務(wù)器 可以執(zhí)行下面的命令來啟動Samba服務(wù)器: [root@ smb_server Root]# service smb start 當(dāng)能看到下面的顯示,就表示啟動成功。 Starting SMB service [確定] Starting NMB service [確定]
如果要暫停或重新啟動Samba服務(wù)器,只要將上面命令中的start 改為stop或restat就可以了。 也可以讓系統(tǒng)在每次開機(jī)時(shí)就啟動Samba服務(wù)器。執(zhí)行ntsysv命令,進(jìn)入Service設(shè)置畫面,選擇smb選項(xiàng),單擊確定即可。 4.2.5 測試Samba配置文件 設(shè)置好smb.conf文件之后,執(zhí)行下面的命令測試smb.conf的設(shè)置語法是否正確。 [root@smb_server root]# testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[tmp]" Processing section "[public]" Processing section "[fredsdir]" Loaded services file OK. Press enter to see a dump of your service definitions 表示正確。 檢查正常后,一定要記得執(zhí)行 [root@smb_server root]# service smb restart 命令,重新啟動Samba服務(wù)器。 4.3 配置Samba 文件共享完成了全局環(huán)境的設(shè)置之后,可以設(shè)置共享的資源(包括共享的文件和打印機(jī))了。先來介紹如何配置Smb.conf,實(shí)現(xiàn)文件的共享。 4.3.1 設(shè)置共享資源參數(shù) comment #針對共享資源所作的說明、注釋部分 browseable #設(shè)置用戶是否可以看到此共享資源。默認(rèn)值為yes,若將此參數(shù)設(shè)置為no,用戶雖然看不到此資源,但是擁有權(quán)限的用戶仍可直接輸入該資源的網(wǎng)址來訪問該資源。 writable #設(shè)置共享的資源是否可以寫入。若共享資源是打印機(jī),則不需設(shè)置此參數(shù)
#設(shè)置可訪問的用戶。系統(tǒng)會自動將%S轉(zhuǎn)換成登錄賬號。 create mode # 設(shè)置文件的訪問權(quán)限,默認(rèn)值為0744。 directory mode 設(shè)置目錄的訪問權(quán)限,默認(rèn)值為0755。 path #若共享資源是目錄,則指定目錄的位置;若為打印機(jī),則指定打印機(jī)隊(duì)列的位置。 read only #設(shè)置共享資源是否只讀或可以寫入,默認(rèn)值為yes。若共享資源為打印機(jī)時(shí),此參數(shù)無任何意義。這一項(xiàng)與writable相反。 Public #等同于guest ok選項(xiàng),表示是否允許用戶不使用賬號和密碼便能訪問此資源。如果起用此功能,當(dāng)用戶沒有賬號和密碼時(shí),則會利用“guest account=”所設(shè)置的賬號名登錄。該選項(xiàng)默認(rèn)值為no,即不允許沒有賬號即密碼的用戶使用此資源。 avalible #設(shè)置是否啟用此共享資源。默認(rèn)值為yes。若將此參數(shù)設(shè)置為no,則不管其他參數(shù)設(shè)置為什么,所有人均不得使用此資源。
valid users
4.3.2 配置Samba文件共享舉例 以下通過配置3個(gè)不同的共享目錄為例,可以知道配置Samba文件共享的一般方法。 [global] ………… #采用前面的[global]配置 [homes] #用來配置用戶訪問自己的目錄 comment = Home Directories #注釋 browseable = no #用戶私人目錄,不給別人瀏覽(并不是不允許別人訪問) writable = yes #允許用戶寫入自己的目錄 valid users = %S #可訪問的用戶局限于用戶自己。%s會被自動轉(zhuǎn)換為登錄賬號。 create mode = 0664 #文件的訪問權(quán)限 directory mode = 0775 #目錄的訪問權(quán)限 # This one is useful for people to share files [tmp] #這個(gè)部分為所有用戶提供臨時(shí)共享的方式 comment = Temporary file space #注釋文字 path = /tmp #指定位置 read only = no #可以讀寫 public = yes #允許用戶不用賬號和密碼訪問 [public] # 這個(gè)部分為所有用戶提供可以共同訪問的目錄。允許staff組用戶寫入,但其他用戶只可訪問,不能寫入。 comment = Public Stuff path = /home/samba public = yes writable = yes printable = no write list = @staff # write list參數(shù)是用來設(shè)置具有寫權(quán)限的用戶列表。這里只允許staff組的成員有寫的權(quán)限 [fredsdir] #這個(gè)部分用來設(shè)置某一用戶fred的訪問權(quán)限。 comment = Fred’s Service path = /usr/fred/private valid users = fred #只有fred可以訪問(注意:即使security=share,也不代表用戶登錄Linux 主機(jī)后可以訪問任意資源。)該共享目錄 public = no writable = yes printable = no
說明:配置文件修改后,要重新用testparm測試配置文件,重新啟動Samba 服務(wù)器程序。 4.3.3 使用共享的目錄 現(xiàn)在以Windows 2000為例,介紹fred 用戶如何讀取Linux 所共享的資源。 1.以fred賬號登錄Windows ,然后在“網(wǎng)上鄰居” 中找到前面所設(shè)置工作組smbgroup。如圖4-1所示
圖4-1
2.雙擊工作組smbgroup圖標(biāo),將看到Samba 服務(wù)器smb_server,如圖4-2所示
圖4-2 3.雙擊服務(wù)器smb_server圖標(biāo),若在Windows 中使用的密碼與Linux 的用戶密碼相同,即可以看到服務(wù)器上所共享的資源(表示登錄Linux 主機(jī)成功),如圖4-3所示。
圖4-3
圖4-4 5.在圖4-3的資源管理器窗口中,雙擊所要訪問的共享目錄(如fredsdir),出現(xiàn)圖4-5所示“輸入網(wǎng)絡(luò)密碼”窗口,輸入fred的密碼(因?yàn)?/span>fredsdir共享目錄只允許fred訪問,所以在此要輸入fred的smb密碼)結(jié)果如圖4-6所示
圖4-6 4.4 配置Samba打印共享4.4.1 Samba中的打印共享Samba中涉及打印共享的參數(shù)主要有以下幾個(gè) 1. 在[global]字段中涉及共享打印機(jī)的主要字段 printcap name =/etc/printercap #這是指定打印機(jī)配置文件的位置。打印守護(hù)進(jìn)程讀取printcap文件中的配置信息,監(jiān)視打印機(jī)的工作情況。 load printers #指定是否要加載打印機(jī)(使打印機(jī)可以共享)。默認(rèn)值為yes。 . #如果用戶想要自動載入打印機(jī)列表,而不是個(gè)別地安裝,則必須在此指定以上兩項(xiàng) printing =cups #指定打印系統(tǒng)類型。只有在你的打印系統(tǒng)不是標(biāo)準(zhǔn)的情況下,才必須指定,否則不必指定。指定打印系統(tǒng)類型將影響到smb.conf文件中與打印機(jī)相關(guān)的命令(如print,lpq,lppause,lpresune)的執(zhí)行方式。默認(rèn)的打印系統(tǒng)類型為bsd,其他的類型還有sysv,plp,lprng,hpux,qnx,cups。
4.4.2 配置共享打印機(jī) 1.在Linux Samba 服務(wù)器上配置本地打印機(jī) 2.獲得 Adobe Postscript Driver 按下列步驟進(jìn)行 (1)到http://www.adobe.com/下載簡體中文版Adobe Postscript Driver,文件名為Winstchs.exe。 (2)在Windows 環(huán)境(如Windows 2000 Professional)下安裝。 (3)進(jìn)入Windows 計(jì)算機(jī)C:WINNTsystem32spooldrivers目錄,從子目錄w32x86和WIN40中挑選出表4-1所示的8個(gè)文件,并且將文件名字母全部改為大寫。 表4-1
(4) 在Linux 計(jì)算機(jī)上創(chuàng)建/usr/share/cups/目錄, 表4-1所示的8個(gè)文復(fù)制到此目錄下。 3.設(shè)置smb.conf的打印共享配置 [global] ………… #按上文將有關(guān)共享打印機(jī)的幾個(gè)主要配置參數(shù)寫到此處。 [printers] #這部分用于配置打印機(jī)共享,所有用戶都可以共享打印機(jī)。 comment = All Printers #注釋文字 path = /var/spool/samba #設(shè)置打印機(jī)隊(duì)列的位置,用戶必須自行創(chuàng)建該目錄,存放打印的臨時(shí)文件 browseable = no #不允許瀏覽共享打印機(jī) # Set public = yes to allow user ’guest account’ to print guest ok = no #必須用賬號和密碼才可以訪問共享打印機(jī) writable = no #共享打印機(jī),writable必須設(shè)置為no printable = yes #允許用戶更改打印機(jī)隊(duì)列中的文件 [fredsprn] #該共享的打印機(jī)只允許fred私人使用 comment = Fred’s Printer valid users = fred path = /home/fred #打印機(jī)隊(duì)列是fred的用戶目錄,要主義fred必須有權(quán)訪問該目錄。 printer = freds_printer #設(shè)置共享打印機(jī)的名稱,此參數(shù)又可以寫成“printer name=”,該參數(shù)如果放在[global]字段,所有打印服務(wù)用到的打印機(jī)名都將是一樣的 public = no writable = no printable = yes
4.為Windows 客戶機(jī)準(zhǔn)備打印驅(qū)動 為了給Windows 客戶機(jī)準(zhǔn)備打印驅(qū)動,可以運(yùn)行cupsaddsmb命令。執(zhí)行如下的操作將打印機(jī)驅(qū)動程序放置在/etc/samba/drivers目錄下。 創(chuàng)建/etc/samba/drivers目錄 [root@smb_sever root] #mkdir /etc/samba/drivers
運(yùn)行cupsaddsmb命令,以root身份執(zhí)行該命令,共享所有打印機(jī) [root@smb_sever root]# cupsaddsmb -a -U root
5.從Windows 客戶機(jī)訪問Samba 共享打印機(jī) 當(dāng)配置好Samba 共享打印機(jī)之后,合法用戶就可以在Windows 的網(wǎng)上鄰居看到被共享的打印機(jī)。雙擊共享的打印機(jī),在彈出的窗口中確認(rèn)安裝此打印機(jī)驅(qū)動即可。 4.5 在Linux環(huán)境下應(yīng)用Samba服務(wù)在Linux平臺客戶機(jī)上使用Windows 計(jì)算機(jī)提供的共享資源或Linux Samba 服務(wù)器提供的共享資源,通常有兩種方法。分別是使用smbclient命令和使用smbmount命令。 現(xiàn)在以使用Windows 計(jì)算機(jī)提供的共享資源為例分別介紹這兩種方法。先在Windows 中設(shè)置共享的文件夾,Windows 計(jì)算機(jī)NetBios名為win,IP地址為192.168.0.3,共享的文件夾共享名為share_dir。Linux計(jì)算機(jī)名為lin,且安裝了smb組件。 4.5.1 使用smbclient命令 在Linux計(jì)算機(jī)上,執(zhí)行以下命令 [root@lin root] # smbclient -L win 或者 [root@lin root] # smbclient -L 192.168.0.3
結(jié)果在Linux計(jì)算機(jī)上列表顯示出win所提供的所有共享信息。 在Linux計(jì)算機(jī)上,執(zhí)行以下命令 [root@lin root] # smbclient //win(或IP地址)/share_dir -U tom 其中tom是Windows 計(jì)算機(jī)上的用戶。系統(tǒng)提示輸入tom的密碼,輸入正確后,系統(tǒng)提示 smb:> 此時(shí),就可以向使用FTP客戶的方法使用smbclient。 4.5.2 使用smbmount命令 知道某臺主機(jī)所共享的資源后,執(zhí)行smbmonut命令將遠(yuǎn)程共享掛載到本地。 [root@lin root] # mkdir –p /mnt/smb/win_share_dir 先創(chuàng)建掛載點(diǎn)目錄 [root@lin root] #smbmount //win/share_dir /mnt/smb/win_share_dir 將遠(yuǎn)程共享//win/share_dir//win/share_dir掛載到本地目錄/mnt/smb/win_share_dir 這樣就可以象訪問本機(jī)目錄一樣操作此掛載的目錄了。若要卸載已掛載的目錄,則執(zhí)行umount命令即可。 [root@lin root]#umount /mnt/smb/win_share_dir |
|