通過SAMBA可以讓Linux服務器成為Windows域中的一員,也可以讓Windows客戶端通過網上鄰居來訪問Linux服務器。不過Windows與Linux畢竟是兩個不同的操作系統平台。即使SAMBA服務器提供了雙方溝通的一個平台,但是在聯機過程中仍然會出現一些問題。我今天就這些常見的問題進行一些說明,並提供一些解決措施。希望這些內容可以幫助系統管理員解決日常工作中遇到的難題。
一、XP客戶端可以登錄,2000客戶端卻不可以。
筆者剛開始采用SAMBA服務器的時候,遇到過一個奇怪的問題。那時企業中客戶端還沒有完全統一,主要有2000客戶端與XP客戶端。在部署SAMBA應用的時候,卻發現一個奇怪的問題,只有XP客戶端可以通過網絡鄰居來訪問Linux服務器;而其他客戶段卻不行。經過一系列的措施後,我終於發現了問題所在。
這主要是Windows操作系統與Linux操作系統在密碼的處理機制上不同。目前主流的Windows操作系統都已經使用加密的方式來發送密碼。而在SAMBA服務器上,則系統管理員可以決定是否要指定用戶密碼必須以加密的形式發送到SAMBA服務器,利用encrypt passwords選項來確定。如果這個選項設置為NO,則所有的Windows客戶端都將不能夠登陸到Linux服務器上。為此,筆者把這個選項設置為YES後,即指定用戶密碼必須以加密的形態發送到SAMBA服務器。然後所有的Windows客戶端就都可以正常登陸到了Linux系統服務器了。
那麼為什麼以前只有XP客戶端可以登陸,而2000客戶端不能夠登陸了?查找了相關的資料並經過測試後,發現如果把以上這個選項設置為NO的話,則必須要通過修改客戶端的配置來實現。如需要把SAMBA服務器軟件包中的一個文件復制到客戶端上。只有如此,在沒有啟用encrypt passwords的基礎上,Windows客戶端才可以正常連接到Linux服務器上。
如上圖所示,在SAMBA安裝目錄下有Registry這個文件夾。這個文件加中存儲著一些密碼處理文件。如果把選項encrypt passwords設置為NO的情況下,則需要把這些文件復制到對應的Windows客戶端下,否則的話就不能夠正常登陸。筆者把Win2000這個注冊表文件復制到2000客戶端,並雙擊直接把注冊表的值倒入到注冊表中。重新啟動客戶端後,2000系統就可以順利訪問Linux服務器了。
為此我覺得大部分情況下還是把encrypt passwords選項設置為YES好。如果有特殊的需要(如出於訪問控制的需要等原因),則可以把這個選項設置為No。然後把這些注冊表文件復制到對應的客戶端上,以保證需要訪問的客戶段可以正常連接到Linux服務器上。
二、不支持大寫密碼。
為了保障Linux服務器上資源的安全性,為連接設置密碼是必須的。但是我在部署SAMBA服務器過程中,卻發現一個非常奇怪的問題。原來在為SAMBA服務器設置訪問密碼的時候,竟然不支持全部為大寫的密碼。也就是說,密碼若全部為大寫ABCDEF則Linux服務器不認可;但是abcdef則是認可的。這到底是什麼原因呢?
在Windows操作系統中,雖然對於密碼的大小寫是敏感的,但是對於密碼中大寫字符的個數則沒有限制。但是SAMBA服務器則不同。在SAMBA服務器中,有一個參數password level。大家不要誤解以為這是一個設置密碼安全等級的選項,其實不是。這個選項主要用來設置SAMBA服務器允許的大寫密碼的字符數。如把這個參數設置為3的話,則在密碼設置中只允許三個大寫字符。如果密碼為六為,全部為大寫字符的話,則SAMBA服務器就不會接受這個密碼。顯然這是一個比較糟糕的設計。因為在Windows客戶端中沒有這個限制,而在SAMBA服務器有這個限制,則容易造成他們之間的不兼容。如果企業用戶喜歡利用大寫字符作為密碼的話,則需要更改這個參數。如系統管理員規定密碼的最大長度為8位,則就需要把這個選項的值設置為8。
三、某些IP地址的客戶端無法正常訪問。
有時候企業的客戶或者供應商到企業進行訪問的時候,也需要用到企業的網絡。他們會有自己的筆記本電腦,然後通過企業的網絡進行互聯網訪問或者與其它員工進行文件交換等等等。為了Linux服務器上資源的安全,我就在服務器上設置只有企業的客戶端電腦可以訪問Linux服務器。這個設置也比較簡單,只要通過IP地址來限制即可。如在SAMBA服務器下,有一個/etc/samba/smb.conf的配置文件。在這個文件中,有一個hosts allow的參數,就可以用來設置允許訪問的客戶端。
默認情況下,這個參數是不起作用的。也就是說,所有的客戶端只要有合法的用戶名與密碼都可以正常訪問Linux服務器。但是如果在這裡進行限制的話,則首先需要IP地址合法,服務器才會進行密碼與用戶名的校對。如果IP地址都不合法的話,則即使有合法的用戶名與密碼,也無法正常訪問Linux服務器。如果要啟用這項功能,可以把這個參數前面的注釋符號去掉。注意在這個配置文件中,注釋符號是冒號(:)。而不是Linux系統配置文件中的#號。這個細小的差異各位系統管理員需要注意。
所以到企業中的客戶端,有幾台客戶端不能夠正常通過SAMBA服務器訪問Linux操作系統上的共享資源,而其他客戶端可以正常訪問的話,則需要系統管理員就需要考慮是否是這個參數在作怪。最簡單的測試方法就是先把這個參數禁用掉,然後再測試一下客戶端看能否正常連接到Linux服務器上。如果可以連接了,則說明是這個參數配置有錯誤。此時系統管理員就需要仔細檢查這個參數的配置,看看有沒有把這些客戶端的IP地址加入到這個參數列表中。如果禁用掉這個參數之後還不啟作用的話,則可能是其他方面的原因了。不過通常情況下,都是因為這個參數中的IP地址配置不當所引起的。
順便說一句,通過IP地址來限制客戶端連接到SAMBA服務器的話,並不是很安全的處理措施。因為服務器無法控制客戶端上IP地址的更改。如果一定要采用這種方式的話,則需要其他設備的幫助。如可以在路由器上實現IP地址與MAC地址的幫定,讓客戶端無法更改IP地址。從而提高這個安全機制的安全性。
四、日志文件太過於龐大。
在SAMBA服務器中,也有日志管理的功能。即企業用戶通過SAMBA客戶端登陸到Linux服務器後所有的操作都會在日志中留存相關的記錄。這主要是為了方便後續的維護以及安全方面的需要。但是有時候日志文件管理不當這也會成為一種負擔。如一年以來的日志信息都保存在同一個文件中,那麼這個文件就會變得非常的龐大。管理員光打開這個文件可能都需要一定的時間;而去查找相關的內容則可能需要花費更多的時間。而且這個日志文件日益龐大,也會對服務器的硬盤空間產生比較大的壓力,會影響Linux服務器的性能。
為了解決問題,在SAMBA的全局配置文件中提供了一個max log size的參數。默認情況下,這個參數的值為0,即對於日志文件沒有大小的限制。系統管理員可以企業的實際情況來設置這參數。如可以把這個參數的值設置為200KB(這個參數的單位為kb)。服務器會定期檢查這個上限值。如果超過這個設置的話,系統會關閉這個日志文件並重新命名這個日志文件,並會在日志文件名字中加入old;然後重新建立一個日志文件。注意,這裡並不是把原先的日志文件覆蓋掉,而只是把新的日志信息保存到一個新的日志文件中,即進行分文件處理。為此系統管理員仍然需要根據硬盤的大小來手工清理一些過期的日志文件信息。為了防止日志文件過大過多對Linux服務器性能的影響,我建議各位系統管理員,最好能夠把這個日志文件定位到一個獨立的硬盤或者分區文件中。如可以用過log file參數來重新制定日志文件的存儲路徑。