天天看點

建構Samba檔案共享伺服器

linux是一個優秀的作業系統,尤其是它的網絡功能,可以與各種作業系統輕松連接配接,實作多種網絡服務。由于linux系統的高穩定性和可靠性,以及低廉的價格,使它受到越來越多使用者的青睐。在一些中小型網絡,或者企業的内部網中,利用linux建立檔案伺服器是一個很好的解決方案。針對企業内部網中的絕大部分客戶機采用windows的情況,我們可以通過使用samba來實作檔案伺服器功能。

samba是在linux及unix上實作smb(servermessageblock)協定的一個免費軟體,由伺服器及用戶端程式構成。這裡我們隻介紹伺服器程式。

我們首先介紹一些smb協定的情況。smb協定是建立在netbios協定之上的應用協定,是基于tcp138、139兩個端口的服務。netbios出現之後,microsoft就使用netbios實作了一個網絡檔案/列印服務系統。這個系統基于netbios設定了一套檔案共享協定,microsoft稱之為smb(servermessageblock)協定。這個協定被用于lanmanager和windows伺服器系統中,實作不同計算機之間共享列印機和檔案等。是以,為了讓windows和unix/linux計算機相內建,最好的辦法就是在unix/linux計算機中安裝支援smb協定的軟體。這樣使用windows的用戶端不需要更改設定,就能像使用windowsnt或windows2000伺服器一樣,使用unix/linux計算機上的共享資源了。samba使smb協定運作在netbios協定上,并且使用windows的netbeui協定讓unix/linux伺服器可以在windows的網絡鄰居上被通路到。

samba的伺服器程式可以實作以下主要功能:

◆檔案及列印共享;

◆計算機名與ip的解悉;

◆wins服務的支援;

◆使用者權限設定(如果配合linux的quota還可以實作使用者磁盤空間配額)。

安裝

samba有兩種安裝方式:

1.安裝rpm包

我們以redhat為例:

mount -tiso9660 /dev/cdrom /mnt/cdrom

cd /mnt/cdrom/redhat/rpms

rpm-ivh samba*.rpm

或者更新安裝 

rpm-uvhsamba*.rpm

2.安裝samba源代碼

tar-zxvf samba*.tar.gz

cd /samba/src

./configure

./makedep

./make

./makeinstall

配置

samba安裝後,可以看見/etc/samba這樣一個目錄,裡面存放着與samba相關的一些檔案,如lmhosts、smb.conf、smbpasswd等。smb.conf是samba的核心,一切的功能配置都在這個檔案中,它有許多不同的配置選項。為避免混淆,我們要介紹一些對于samba正确操作必不可少的參數設定。在配置這個檔案前先介紹一下samba中的環境變量。

%s代表共享名;

%p代表共享的主目錄;

%u代表共享的使用者名;

%g代表使用者所在的工作組;

%u代表使用者名;

%g代表目前對話的使用者的主工作組;

%h代表使用者的共享主目錄;

%v代表samba伺服器的版本号;

%h代表samba服務機器的主機名;

%m代表客戶機netbios名稱;

%l代表伺服器netbios名稱;

%m代表客戶機的主機名;

%n代表nis伺服器名;

%p代表nis服務的home目錄;

%i代表客戶機的ip;

%t代表系統目前日期和時間。

使用cd指令進入smb.conf所在的目錄,啟動常用的文本編輯器,例如vi、emacs等等。

1.smb.conf的全局設定

[global]

#workgroup=nt-domain-nameorworkgroup-name

serverstring=mysambaserver

hostsallow=192.168.1.192.168.2.127.

printcapname=/etc/printcap

loadprinters=yes/no

printing=bsd

 第一行告訴samba我們定義該samba伺服器所在的工作組名或者域名;第二行告訴samba對于此伺服器的描述。接下來可以設定允許通路的網絡和主機ip。上例就允許ip為192.168.1.0/24、192.168.2.1/24及127.0.0.0/8的主機通路該伺服器。緊接着是在/etc/printcap這個檔案中取得列印機的描述資訊,并設定是否自動共享列印機。下一行則是定義了列印系統的類型,其預設值是bsd,并且有lprng、sysv、plp、bsd、aix和hpux等幾個可選項。

logfile=/var/log/samba/log.%m

maxlogsize=0

