一、獲取源代碼包并進(jìn)行解壓
從samba的官方網(wǎng)站可以下載最新的samba源代碼包。下面我們以samba-3.5.9.tar.gz的源代碼包作為案例進(jìn)行解析。本例中,我們將源代碼包放在目錄/home/samba下,然后執(zhí)行下面的命令進(jìn)行解壓縮。
# tar –xzvf samba-3.5.9.tar.gz
二、配置configure
對(duì)源代碼包進(jìn)行解壓縮后,進(jìn)入目錄
# cd /home/samba/samba-3.5.9/source3
然后執(zhí)行下面的命令進(jìn)行配置。
# ./configure
可能在剛開始時(shí),該目錄下沒(méi)有configure文件,此時(shí)可先執(zhí)行下面的命令
# ./autogen-sh
此時(shí)要求系統(tǒng)安裝了autoconf、automake等工具。
在運(yùn)行上面的配置命令之前,我們可以通過(guò)命令
# ./configure –-help
來(lái)查看配置命令的一些選項(xiàng)。
三、生成與安裝make make install
在環(huán)境配置命令./configure成功執(zhí)行后,可以運(yùn)行命令
# make
來(lái)生成二進(jìn)制可執(zhí)行文件,這可能需要兩到三分鐘。成功生成可執(zhí)行文件后,可以通過(guò)下面命令
#make install
來(lái)進(jìn)行安裝。系統(tǒng)默認(rèn)的安裝路徑是/usr/local/samba
四、配置動(dòng)態(tài)鏈接庫(kù)路徑
安裝完成后,我們需要配置動(dòng)態(tài)鏈接庫(kù)路徑,因?yàn)檫\(yùn)行samba的進(jìn)行smbd和nmbd需要到目錄/usr/local/samba/lib下的動(dòng)態(tài)鏈接庫(kù)文件。但是該目錄不是系統(tǒng)默認(rèn)的動(dòng)態(tài)鏈接庫(kù)文件搜索路徑,于是我們需要將該目錄添加到文件ld.so.conf中。執(zhí)行下面的命令
# vi /etc/ld.so.conf
打開ld.so.conf文件,并在該文件中加入下面這一行內(nèi)容。
/usr/local/samba/lib
然后執(zhí)行命令
# ldconfig
來(lái)更新動(dòng)態(tài)鏈接庫(kù)緩沖。
五、samba配置文件smb.conf
samba在運(yùn)行過(guò)程中需要用到配置文件smb.conf。smb.conf配置文件是samba最重要的配置文件,該文件定義了samba的安全機(jī)制、文件共享和打印共享的目錄和參數(shù)以及其他一些系統(tǒng)配置功能。
配置文件smb.conf的默認(rèn)路徑是/usr/local/samba/lib/smb.conf,我們可以在運(yùn)行smbd進(jìn)程時(shí),通過(guò)-s選項(xiàng)來(lái)執(zhí)行特定的smb.conf文件(具體說(shuō)明見下一節(jié)),一般不推薦使用-s選項(xiàng),因?yàn)槠渑渲霉ぞ?,如smbclient、testparm等默認(rèn)都是讀取/usr/local/samba/lib/smb.conf文件。下面我們以一個(gè)簡(jiǎn)單的配置文件進(jìn)行說(shuō)明,其路徑為/etc/samba/smb.conf。
[global]
workgroup = MYGROUP
server string = Samba Server %v
security = user
log file = /var/log/samba/%m.log
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd
[root]
path = /
valid users = root
writeable = yes
[public]
path = /data
guest ok = yes
read only = yes
上面配置文件定義了root和public兩個(gè)文件共享服務(wù)。關(guān)于上面這個(gè)配置文件的具體細(xì)節(jié),我們這里不做詳細(xì)的論述。這里主要說(shuō)明的一點(diǎn):在samba 3.0.23版本以前驗(yàn)證用戶密碼的默認(rèn)backend是smbpasswd,而3.0.23版本之后的默認(rèn)backend是tdbsam。我們可以通過(guò)參數(shù)passdb backend來(lái)選擇特定的backend。在使用smbpasswd時(shí)默認(rèn)讀取的密碼文件時(shí)/usr/local/samba/private/smbpasswd,我們可以通過(guò)smb passwd file來(lái)指定特定的密碼文件。
在配置完smb.conf文件后,我們可以運(yùn)行testparm(目錄/usr/local/samba/lib下)命令來(lái)對(duì)smb.conf文件進(jìn)行語(yǔ)法檢查,其會(huì)檢測(cè)出哪些參數(shù)名無(wú)法識(shí)別等問(wèn)題。
六、啟動(dòng)samba
samba有兩個(gè)主要的進(jìn)程smbd和nmbd。smbd進(jìn)程提供了文件和打印服務(wù),而nmbd則提供了NetBIOS名稱服務(wù)和瀏覽支持,幫助SMB客戶定位服務(wù)器,處理所有基于UDP的協(xié)議。
配置smb.conf文件后,在開始運(yùn)行samba的服務(wù)進(jìn)程之前。我們需要先做一些準(zhǔn)備工作。運(yùn)行smbpasswd命令(在目錄/usr/local/samba/bin下)
# ./smbpasswd –a root
向smb.conf文件中指定的/etc/samba/smbpasswd文件中添加root用戶以及密碼信息。關(guān)于smbpasswd文件的詳細(xì)內(nèi)容介紹見相關(guān)文檔。
然后運(yùn)行命令
# service iptables stop
關(guān)閉防火墻,因?yàn)榉阑饓赡軙?huì)阻止用戶訪問(wèn)該機(jī)器。下面是運(yùn)行samba的服務(wù)進(jìn)程smbd和nmbd
# /usr/local/samba/sbin/smbd –D –s /etc/samba/smb.conf
# /usr/local/samba/sbin/nmbd –D –s /etc/samba/smb.conf
上面的-D選項(xiàng)指定smbd和nmbd以守護(hù)進(jìn)程的方式啟動(dòng),并且通過(guò)-s選項(xiàng)指定了特定的配置文件/etc/samba/smb.conf。以守護(hù)進(jìn)程方式啟動(dòng)smbd和nmbd的優(yōu)勢(shì)是響應(yīng)速度快,但是要關(guān)閉的話只能kill掉。當(dāng)然我們可以通過(guò)腳本來(lái)執(zhí)行這些操作,這里就不提供腳本了。
七、smbclient進(jìn)行測(cè)試檢查
在啟動(dòng)samba之后,我們可以在本機(jī)使用smbclient(目錄/usr/local/samba/bin下)來(lái)進(jìn)行測(cè)試。下面命令
# cd /usr/local/samba/bin
# ./smbclient –L //127.0.0.1
可以列出本samba服務(wù)器所提供的服務(wù)列表,本例運(yùn)行結(jié)果如下:
[root@localhost bin]# ./smbclient –L //127.0.0.1
Enter root’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.9]/p>
p> Sharename Type Comment
--------- ------- -------
IPC$ IPC IPC Service (Samba Server 3.5.9)
public Disk
root Disk/p>
p>Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.9] /p>
p> Server Comment
----------- -------
LOCALHOST Samba Server 3.5.9
Workgroup Master
------------ -------
MYGROUP LOCALHOST
當(dāng)然也可以通過(guò)smbclient來(lái)訪問(wèn)samba服務(wù)器提供的服務(wù),其命令格式如下:
# ./smbclient “//serverAdderss/aservice” –U username
其中serverAddress是要訪問(wèn)的samba服務(wù)器的IP地址,aservice指定samba服務(wù)器上提供的某個(gè)服務(wù)名稱,選項(xiàng)-U username指定要以哪個(gè)用戶名來(lái)訪問(wèn)samba服務(wù)器。例如
[root@localhost bin]# ./smbclient “//127.0.0.1/root” –U root
Enter root’s password: ; #這里輸入samba用戶root的密碼
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.9]
smb: \&; ; #訪問(wèn)成功,輸入相關(guān)命令進(jìn)行操作
上面?zhèn)€smb: \&;表明了訪問(wèn)成功,此時(shí)我們可以輸入一些命令來(lái)在samba服務(wù)器上進(jìn)行操作,比如ls、mkdir等。q或quit命令執(zhí)行退出,并斷開連接。
八、在Windows客戶端訪問(wèn)samba服務(wù)器
在Windows客戶端,可以在網(wǎng)上鄰居中通過(guò)新建網(wǎng)上鄰居來(lái)訪問(wèn),或者在【開始】——【運(yùn)行】中輸入\\192.168.1.34\root來(lái)訪問(wèn)samba服務(wù)器192.168.1.34上面提供的root服務(wù)。
九、重要選項(xiàng)說(shuō)明
全局選項(xiàng):
全局選項(xiàng)用于[global]的section>選項(xiàng)定義中,其用于說(shuō)明samba服務(wù)器的一些基本屬性。其有些選項(xiàng)可以被其他section>中的選項(xiàng)定義覆蓋。
workgroup = MYGROUP
定義samba服務(wù)器所在的工作組或者域(如果設(shè)置security = domain的話)。
server string = Samba server
設(shè)定samba服務(wù)器的描述,通過(guò)網(wǎng)絡(luò)鄰居訪問(wèn)時(shí)可在備注中查看到該描述信息。
hosts allow = host (subnet)
設(shè)定允許訪問(wèn)該samba服務(wù)器的主機(jī)IP或網(wǎng)絡(luò),該選項(xiàng)的值為列表類型,不同的項(xiàng)目之間使用空格或逗號(hào)隔開,例如hosts allow = 192.168.3.0, 192.168.1.1,該選項(xiàng)設(shè)置允許主機(jī)192.168.1.1以及子網(wǎng)192.168.3.0/24內(nèi)的所有主機(jī)訪問(wèn)該samba服務(wù)器。
hosts deny = host (subnet)
設(shè)定不允許訪問(wèn)該samba服務(wù)器的主機(jī)IP或網(wǎng)絡(luò),其格式與hosts allow一樣。
guest account = guest
設(shè)定了游客的賬號(hào),在游客訪問(wèn)guest ok = yes的共享服務(wù)時(shí),samba服務(wù)器將設(shè)置客戶端以該游客賬號(hào)來(lái)訪問(wèn)共享。
log file = MYLOGFILE
設(shè)定記錄文件的位置。
max log size = size
設(shè)定記錄文件的大小,單位為KB,如果設(shè)置為0則表示無(wú)大小限制。
security =
設(shè)定samba服務(wù)器的安全級(jí),其有四種安全級(jí)別:share、user、server和domain,默認(rèn)為user。關(guān)于這四種安全級(jí)別的詳細(xì)信息,請(qǐng)查看相關(guān)文檔。
password server = ServerIP
設(shè)定了用戶賬號(hào)認(rèn)證服務(wù)器IP,其在設(shè)定security = server時(shí)有效。
encrypt passwords = yes | no
設(shè)定是否對(duì)密碼進(jìn)行加密。如果不對(duì)密碼進(jìn)行加密的話,在認(rèn)證會(huì)話期間,客戶端與服務(wù)器傳遞的是明文密碼。但有些Windows系統(tǒng)默認(rèn)情況下,不支持明文密碼傳輸。
passdb backend = smbpasswd | tdbsam | ldapsam
設(shè)定samba服務(wù)器訪問(wèn)和存儲(chǔ)samba用戶賬號(hào)的后端,在samba-3.0。23之前的默認(rèn)值為smbpasswd,而之后的默認(rèn)值為tdbsam。
smb passwd file =
設(shè)定samba的用戶賬號(hào)文件。對(duì)于源代碼安裝的samba,在samba-3.0.23之前,其默認(rèn)值為/user/local/samba/private/smbpasswd;而samba-3.0.23之后,其默認(rèn)值為/usr/local/samba/private/passwd.tdb。
include = smbconfFile
通過(guò)include選項(xiàng)可以包含其他配置文件,通過(guò)該選項(xiàng)和一些samba定義的變量可以設(shè)定與不同機(jī)器相關(guān)的配置。
local master = yes | no
設(shè)定該samba服務(wù)器是否試圖成為本地主瀏覽器,默認(rèn)值為yes。若設(shè)置為no,則該samba服務(wù)器永遠(yuǎn)不可能成為本地主瀏覽器,而設(shè)置為yes不代表其一定能成為本地主瀏覽器,只是讓其能參與本地主瀏覽器的選舉。
os level = N
N是一個(gè)整數(shù),設(shè)定了該samba服務(wù)器參加本地主瀏覽器選舉時(shí)的權(quán)重,其值越大,權(quán)重越大。os level = 0時(shí),該服務(wù)器將失去選舉的機(jī)會(huì)。
domain master = yes | no
設(shè)定samba服務(wù)器成為域?yàn)g覽器。域?yàn)g覽器從各個(gè)本地主瀏覽器處獲取瀏覽列表,并將整個(gè)域的瀏覽列表傳遞給各個(gè)本地主瀏覽器。
preferred master = yes | no
設(shè)定該samba服務(wù)器是否為工作組里的首要主瀏覽器,如果設(shè)置為yes,則在nmbd啟動(dòng)時(shí),將強(qiáng)制一個(gè)瀏覽選擇。
局部選項(xiàng):
局部選項(xiàng)為除了global外的各個(gè)section>中的參數(shù)。其定義了共享服務(wù)的屬性。
comment =
設(shè)定共享服務(wù)的描述信息。
path =
設(shè)定共享服務(wù)的路徑,其中可以結(jié)合samba預(yù)定義的變量來(lái)設(shè)置。
hosts allow = host(subnet)
hosts deny = host(subnet)
與全局的hosts allow和hosts deny含義相同,其會(huì)覆蓋全局的設(shè)置。
read only = yes | no
設(shè)定該共享服務(wù)是否為只讀,該選項(xiàng)有一個(gè)同義選項(xiàng)writeable。
user = user(@group)
設(shè)定所有可能使用該共享服務(wù)的用戶,可以使用@group來(lái)設(shè)置群組group中的所有用戶賬號(hào)。該選項(xiàng)的值為列表,不同的項(xiàng)目之間使用空格或逗號(hào)隔開。在設(shè)置security = share時(shí),客戶端要訪問(wèn)某共享服務(wù)時(shí)提供的密碼會(huì)與該選項(xiàng)指定的所有用戶進(jìn)行一一配對(duì)認(rèn)證,若某用戶認(rèn)證通過(guò),則以該用戶權(quán)限進(jìn)行共享服務(wù)訪問(wèn),否則拒絕客戶端的訪問(wèn)(設(shè)置security = share不是允許游客訪問(wèn),只有g(shù)uest ok = yes才是允許游客訪問(wèn),切記!!?。?。
valid users = user(@group)
設(shè)定能夠使用該共享服務(wù)的用戶和組,其值的格式與user選項(xiàng)一樣。
invalid users = user(@group)
設(shè)定不能夠使用該共享服務(wù)的用戶和組,其值的格式與user選項(xiàng)一樣。
read list = user(@group)
設(shè)定對(duì)該共享服務(wù)只有讀取權(quán)限的用戶和組,其值的格式與user選項(xiàng)一樣。
write list = user(@group)
設(shè)定對(duì)該共享服務(wù)擁有讀寫權(quán)限的用戶和組,其值的格式與user選項(xiàng)一樣。
admin list = user(@group)
設(shè)定對(duì)該共享服務(wù)擁有管理權(quán)限的用戶和組,其值的格式與user選項(xiàng)一樣。
public = yes | no
設(shè)定該共享服務(wù)是否能夠被游客訪問(wèn),其同義選項(xiàng)有g(shù)uest ok。
create mode = mode
mode為八進(jìn)制值,如0755,其默認(rèn)值為0744。該選項(xiàng)指定的值用于過(guò)濾新建文件的訪問(wèn)權(quán)限,新建文件的默認(rèn)權(quán)限將與create mode指定的值進(jìn)行按位與操作,將結(jié)果再與force create mode指定的值進(jìn)行按位或操作,得到的結(jié)果即為新建文件的訪問(wèn)權(quán)限。
force create mode = mode
mode為八進(jìn)制值,默認(rèn)為0000。其作用參考選項(xiàng)create mode。
directory mode = mode
mode為八進(jìn)制值,默認(rèn)為0755。該選項(xiàng)指定的值用于過(guò)濾新建目錄的訪問(wèn)權(quán)限,新建目錄的默認(rèn)權(quán)限將與directory mode指定的值進(jìn)行按位與操作,將結(jié)果再與force directory mode指定的值進(jìn)行按位或操作,得到的結(jié)果即為新建目錄的訪問(wèn)權(quán)限。
force directory mode = mode
mode為八進(jìn)制值,默認(rèn)為0000。該選項(xiàng)的作用參考選項(xiàng)directory mode。
force user = user
強(qiáng)制設(shè)定新建文件的屬性onwer。若存在一個(gè)目錄,其允許guest可以寫,則guest就可以刪除。但設(shè)定force user為其他用戶,并設(shè)置create mode = 0755,則gues用戶不能夠刪除其新建文件。
上面只是簡(jiǎn)單的介紹了一些重要的選項(xiàng),并且沒(méi)有討論有關(guān)[printers]的選項(xiàng)說(shuō)明,更多選項(xiàng)請(qǐng)man smb.conf進(jìn)行查閱。