Ubuntu下Samba服務(wù)器的搭建
1.Samba軟件包的安裝 在Ubuntu的終端中輸入一下命令: #sudo apt-get install samba #sudo apt-get install smbclient 2.Samba服務(wù)器的啟動(dòng)與關(guān)閉 啟動(dòng)Samba服務(wù)器只需執(zhí)行如下命令: #sudo /etc/init.d/samba start #ps -aux 可以看到Samba服務(wù)會(huì)同時(shí)啟動(dòng)兩個(gè)服務(wù),,其中smbd主要用來管理共享出來的目錄,nmbd主要用來解析NetBIOS名,。在Windows系統(tǒng)中,, 主機(jī)可以被加入一個(gè)組中,這樣每個(gè)主機(jī)都必須有一個(gè)名字,,這個(gè)名字是用于在網(wǎng)上被標(biāo)志的名,,并非機(jī)器的主機(jī)名,將其稱為NetBIOS名,。其中nmbd進(jìn) 程是隨著smbd進(jìn)程啟動(dòng)而啟動(dòng),。 關(guān)閉Samba服務(wù),使用命令: #/etc/init.d/samba stop 或者: #smbcontrol smbd shutdown -----------此命令只關(guān)閉smbd 重新啟動(dòng)Samba服務(wù)器: #/etc/init.d/samba restart 3.配置Samba服務(wù) Samba服務(wù)器主要配置文件為/etc/samba/smb.conf,,并且可以將NetBIOS名與主機(jī)的對(duì)應(yīng)關(guān)系寫在/etc/samba/lmhosts文件中,。 (1)在Windows系統(tǒng)中不用輸入密碼訪問Linux共享目錄 在Linux共享一個(gè)目錄,將建立好的目錄的設(shè)置信息寫入/etc/smb.conf文件即可,。如:若共享/home/share目錄,,要在 Windows系統(tǒng)中訪問這個(gè)共享的目錄,,假設(shè)Windows主機(jī)的IP為192.168.0.11,Linux主機(jī)的IP為192.168.10,,進(jìn)行 如下操作: #mkdir /home/share #vi smb.conf 將文件中的內(nèi)容做如下相應(yīng)修改: security=user 改為security=share 在文件結(jié)尾添加如下行: [share] comment=this is Linux share directory path=/home/share public=yes writable=yes 保存退出,,啟動(dòng)Samba服務(wù): #/etc/init.d/samba start 設(shè)置完成,! 在Windows 下訪問共享目錄,,可點(diǎn)擊運(yùn)行,輸入 \\192.168.0.10\share 這樣就能以匿名用戶訪問共享目錄share了,。 其中配置文件smb.conf主要可以分為兩部分:前一部分為Global Settings(全局部分),全局部分能夠?qū)χ鳈C(jī)的相關(guān)信息進(jìn)行配置,,而且能夠配置訪問時(shí)是否需要密碼。常用選項(xiàng)有: workgroup=MSHOME 這部分是Windows主機(jī)的工作組明,,Windows主機(jī)必須在同一個(gè)工作組中,, server string=%h server(Samba,Ubuntu) 這個(gè)選項(xiàng)是顯示在Windows上的信息,可以自定義,,其中%h為Samba配置文件中的變量,,代表了主機(jī)名,即使用hostname命令得到的主機(jī)名,。 log file=/var/log/samba/log.%m 這里指定了Samba服務(wù)的日志文件所在位置,,其中%m也是samb.conf文件的變量,代表了登錄主機(jī)的NetBIOS名,。Windows主機(jī)的NetBIOS命令可以通過鼠標(biāo)右鍵打開“我的電腦/屬性/計(jì)算機(jī)明/更改/其他“來查看,。 max log size=1000 設(shè)置日志文件的最大尺寸,大小為KB,。 需要注意的是在smb.conf文件中“?!焙汀埃弧倍际亲⑨?。 在smb.conf文件中跌入部分就是共享部分,,在此部分中需要將共享的目錄添加到此文件中。此部分的格式和主要選項(xiàng)如下: [share] ----------在Windows主機(jī)中看到的共享文件名,,不一定與Linux中共享的文件名一致,, comment=this is Linux share directory ----------對(duì)此目錄的說明 path=/home/share -------Linux系統(tǒng)真實(shí)的共享目錄,必須為絕對(duì)路徑 public=yes -------是否允許所有人都能夠看到此目錄,,no為看不到 writable=yes -------是否允許用戶在此目錄下可寫,,no為不可些,如果可寫,,還需要目錄具有w權(quán)限 read only=yes --------設(shè)置用戶是否只讀 create mode=0700 --------如果有可寫權(quán)限,,建立的文件默認(rèn)的權(quán)限掩碼 directory mode=0755 --------如果有可寫權(quán)限,建立的目錄默認(rèn)的權(quán)限掩碼 (2)在Windows系統(tǒng)之需要輸入密碼才能訪問Linux共享目錄 在smb.conf文件中,,默認(rèn)行是: security=user 這行設(shè)置了Samba的安全等級(jí),,Samba一共可以設(shè)置四個(gè)安全登記,,由底到高分別為: share:這個(gè)選項(xiàng)表示任何人都可以不需要輸入密碼登錄。 user:這個(gè)是Samba的默認(rèn)級(jí)別,,要求每個(gè)用戶必須輸入密碼才能登錄,。 server:user級(jí)別的密碼都是保存在本機(jī)上,而server級(jí)別的密碼和用戶名都保存在另一臺(tái)主機(jī)上,。 domain:這個(gè)級(jí)別要求網(wǎng)絡(luò)里必須有一臺(tái)Windows的域控制器,,驗(yàn)證工作由域控制器來完成。 需要注意:只要輸入用戶名和密碼的級(jí)別,,其用戶名一定首先也是Linux系統(tǒng)內(nèi)的用戶,。 如果將Samba的安全級(jí)別設(shè)置了user級(jí)別,那么用戶登錄Samba主機(jī)必須輸入密碼,,此用戶必須是Linux中的/etc/passwd文件存在的用戶,,smb.conf文件的配置如下: 在smb.conf文件中的security=user下加入: smb passwd file= /etc/samba/smbpasswd 在共享部分添加: [homes] comment=Home Directories valid users=%S 其中%S為一個(gè)變量,它代表了登錄用戶的用戶名,,既認(rèn)證的用戶登錄后就能進(jìn)入自己的宿主目錄,。然后在 /etc/samba下建立smbpasswd文件并加入用戶: #touch /etc/samba/smbpasswd #smbpasswd -a user1 NEW SMB password: Retype new SMB password: 這樣就可以讓user1登錄Samba主機(jī)了。其中smbpasswd命令的格式為: #smbpasswd [-選項(xiàng)] 用戶名 常見選項(xiàng)有: -a:新添加一個(gè)Samba用戶,。 -d:禁用一個(gè)Samba用戶,。 -e:使禁用的Samba用戶解禁。 如果需要對(duì)設(shè)置進(jìn)行檢測,,我們可以直接使用testparm命令,。 (3)在Linux中訪問Windows的共享目錄 在Linux中,可以直接將Windows中的共享目錄掛在到本機(jī)中,,然后就像操作自己主機(jī)上的文件一樣進(jìn)行操作,。我們可以使用smbclient命令查看指定主機(jī)的共享目錄信息。 # smbclient -L //[目標(biāo)主機(jī)IP地址] 當(dāng)查看到Windows系統(tǒng)中的共享目錄后,,可以使用smbmount命令來進(jìn)行掛載共享的目錄,,smbmount命令的格式為: #smbmount '\\Windows主機(jī)IP\共享的目錄名' 掛載點(diǎn) -O username (4)在Linux中訪問Linux主機(jī)的共享目錄 跟訪問Windows中的共享目錄一樣,用自己的共享目錄測試如下:
#testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[sharedoc]" Unknown parameter encountered: "valid user" Ignoring unknown parameter "valid user" ....... [sharedoc] path=/sharedoc read only=No testparm是Samba提供的一個(gè)十分有用的測試工具,它除顯示Samba所有配置參數(shù)默認(rèn)值外,,還能檢測參數(shù)的實(shí)際取值,,并與Samba管理員所設(shè)置的取值進(jìn)行對(duì)比,檢測smb.conf文件有沒有包含任何無效參數(shù),。 通過測試發(fā)現(xiàn),,設(shè)置共享資源時(shí),,參數(shù)“valid users”少寫了個(gè)"s“ ,變成了"valid user",,結(jié)果在讀取配置文件時(shí)檢測為未知參數(shù)并忽略了它,,這樣這條參數(shù)就無效了,也就相當(dāng)于沒有設(shè)置有效用戶,,則默認(rèn)共享目錄為所有用戶都可以訪問,, 就出現(xiàn)了前面提到的問題??梢娙绻恍⌒脑O(shè)置錯(cuò)誤,,后果是相當(dāng)嚴(yán)重的,。 Samba的配置選項(xiàng)語法要求嚴(yán)格,,建議配置好后用testparm檢測一下看看是否有語法錯(cuò)誤,以免發(fā)生此種現(xiàn)象,。 2.用戶權(quán)限設(shè)定無效 在解決了限定用戶的問題,,又發(fā)現(xiàn)明明設(shè)置了"writable=yes",賦予user1寫權(quán)限,,但user1在Windows客戶端卻無法對(duì)這個(gè)共享目錄進(jìn)行寫操作,。 這里有個(gè)概念問題,盡管Samba授予用戶user1對(duì)共享資源具有寫權(quán)限,,但底層Linux系統(tǒng)許可不允許user1在共享資源上添加文件或目 錄,。這時(shí),唯有更改該目錄的Linux文件權(quán)限設(shè)置,,更改完成后,,才可以進(jìn)行前述的寫入操作。也就是說,,Linux系統(tǒng)中用戶user1對(duì)此目錄的權(quán)限與 Samba服務(wù)中授予用戶user1對(duì)此目錄的操作權(quán)限要取一個(gè)交集,! 觀察共享目錄/sharedoc的權(quán)限: #ls -ld /sharedoc drwxr-xr-x 2 root root 4096 2月 6 23:54 /sharedoc 在根目錄下只有root只有寫操作,root創(chuàng)建的目錄/sharedoc自然所有者為root,,所屬組為root管理員,,看到用戶user1并不 是所屬組的成員更不是所有者,屬于其他人(others),,其他成員只具備"r-x"即可讀可執(zhí)行的權(quán)限,,并不具備寫權(quán)限,所以即便Samba中授權(quán)用戶 user1有寫權(quán)限也無濟(jì)于事,。 如果要授予user1可以進(jìn)行寫操作,,最簡單的辦法就是賦予其他人對(duì)目錄具備寫權(quán)限: #chmod o+w /sharedoc 正確的解決方法最好是將設(shè)置權(quán)限的用戶加入到目錄對(duì)應(yīng)的組中,對(duì)組授權(quán),,進(jìn)行統(tǒng)一管理,。 3.解決中文亂碼問題 在Windows中看到Linux的共享文件和目錄中文都顯示亂碼,。 要解決這個(gè)問題,首先執(zhí)行命令locale查看一下系統(tǒng)的字符集: #locale LANG=zh_CN.GB18030 LC_CTYPE="zh_CN.GB18030" LC_NUMERIC="zh_CN.GB18030" LC_TIME="zh_CN.GB18030" ......... 然后根據(jù)locale查到的字符集設(shè)置,,修改配置文件smb.conf中的"[Global]"全局參數(shù)設(shè)置段: (1)如果locale是zh_CN.UTF-8,,添加如下三行設(shè)置: display charset=UTF-8 unix charset=UTF-8 dos charset=UTF-8 (2)如果locale是zh_CN.GBK、zh_CN.gb2312或zh_CN.GB18030,,添加如下三行設(shè)置: display charset=cp936 unix charset=cp936 dos charset=cp936 重新啟動(dòng)Samba服務(wù),,則無論從Windows網(wǎng)上鄰居還是直接用DOS命令查詢,均可顯示正常中文,。 4.如何不顯示隱藏文件 如果訪問宿主目錄,,那些以"."開頭的隱藏文件都顯示得一清二楚,那么就有可能一個(gè)誤操作把重要的配置文件刪除了,,這是很危險(xiǎn)的,。 要讓隱藏文件不顯示,需要在Samba配置文件的[homes]段添加如下設(shè)置: veto files=/.*/ "veto files"參數(shù)為設(shè)定禁止文件,,指定了既看不見又不能訪問的文件和目錄列表,,列表中每個(gè)條目必須用斜杠(/)分開,星號(hào)(*)和問號(hào)(,?)通配符能夠用于指定多個(gè)文件和目錄,。所以"/.*/"就表示禁止所有以"."開頭的文件。 同時(shí)還可以做其他一些限定,,如Samba所有共享目錄中都禁止顯示包含詞Windows的任何文件,,以".exe"結(jié)尾的任何文件和包含詞bill的任何目錄,可以在[Global]段添加如下行: veto files=/*Windows*/*.exe/*bill/ 需要注意的是: (1)如果要禁止顯示隱藏文件和包含詞newfile的文件,,不能用如下的書寫方式: veto files=/.*/ veto files=/*newfile*/ 這樣設(shè)置,,第一行的禁止顯示隱藏文件將不能生效,必須寫成: veto files=/.*/*newfile*/ (2)設(shè)置"veto files"參數(shù)會(huì)影響Samba的性能,,因?yàn)樵诹谐鑫募筒樵兤陂g,,掃描文件和目錄時(shí),為了匹配,,Samba將被迫搜尋檢查所有的文件和目錄,。
Samba的故障一般排除方法如下(參考): 1.確定故障的癥狀??赡軙?huì)有人告訴你癥狀或你觀察到第一手的癥狀,。 2.因?yàn)樯婕暗氖蔷W(wǎng)絡(luò)系統(tǒng),確定故障發(fā)生在本地還是遠(yuǎn)程,,癥狀經(jīng)常會(huì)幫助你做決定,,或建議能夠先進(jìn)行測試,以便決定,。 3.決定了故障所在的位置后,,就集中用一套標(biāo)準(zhǔn)測試來確定故障的原因,,并嘗試消除癥狀,反復(fù)進(jìn)行,,直到解決問題,。 有關(guān)診斷Samba和Windows客戶之間故障的工具: smbclient:檢驗(yàn)可以訪問的Samba服務(wù)器以及要求的共享已被定義。 smbstatus:檢查水正對(duì)Samba服務(wù)器打開連接,,在訪問什么共享,。 nmblookup:檢測網(wǎng)絡(luò)上的注冊(cè)名稱。 DOS net view命令:從Windows系統(tǒng)檢查服務(wù)器上都提供哪些共享,。 DOS netstat:檢查NetBIOS名稱,、適配器狀態(tài)信息等。 tcpdump:捕獲網(wǎng)絡(luò)文件信息包,,檢查Windows客戶端和服務(wù)器的對(duì)話,。 Ethereal:詳細(xì)分析信息包,檢查Windows客戶端和Samba之間出現(xiàn)的故障,。 |
Samba服務(wù)在Ubuntu服務(wù)器版本中默認(rèn)并沒有安裝。
|