上面這兩行則是samba日志的相關定義。其記錄檔案的位置是放在/var/log/samba/%m.log。後面的一條是定義日志記錄檔案的大小,機關是kb,如果是0的話就不限大小。

2.samba安全性設定

samba不使用标準unix密碼來認證使用者。因為當windows發送以明文表示的密碼時,其都以加密形式發送smb/cifs密碼,這樣就與标準unix密碼散列不相容了。換句話說,samba沒有辦法使用标準unixpassword散列來驗證windows加密的密碼是否正确。但幸運的是,samba提供了許多方法來将這兩個資料庫同步。下面介紹samba安全性的設定。

guestaccount=nobody

security=user

passwordserver=

encryptpasswords=yes/no

其中第一行定義samba預設的使用者賬号,這個賬号必須在/etc/passwd中。第二行則聲明了samba的安全級别,分為share、user、server和domain四級。它們分别對應的驗證方式為:share是沒有安全性的級别,任何使用者都可以不要使用者名和密碼通路伺服器上的資源;user是samba的預設配置,要求使用者在通路共享資源之前必須先提供使用者名和密碼進行驗證;server和user安全級别類似,但使用者名和密碼是遞交到另外一個伺服器去驗證,如果遞交失敗,就退到user安全級;domain這個安全級别要求網絡上存在一台windows的域控制器,samba把使用者名和密碼遞交給它驗證。需要注意的是都要求此使用者是本linux機器上的系統賬戶。目前面的security設定為server或domain的時候,才有必要設定passwordserver。它可以是域名,也可以是機器的ip。encryptpasswords這個選項則設定是否對密碼進行加密。samba本身有一個密碼檔案/etc/samba/smbpasswd,如果不對密碼進行加密,則在驗證期間客戶機和伺服器之間傳遞的是明文密碼。

smbpasswdfile=/etc/samba/smbpasswd

usernamemap=/etc/smbusers

以上兩行分别設定了存放samba使用者密碼的檔案是/etc/samba/smbpasswd,以及指定使用者映射檔案是/etc/samba/smbusers。如果我們在這個檔案裡面指定一行root=administrator,客戶機的使用者是administrator,連接配接時會被當作使用者root看待。

3.網絡和主機的性能設定

除了以上的使用者權限設定外,還有關于網絡和主機的性能設計。

include=/etc/smb.conf.%m

指定對不同機器的連接配接采用不同的配置檔案。一般為了管理使用/etc/samba/smb.conf.%m,采用samba變量,把配置檔案和客戶機的netbios名稱關聯起來,能很容易地控制這些客戶機的權限和設定。

socketoptions=tcp_nodelayso_rcvbuf=8192so_sndbuf=8192

這是網絡socket方面的一些參數,能實作最好的檔案傳輸性能。

interfaces=192.168.12.2/24192.168.13.2/24

接口選項在機器碰巧有多個網絡接口時特别有用,它可以指定在哪個網絡接口上使用。

remoteannounce=192.168.1.255192.168.2.44

上面指令指定了浏覽清單同步資訊從哪裡取得,例如可以從192.168.2.44或整個子網中獲得。

4.系統的相容性設定

oslevel=33

上面這個參數值是個整數,決定了nmbd是否有機會成為本地廣播區域工作組裡的本地主浏覽器。預設值是零,則意味着nmbd失去浏覽選擇。如果要nmbd有機會成為本地主浏覽器的話,可以設為33。

domainmaster=yes/no

使用者設定上面參數可以讓nmbd成為一個域控制器,取得域的各個清單,并将整個域的清單遞交給本地浏覽器。

preferredmaster=yes/no

preservecase=yes/no

shortpreservecase=yes/no

defaultcase=lower/upper

casesensitive=yes/no

以上幾個參數分别指定nmbd是否是工作組裡首要的主浏覽器。如果指定為yes,nmbd啟動時候強制選擇一個浏覽;接下來的幾項是使用者指定拷貝dos檔案的時候是否保持大小寫,預設是no,也就是不保持。所有dos檔案的預設是大寫,小寫不敏感,是以這項一般設定為no。

 5.主機名的查詢設定

從根本上說,可以把wins看做是本地的動态dns資料庫。當samba作為wins伺服器運作的時侯,同一子網上每個與windows相容的機器都會向samba注冊它的ip位址和netbios名稱(又稱“計算機名”)。這可以讓windows機器使用samba的wins資料庫來請求特定netbios名稱的ip位址。

繼續閱讀