samba server的配置文件在/etc/samba/下的smb.conf打開一個終端中輸入: gedit
/etc/samba/smb.conf
也可以用vi編輯.由于文件太長,我把個人認為沒有用的東東刪除了,主要是一些注釋.下面偶解釋一下主要字段的意思.由于我的這個文件配置過了,可能你的
機器和我的不一樣.
======================= Global Settings
=====================================
[global] //設(shè)置samba服務(wù)整體環(huán)境
workgroup = hackase //設(shè)置工作組名
server string = angel server //服務(wù)器的名說明
; hosts allow = 192.168.1. 192.168.2. 127. //限制可訪問此服務(wù)的IP范圍,默認是全部
允許的,要是想設(shè)設(shè)置去掉前面的";"
printcap name = /etc/printcap //打印機配置文件
load printers = yes //是否共享打印機
# bsd, sysv, plp, lprng, aix, hpux, qnx, cups
printing = cups //打印機的類型.標準打印機類型包括以上幾種.
; guest account = pcguest //pcguest為用戶名.可改去掉前邊的";"讓用戶以
pcguest身份匿名登錄,但保證/etc/passwd中有此人.
log file = /var/log/samba/%m.log //為登錄服務(wù)器的用戶建立不同的日志文件.
max log size = 0 //日志文件的大小,"0"代表無限制
//以下是smb.conf文件對服務(wù)器安全級別的設(shè)置
security = SHARE //安全性的級別共四種.share、user、server、domain
; password server = 密碼驗證服務(wù)器.
; password level = 8 //密碼級別
; username level = 8
encrypt passwords = yes //用戶密碼加密,當(dāng)然也可以不加密
smb passwd file = /etc/samba/smbpasswd //將密碼服務(wù)器設(shè)置為samba server.
需要這個東東來指定驗證文件.這個是文件的路徑,如果samba server是指定的win
server這個不須要
; ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n
*passwd:*all*authentication*tokens*updated*successfully*
pam password change = yes
; username map = /etc/samba/smbusers //如果每個windows用戶在samba服務(wù)器
中有帳戶這個可以不設(shè)
; include = /etc/samba/smb.conf.%m
obey pam restrictions = yes
; interfaces = 192.168.12.2/24 192.168.13.2/24 如果多網(wǎng)段要在這里列出
; remote announce = 192.168.1.255 192.168.2.44
; local master = no
; os level = 33
; domain master = yes
; preferred master = yes
; domain logons = yes
; logon script = %m.bat
; logon script = %U.bat
; logon path = \\%L\Profiles\%U
; wins support = yes //wins server支持
; wins server = w.x.y.z
; wins proxy = yes //wins 代理設(shè)置
dns proxy = no //dns代理設(shè)置
; preserve case = no
; short preserve case = no
; default case = lower
; case sensitive = no
#============================ Share Definitions ==============================
[homes] //用戶訪問自已目錄的設(shè)置
comment = Home Directories //說明(以下同理)
browseable = no//設(shè)定目錄可不可以別人瀏覽
writeable = yes//用戶寫入自己的權(quán)限
valid users = %S
create mode = 0664
directory mode = 0775
; [netlogon] //此段域用戶登錄目錄設(shè)置
; comment = Network Logon Service
; path = /usr/local/samba/lib/netlogon
; guest ok = yes
; writable = no
; share modes = no
;[Profiles]
; path = /usr/local/samba/profiles
; browseable = no
; guest ok = yes
[printers] //打印機設(shè)置
comment = All Printers
path = /var/spool/samba
browseable = no
printable = yes
;[tmp] //用戶共享資源設(shè)置
; comment = Temporary file space
; path = /tmp //可以自定義目錄,去掉前邊的";"就OK了
; read only = no //是否只讀或可寫
; public = yes
;[public] //用戶共享資源設(shè)置
; comment = Public Stuff
; path = /home/samba
; public = yes
; writable = yes
; printable = no
; write list = @staff
;[fredsprn]
; comment = Fred's Printer
; valid users = fred
; path = /home/fred
; printer = freds_printer
; public = no
; writable = no
; printable = yes
;[fredsdir]
; comment = Fred's Service
; path = /usr/somewhere/private
; valid users = fred
; public = no
; writable = yes
; printable = no
;[pchome]
; comment = PC Directories
; path = /usr/local/pc/%m
; public = no
; writable = yes
;[public]
; path = /usr/somewhere/else/public
; public = yes
; only guest = yes
; writable = yes
; printable = no
;[myshare]
; comment = Mary's and Fred's stuff
; path = /usr/somewhere/shared
; valid users = mary fred
; public = no
; writable = yes
; printable = no
; create mask = 0765
[my work] //偶的東東
comment = is me work
path = /root/my work
valid users angel
public = yes
writeable = yes
了解smb.conf的文件就好辦了.我們開始對samba server的四個安全級別分別講解.
1、share級配置
這個在四個等級中是最低的,方法也是最簡單.我們只要對smb.conf文件修改一下就可以了.
workgroup = hackase
server string = angel server
hosts allow = 192.168.1. //限制192.168.1的IP網(wǎng)段可以防問
printcap name = /etc/printcap
load printers = yes //共享打印機
printing = cups //打印機用linux標準的
guest account = angel
log file = /var/log/samba/%m.log
max log size = 20
security = share
===================================================================
其他的設(shè)置默認就可以了,也可以像我把所有的注釋刪除.[tmp]這個字段的";"去掉.
路徑可以更改. 重啟一下服務(wù) /etc/samba/smb restart //
service smb restart 也可
用testparm測試我們配置的文件是否正確:
===================================================================
[root@localhost root]# testparm //測試時[printers]注釋掉了所以這里沒有.
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[tmp]"
Processing section "[my]"
Loaded services file OK. //如有錯誤,會在這列出錯誤的地方.
Press enter to see a dump of your service definitions
==================================================================
用smbclient命令查看網(wǎng)絡(luò)共享情況
===================================================================
[root@localhost etc]# smbclient -L localhost //本機名為localhost
Password:
Domain=[HACKBASE] OS=[Unix] Server=[Samba 2.2.7a]
Sharename Type Comment
--------- ---- -------
tmp Disk Temporary file space
my Disk is me
IPC$ IPC IPC Service (angel server)
ADMIN$ Disk IPC Service (angel server)
root Printer Home Directories
Server Comment
--------- -------
Workgroup Master
--------- -------
=======================================================================
2、user級配置
user比share級安全級別高一點點,很簡單的,可以在share基礎(chǔ)上改一下就可以了.
改一下security = share字段為:security = user.在加上如下字段:
guest account = angel //機器上有這個用戶名,如果你沒有那就建一個吧!
encrypt passwords=yes
smb passwd file=/etc/samba/smbpasswd
(1)生成口令文件.
#cat/etc/passwd | mksmbpasswd.sh>/etc/samba/smbpasswd
本命令將生成口令文件"/etc/samba/smbpasswd" 這個就是我們
剛加上的"smb passwd file=/etc/samba/smbpasswd"
(2)我們知道建賬戶是建在etc/passwd文件里,我們須要用smbpasswd命令
為剛才建立的賬名設(shè)置samba server口令. 格式為:smbpasswd angel
(3)重啟samba server服務(wù)
user級的也OK了,你可以用testparm and smbclient命測試.windows用戶想
訪問就要輸入angel and passwd.這個就不是誰都可以訪問你的共享
資源了.
3、server 級配置
server級比user級也高那么一點,只需要user級配置上修改一下就OK了.
(1)security = user字段為:security = server
(2)加上password server = ****** //密碼服務(wù)器,這個可以是你的windows主域控制器,也
可以是別一個samba server服務(wù)器(名子無意思)
(3)注釋smb passwd file=/etc/samba/smbpasswd
(4)重啟samba server服務(wù),你可以用testparm and smbclient命測試.
好了,又完事一個現(xiàn)在如果一臺windows機器登錄******(password server =
******設(shè)置的)域服務(wù)器的時候,也就同登錄上了samba server,如
果你以是*****主控域的計算機,那你就可以輸入你自己的賬號密碼打開samba server的文件了,
但是你要保證*****和sambs server的賬號
本文來自: 站長(http://www.qqcf.com) 詳細出處參考:http://study.qqcf.com/web/240/26752.htm
如果你正在處理一個跨操作平臺的網(wǎng)絡(luò),網(wǎng)絡(luò)中可能包括Windows,Linux和UNIX的工作站,服務(wù)器,那你肯定對怎樣在這些不同平臺上實現(xiàn) 網(wǎng)絡(luò)打印服務(wù)感興趣
上星期,介紹了怎樣在Linux上實現(xiàn)網(wǎng)絡(luò)打印服務(wù)。在這部分中,你將學(xué)習(xí)怎樣為Windows 95/98/NT/2000的用戶實現(xiàn)這項服務(wù)。通過修改你服務(wù)器上的Samba配置,你可以讓網(wǎng)絡(luò)中的Windows用戶共享你的本地打印機。
請注意,我假設(shè)你已經(jīng)在Linux和Windows之間成功的安裝和配置了Samba的文件共享。如果你還沒有安裝和配置Samba,或者你的 Samba不能正常工作,請看文章“省錢之道:用Linux的Samba代替NT服務(wù)器”。為了實現(xiàn)我們的目標,我也假設(shè)你已經(jīng)成功安裝了一個本地打印 機。
配置Samba實現(xiàn)本地打印機共享
在開始之前,確信你的Samba運行正常,并且Windows用戶可以在網(wǎng)絡(luò)鄰居的列表中看到Samba服務(wù)器。我將介紹修改smb.conf文 件,使得網(wǎng)絡(luò)中的Windows用戶可以通過Samba服務(wù)器使用打印機。
為了配置smb.conf文件實現(xiàn)共享一個本地打印機,檢查你Linux下的打印機是否工作正常。下一步,在Windows客戶端安裝同一個打印 機。這樣做的話,你需要Windows下打印機的安裝盤。開始安裝打印機,點擊開始,選擇打印機,并且雙擊添加打印機。
在打印機安裝向?qū)е校凑掌聊簧系恼f明一步一步,直到在列表中選擇打印機的名稱。要點:寫出打印機的準確名稱,注意大小寫(名稱對大小寫是敏感 的)。例如,Windows中使用的Epson Stylus 740打印機應(yīng)該輸入如果需要,在安裝完成后要重啟機器。在Samba服務(wù)器上,以根用戶登錄(或是超級用戶),用你習(xí)慣的文本編輯器打開/etc /smb.conf或者/etc/samba/smb.conf。例如,vi /etc/smb.conf。
在[global]這一節(jié),找到打印名稱這行,如果你想使Windows用戶可以使用所有本地打印機,去掉這一行,并且如果文件中沒有這些內(nèi)容的 話,添加上:
printcap name = /etc/printcap
load printers = yes
如果只想讓其他用戶用一個打印機,你不要刪掉那行,也不用添加什么。需要注意的是在大多數(shù)從BSD發(fā)展而來的Linux系統(tǒng)上,Samba假設(shè)你在 用默認的打印系統(tǒng)。如果你用的是其他打印系統(tǒng),在Linux的打印系統(tǒng)配置中,找到相應(yīng)的行,改變默認設(shè)置(bsd)。選擇包括 sysv,plp,lprng,aix,hpux和qnx。如果不能確認你的Linux配置正在使用的打印系統(tǒng),你可以查看一下相關(guān)文件,但大多數(shù)情況下 都是默認的。
下一步,使所有的本地打印機都實現(xiàn)共享。所有的打印機都在/etc/printcap文件的打印機列表中,在/etc/smb.conf文件尾添加 以下服務(wù)條目:
[printers]
writable = no
path = /tmp
printable = yes
如果只要共享一個打印機,在smb.conf文件的[global]小節(jié)添加一個自動服務(wù)行。和在/etc/printcap中的相同,這行指定你 想使用的打印機名稱。下行中在lp填寫默認打印機的名稱:
auto services = lp
而且,仿照下面創(chuàng)建一個打印機定義,添加到[services]小節(jié)中(在/etc/smb.conf文件末尾):
[lp]
printable = yes
comment = Epson Stylus (Color)
public = yes
writable = no
browseable = yes
printer driver=EPSON Stylus COLOR 740
定義中的打印機名是lp,這個名稱必須和上面自動服務(wù)行中的名稱相一致,并且也要和在/etc/printcap文件中定義的打印機名稱相同(或打 印機的別名)。需要注意的是,打印機驅(qū)動行需要你正確的輸入Windows中的打印機信息(在這里,EPSON Stylus COLOR 740,還是需要注意大小寫)。
最后,保存/etc/smb.conf文件。退出文本編譯器,鍵入/etc/init.d/rc.d/smb重啟Samba。
檢測安裝
在其中一臺Windows工作站上檢測你的安裝成果
。用用戶的Windows網(wǎng)絡(luò)用戶名和密碼登錄,雙擊網(wǎng)絡(luò)鄰居,雙擊Linux系統(tǒng)的圖標后看看Samba打印機是否顯示出來。如果點擊右鍵選擇安 裝,你可以看到打印機安裝的對話框。在開始安裝的時候,用戶不需要關(guān)心打印機的牌子和型號,因為打印機的名稱以Windows認可的某種方式定義。但是, 用戶還是需要打印機的安裝盤,如果Windows本來就支持這種打印機的話,只要Windows的安裝盤就可以了。
打印機驅(qū)動器定位
打印機驅(qū)動器定位是Samba的一個選項,使你能夠指定打印機驅(qū)動軟件的位置。雖然你可以在共享的Linux目錄中選擇適合打印機驅(qū)動器和相關(guān)文件 的選項,但這個選項對許多打印機驅(qū)動器不起作用,而且你也可能因為在網(wǎng)絡(luò)中沒有得到使用軟件的許可而侵犯了作者了的版權(quán)。
Samba打印故障處理
如果在Linux系統(tǒng)上你的打印機可以正常工作,但不能通過Samba實現(xiàn)打印服務(wù),用超級用戶登錄,用文本編譯器打開/etc /smb.conf,仔細檢查你的輸入。運行testparm /etc/smb.conf,仔細查看輸出結(jié)果,找出錯誤標志。確信/dev/null對任何用戶都是可寫的(做法是:鍵入ls -l /dev/null,按回車,查看文件讀取權(quán)限)。Samba通過/dev/null來忽略不需要的輸出。如果這個文件不是對所有用戶可寫的,用超級用戶 登錄,鍵入chmod a+w /dev/null,按回車。如果你的打印機只輸出代碼而不是你想要的圖形,在/etc/samba.conf文件的打印機定義中添加 postscript = yes。
一、Samba簡介
給Windows客戶提供文件服務(wù)是通過samba實現(xiàn)的,凡架設(shè)過MS Windows網(wǎng)絡(luò)的人都知道MS Windows網(wǎng)絡(luò)的核心是SMB/CIFS,而samba也是一套基于UNIX類系統(tǒng)、實現(xiàn)SMB/CIFS協(xié)議的軟件,作為UNIX的克隆, Linux也可以運行這套軟件。和NT相比較,samba的文件服務(wù)功能一點也不亞于NT,效率很高,借助Linux本身,可以實現(xiàn)用戶磁盤空間限制功 能,NT到4.0版本還是無法實現(xiàn)這點,samba由samba小組(http;//samba.org)開發(fā),更新速度很快,目前最高的版本是 2.0.7版,是2000年4月25日發(fā)布的,每個更新版本在功能上都所增強,也修復(fù)了已知的BUG。本章所涉及到的技術(shù)內(nèi)容以2.0.3版藍本。目前各 種Linux發(fā)布大都包含這套軟件,如果你的Linux發(fā)布是Read Hat,則是以RPM形式提供,可以在安裝Linux的時候選擇這個軟件,也可以單獨安裝,以root身份。rpm -i samba-2.0.3-8.i386.rpm,就可以了。
如果你的Linux發(fā)布沒有包含這個軟件,可以從ftp;//samba.org/pub/samba去下載。另外,您的Linux的核心要支持 smbfs,一般各種發(fā)布已經(jīng)把smbfs的支持包含進去,如果沒有包含的話,就要重新編譯核心,獲得smbfs支持,具體怎么樣編譯核心請參閱相關(guān)文 章。
由于本章的內(nèi)容是基于文件服務(wù)器, 重點介紹samba在文件服務(wù)器上的應(yīng)用。目前samba還不能完全代替Windows NT,尤其是把samba設(shè)置成PDC,最好不要這樣做,NT PDC非常復(fù)雜,samba還只能實現(xiàn)其中一部分功能。希望未來的版本可以做到。
這套軟件由一系列的組件構(gòu)成,主要的組件有:
smbd SMB服務(wù)器,給SMB客戶提供文件和打印服務(wù);
nmbd, Netbios 名稱服務(wù)器,提供Netbios名稱服務(wù)和瀏覽支持,幫助SMB客戶定位服務(wù)器;
smbclient, SMB客戶程序,用來存取SMB服務(wù)器上的共享資源;
testprns 測試服務(wù)器上打印機訪問的程序;
testparms 測試Samba配置文件的正確性的工具;
smb.conf samba的配置文件;
smbstatus 這個工具可以列出當(dāng)前smbd服務(wù)器上的連接;
make_smbcodepage 這個工具用來生成文件系統(tǒng)的代碼頁;
smbpasswd 這個工具用來設(shè)定用戶密碼;
swat samba的Web管理工具。
二、怎么樣配置samba
實際上,samba安裝完后,只要把/etc/smb.conf這個文件里的workgroup=XXXXX這個參數(shù)該為您的工作組,啟動 samba就可以運行了,但這根本不能符合我們的需要。samba的配置都是圍繞smb.conf來進行的,配置方式有很多種,如果熟練的話可以手工編輯 這個文件,也可以通過linuxconf來配置,而且samba本身帶了一個基于web的管理工具swat,使用901端口,安裝完samba后,它會在 您機器的/etc/services的尾部加上一條:
swat 901/tcp #Add swat service used via inetd在inetd.conf里填上:
swat stream tcp nowait.400 root /usr/sbin/swat swat在瀏覽器的地址欄里鍵入 http://youhostname:901/ 就可以進入swat對samba進行管理。下面就介紹怎么樣手工配置這個文件以達到讓samba成為一個符合需求的文件服務(wù)器。
先看看一小段的smb.conf:
# smb.conf example [global] workgroup = WORKGROUP server string = Samba Server hosts allow = 192.168.1. 192.168.2. 127. load printers = no printcap name = /etc/printcap guest account = guest log file = /usr/local/samba/var/log.%m max log size = 50 security = user socket options = TCP_NODELAY [homes] comment = Home Directories browseable = yes writable = yes [printers] comment = All Printers path = /usr/spool/samba browseable = no guest ok = no writable = no printable = yes printer driver = Epson LQ-1600K [tmp] comment = Temporary file path = /tmp read only = no public = yes [public] comment = Public Zone path = /home/samba public = yes writable = yes從上面的例子可以看出,smb.conf的格式和Windows里的INI文件很像,含有多個段,每個段由段名開始,一直到下個段名,每個段名放在 方括號中間。段里的參數(shù)的格式是:名稱 = 值。
文件里的每個段名、參數(shù)以及注釋都只能占一行,換句話說就是一行里只能寫一個段名或參數(shù)或注釋,如果一行寫不下或不想把一行寫的過長,可以在行尾 用""來表示續(xù)行。段名和參數(shù)名不分大小寫??梢杂凶⑨?,注釋以;或#開始到該行結(jié)束。
除了[global]段外,所有的段都可以看作是一個共享資源,段名是該共享資源的名字,而段里的參數(shù)就是共享資源的屬性。[global], [homes] 和 [printers]這三個段是比較特殊的,把在后面說明。而下面的注意事項則是針對普通的段。
一個共享資源段由要提供訪問的路徑和附加的訪問權(quán)限組成,可以是文件資源或打印資源。共享資源段可以給guest級的用戶服務(wù),一般來說guest 用戶是不需要密碼的,如果給guest提供服務(wù),guest的權(quán)限是根據(jù)UNIX里的guest帳戶來賦予。如果共享資源段不是給guest提供服務(wù)的, 則訪問這樣的段需要客戶的密碼。由于賦予用戶對共享資源段的訪問權(quán)限是基于該用戶在UNIX系統(tǒng)的對該資源的訪問權(quán)限,所以服務(wù)器是不能賦予超過UNIX 系統(tǒng)賦予該用戶的權(quán)限的。
例如:
下面的共享資源段的例子定義了一個文件共享,用戶對路徑/home/abc有寫入的權(quán)限,共享資源段名是abc,也就是共享名。
[abc] path = /home/abc writeable = true1.段
而這下面的段定義了一個打印共享,共享是只讀的,但可打印,就是說唯一允許的寫訪問就是打開、寫入和關(guān)閉脫機文件。
[myprinter] path = /usr/spool/public read only = true printable = true guest ok = true特殊段:
[global] 段
在這個段的參數(shù)是全局有效的。
[homes] 段
當(dāng)用戶請求一個共享時,服務(wù)器把在存在的共享資源段中去尋找,如果找到匹配的共享資源段,就使用這個共享資源段。如果找不到,就把請求的共享名看成 是用戶的用戶名,并在本地的password文件里找這個用戶,如果用戶名存在且用戶提供的密碼是正確的,則以這個home段克隆出一個共享提供給用戶。 這個新的共享的名稱是用戶的用戶名,而不是home,如果home段里沒有指定共享路徑,就把該用戶的宿主目錄(home directory)作為共享路徑。
通常的共享資源段能指定的參數(shù)基本上都可以指定給[home]段。但一般情況下[home]段有如下配置就可以滿足普通的應(yīng)用。
[homes] writeable = yes注意,如果在[home]段里加了guess access =ok, 所有的用戶都可以不要密碼就能訪問所有的宿主目錄!
[printers] 段
該段用于提供打印服務(wù)。
如果定義了[printers]這個段,用戶就可以連接在printcap文件里指定的打印機。當(dāng)一個連接請求到來時,smbd去查看配置文件里已 有的段,如果和請求匹配就用那個段,如果找不到匹配的段,但[home]段存在,就用[home]段。否則請求的共享名就當(dāng)作是個打印機共項名,然后去尋 找適合的printcap文件,看看請求的共享名是不是個有效的打印共享名。如果匹配,那么就克隆出一個新的打印機共享提供給客戶。
注意,[printers]服務(wù)必須是printable,如果指定為其它,服務(wù)器把拒絕加載配置文件。
通常指定的路徑應(yīng)該任何人都有寫入權(quán)限。
[printers] path = /usr/spool/public writeable = no guest ok = yes printable = yes printer driver = Epson LQ-1600K()
2.參數(shù)
段里可以指定的參數(shù)非常多,有些參數(shù)是全局段才可以用的,而有些參數(shù)是任何段都可以用的,先介紹一些基本參數(shù),明白這些基本參數(shù),基本上就可以一般 性地應(yīng)用samba了,如果要更精細地控制samba,可以繼續(xù)參考一些高級配置。另外,本章假設(shè)讀者對MS WINDOWS 網(wǎng)絡(luò)是熟悉的,不熟悉的可以參考相關(guān)資料。
全局參數(shù)
2.1 基本參數(shù)
workgroup
說明:這個參數(shù)用來指定samba所要加入的工作組,另外如果在設(shè)置了security=domain,則workgroup可以指定域名。例如: workgroup = wgp1。指明工作組為wgp1 。
netbios name
說明:這個參數(shù)指定samba的netbios名,可以不設(shè)置,samba把會使用機器的DNS名的第一部分,如果你的機器的DNS名是 host1.domain,就用host1 例如:netbios name = public。指定NetBios名為public。
server string
說明:這個參數(shù)指定在瀏覽列表里的機器描述,和MS WINDOWS 里配置網(wǎng)絡(luò)時的描述是一樣的??梢允侨魏巫址?。也可以不填,samba會用缺省的 samba %v,即samba 尾隨它的版本號,不過如果要模仿NT象一點的話,可以填一下。例如:
server string = Master File Server2.2 安全參數(shù)
security
說明:這是個重要的安全配置參數(shù),有4個值,分別是share、user、server和domain,定義了samba的基本安全級,通常是 user。
security = user這是samba的默認配置,這種情況下要求用戶在訪問共享資源之前資源必須先提供用戶名和密碼進行驗證。
securtiy = share這是幾乎沒有安全性的級別,任何用戶都可以不要用戶名和口令訪問服務(wù)器上的資源
security = server和user安全級類似,但用戶名和密碼是遞交到另外一個SMB服務(wù)器去驗證,比如遞交給一臺NT服務(wù)器。如果遞交失敗,就退到user安全 級,從用戶端看來,server和user這兩個級別是沒什么分別的。
security = domain這種安全級別要求網(wǎng)絡(luò)上存在一臺NT PDC,samba把用戶名和密碼遞交給NT PDC去驗證。
從用戶端看來,user級以上的安全級其實是沒什么分別的,只是服務(wù)器驗證的方式不同,但這三種安全級都要求用戶在本Linux機器上也要系統(tǒng)帳 戶。否則是不能訪問的。
encrypt passwords
說明:是否對密碼進行加密,samba本身可以維護一個密碼文件/etc/smbpasswd,如果不對密碼進行加密則在驗證會話期間客戶機和服務(wù) 器之間傳遞的是明文密碼,samba直接把這個密碼和Linux里的/etc/passwd密碼文件進行驗證。這其中有些問題,之一就是在Windows 95 OS/R2以后的版本和Windows NT SP3以后的版本缺省都不傳送明文密碼,要讓這些系統(tǒng)能傳送明文密碼必須在其注冊表里更改。對于Windows 95 OS/R2以上的版本,可以在 [HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]里加一個十六進制值 Enable PlainTextPassword=00000001。對于WINDOWS NT SP3 以上的版本,可以在 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRdrParameters]里加一個十六進制 值EnablePlainTextPassword=00000001,這樣就可以讓它們能在網(wǎng)絡(luò)上傳送明文密碼。
另外,還有一件很煩人的事情就是NT系統(tǒng),如果一個服務(wù)器是處于用戶級別上的安全模式,又不支持密碼加密傳送的話,NT把拒絕和服務(wù)器連接,除非服 務(wù)器向用戶提示要密碼。這在實際應(yīng)用中會出現(xiàn)什么情況呢。如果你在NT機器有個帳戶user1,在Linux機器上也有個帳戶user1,密碼都是一樣, 但你去和Linux機器上的共享連接的時候,NT就會提示你錯誤的密碼或未知的用戶名,要求你再次輸入用戶名和密碼,NT才和服務(wù)器連接。如果你映射了 Linux上的共享資源作為NT的一個網(wǎng)絡(luò)驅(qū)動器,那么NT在下次啟動試圖重新連接這個網(wǎng)絡(luò)驅(qū)動器時,又會提示你錯誤密碼或未知用戶名.... 煩得很。所以一般samba的應(yīng)用基本都設(shè)定為yes:encrypt passwords = yes。
當(dāng)然,samba的用戶是基于Linux系統(tǒng)用戶的,sambad的加密工具是smbpasswd,最簡單的用法是smbpasswd -a username 這里的username必須是/etc/passwd里存在的用戶名,然后會提示輸入密碼和確認密碼,會生成一個新的密碼條目,放在 /etc/smbpasswd這文件里。另外,samba提供了一個工具—mksmbpasswd.sh,這是shell腳本,可以從 /etc/passwd文件里生成smbpasswd文件,用法是:cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd 。把passwd里的用戶都加到smbpasswd里。從安全起見,smbpasswd這個文件的存取權(quán)限請設(shè)為600?!?
username map
說明:這個參數(shù)可以讓你指定一個文件包含來自客戶機的用戶名與Linux系統(tǒng)用戶名之間的映射,文件的格式是每行一個映射,映射的格式 是:Linux usename = client username ... 。
例如 root = admin adminstrator這樣,當(dāng)客戶機的用戶是admin或administrator時,就被轉(zhuǎn)換成root。這個功能對用戶管理很方便,可以讓管理 員不需要對客戶或服務(wù)器上的用戶賬號大動干戈。 文件名通常用默認的/et/smbusers password level 說明:這是針對一些SMB客戶像Windows for Workgroup、OS/2之類而設(shè)的,像WFW這樣的系統(tǒng)在發(fā)送用戶密碼的時候,會把密碼轉(zhuǎn)換成大寫再發(fā)送,這樣就和samba的密碼不一致,這個參 數(shù)可以設(shè)定密碼里允許的大寫字母個數(shù),這樣samba就根據(jù)這個數(shù)目對接收到的密碼進行大小寫重組,以重組過的密碼嘗試驗證密碼的正確性。這個值越大,組 合的次數(shù)就越多,驗證時間就越長,安全性也越低!
例如:如果這個值是2,用戶的密碼是abcd,但發(fā)送出去其實是ABCD,samba就會把這個ABCD進行大小寫重組,組合的密碼可以是下 列:Abcd, aBcd, abCd, abcD, abcd, ABcd, AbCd, AbcD,aBCd,aBcD,abCD。
所以如果沒有必要,就把這個值定為是零(一般應(yīng)該是沒這必要,現(xiàn)在誰還用WFW這樣的系統(tǒng))。這樣的話samba只嘗試兩次,一個是接收到的密碼, 另一個嘗試的是這個密碼都是小寫的情況。即使是這樣,也還存在著一定的安全性問題。
guest account
說明:這個參數(shù)指定guest級帳戶的用戶名,可以是nobody、ftp,guest級別的用戶可以不要密碼就訪問給定的guest服務(wù)。
host allow
說明:這個參數(shù)指定那些機器可以訪問samba,例如:host allow = 192.168.1. 127. 指定192.168.1.0里的所有機器都可以訪問。如果不允許子網(wǎng)里的一臺機器訪問,可以這樣設(shè):host allow = 192.168.1. EXCEPT 192.168.1.33 禁止192.168.1.33訪問。
host deny
說明:和host allow 相反是指定那些機器不能訪問,格式一樣。
2.3 日志記錄參數(shù)
log file
說明:這個參數(shù)指定日志文件的名稱,路徑一般放在/var/log/samba,可以在文件名后加個宏%m表示對每臺訪問samba的機器都單獨記 錄一個日志文件。 例如: log file = /var/log/samba/log.%m,如果host1、host2這臺機器訪問過samba,就會留下log.host1、log.host2這 兩個日志文件。
max log size 說明:這個參數(shù)指定最大日志文件的大小,以KB為單位。例如:max log size = 50k。
2.4 協(xié)議參數(shù)
announce version
說明:指定服務(wù)器的宣告版本號,默認是4.2,如果在WINDOWS的網(wǎng)上鄰居里查看samba服務(wù)器的屬性,就可以看見在類型一行里有 Windows NT 4.2 Server 的字樣。一般不要去更改它,如果你要讓samba模擬NT像一點的話,可以改成4.0。
2.5 計算機瀏覽參數(shù)
os level
說明:os level 的值是個整數(shù),決定了nmbd是否有機會成為本地廣播區(qū)域的工作組里的本地主瀏覽器,默認值是零,零則意味著nmbd失去瀏覽選擇。如果要nmbd更有機 會成為本地主瀏覽器的話,可以設(shè)為65。
preferred master
說明:這個參數(shù)指定nmbd是否是工作組里的首要的主瀏覽器,如果指定為yes,nmbd在啟動的時候就強制一個瀏覽選擇。指定該參數(shù)為yes時最 好把domain master 也指定為yes。用這個參數(shù)的時候要注意的是在samba服務(wù)器所在的子網(wǎng)上如果有其它的機器(不管是WINDOWS NT還是另一個samba服務(wù)器)也指定為首要的主瀏覽器時,這些機器都會因為爭奪主瀏覽器而在網(wǎng)絡(luò)上廣播,引起不必要的網(wǎng)絡(luò)性能下降。
local master
說明:這個參數(shù)指定nmbd是否試圖成為本地主瀏覽器,默認值是yes,如果設(shè)為no則samba服務(wù)器就永遠都不會成為本地主瀏覽器。但即使設(shè)置 了yes,也不等于samba服務(wù)器就會成為本地主瀏覽器。只是參與本地主瀏覽器選擇。
domain master
說明:這個參數(shù)讓nmbd成為一個域瀏覽器,取得各本地主瀏覽器的瀏覽列表,并把整個域的瀏覽列表遞交給各本地主瀏覽器。默認值是no。如果網(wǎng)絡(luò)上 已經(jīng)有一臺NT PDC,就不要把這個參數(shù)設(shè)為yes,爭不過NT PDC的。
另外,如果你對計算機瀏覽服務(wù)不是很清楚的話,可以參考NT網(wǎng)絡(luò)管理資料。
2.6 共享資源設(shè)置參數(shù)
comment
說明:就是對共享的描述,可以是任意的字符串。例如:comment = Share Stuff。
path
說明:path是提供共享服務(wù)的路徑,可以用%u %m這樣的宏來代替路徑里的unix用戶和客戶機的Netbios名。
例如:如果我們不打算用home段做為客戶的共享,而是在/home/share/ 下為每個Linux用戶以他的用戶名建個目錄,作為他的共享目錄,這樣path就可以寫成:path = /home/share/%u; 。
用戶在連接到這共享時具體的路徑會被他的用戶名代替,要注意這個用戶名路徑一定要存在,否則,客戶機在訪問時會找不到網(wǎng)絡(luò)路徑。同樣,如果我們不是 以用戶來劃分目錄,而是以客戶機來劃分目錄,為網(wǎng)絡(luò)上每臺可以訪問samba的機器都各自建個以它的netbios名的路徑,作為不同機器的共享資源,可 以這樣寫path:path = /home/share/%m 。
writeable
說明:指定共享路徑是否可以寫,值是yes或no。
browseable
說明:指定共享是否可以瀏覽,默認是yes。
available
說明:指定共享資源是否可用,默認是yes,設(shè)為no則關(guān)閉該資源的共享服務(wù),用戶無法連接到該資源上。
exec 和 postexec,root preexec 和 root postexec
說明:指定在用戶與共享資源在連接和斷開時在服務(wù)器上執(zhí)行一個命令,這兩對參數(shù)很有用,區(qū)別是root preexec 和root preexec 是以root的權(quán)限運行。比如在服務(wù)器把cdrom作為共享,但cdrom是不能一直處于裝配狀態(tài)的。我們可以這樣設(shè)置
[cdrom] comment = Server Cdrom path = /mnt/cdrom public = yes browseable = yes root preexec = /bin/mount -t iso9660 /dev/cd0 /mnt/cdrom root postexec = /bin/umount /mnt/cdrompublic
說明:這個參數(shù)指明是否允許guest帳戶訪問,值為yes或no,另一個和public相同意義的參數(shù)是guest ok。打印共享還有些專用的打印參數(shù),闡述如下:
load printers
指定在samba啟動時是否自動把printcap文件里的所有打印機加載,從而可以在瀏覽清單里看到所有的打印機,默認是yes。 printable 指定用戶能不能打印,默認是no,要讓一個打印共享可以讓用戶使用,必須設(shè)為yes。print name 打印機名。
printer driver
打印機的驅(qū)動類型,這個參數(shù)可以讓W(xué)INDOWS知道遠程打印機上的類型,具體的值可以參考在WINDOWS里安裝打印機出現(xiàn)選擇打印機類型時的打 印機類型。比如Espon LQ1600K打印機:
printer driver = Espon LQ-1600K 以上就是samba的一些常用的配置,通過這些配置參數(shù),我們已經(jīng)可以建立起一個一般應(yīng)用的文件服務(wù)器。雖然還有很多參數(shù)沒有提到,但samba本身可以 用缺省值。 啟動samba,可以用/usr/sbin/samba start來啟動samba,也可以用ntsysv來啟動。
三、samba 進階
下列所介紹的是一些高級參數(shù)的配置,這些參數(shù)如果應(yīng)用得當(dāng),可以更加靈活地在網(wǎng)絡(luò)上應(yīng)用samba
1.宏
在基本配置里有提到一些參數(shù)的可以尾隨%u、%m,這是samba里定義的宏,宏用百分號后面跟一字符表示,在具體運作的時候就用實際的參數(shù)來代 替。常用的宏有:
%S = 當(dāng)前服務(wù)名;
%P = 當(dāng)前服務(wù)的根路徑;
%u = 當(dāng)前服務(wù)的用戶名;
%g = 給定%u的所在的主工作組名;
%H = 給定的%u的宿主目錄;
%v = Samba 版本號;
%h = 運行Samba的機器的主機名;
%m = 客戶機的NETBIOS名;
%L = 服務(wù)器的 NetBIOS 名;
%T = 當(dāng)前的日期和時間;
靈活地應(yīng)用宏可以很方便地管理比較復(fù)雜的網(wǎng)絡(luò)。
2.一些常用高級配置參數(shù)
2.1 全局參數(shù)
config file
說明:這個參數(shù)是全局參數(shù),可以讓你用另一個配置文件覆蓋缺省的配置文件,如果文件不存在,該項無效。這個參數(shù)非常有用,也使得samba的配置更 靈活,讓一臺Linux服務(wù)器模擬多臺不同配置的NT 服務(wù)器,滿足不同的需求。
比如,您想讓網(wǎng)絡(luò)上的某臺名字是host1的機器用它自己的配置文件,先在/etc/下為host1配置一個名為smb.conf.host1的文 件,在缺省的smb.conf里加這行:
config file = /etc/smb.conf.%m
這樣,當(dāng)host1請求連接的時候,smb.conf.%m被替換成smb.conf.host1,對host1來說,它所看到的samba就是由 smb.conf.host1定義的。而其它機器還是用smb.conf。
deadtime
說明:這個參數(shù)值是個整數(shù),單位是分鐘,用于切斷一個不活動的連接。當(dāng)一個沒有打開任何文件的連接的不活動的時間超過datetime指定的的時間 后,samba就自動切斷這個連接。這個參數(shù)可以節(jié)省服務(wù)器的資源消耗,尤其是在有大量連接的情況下。默認的值是零,零代表samba不自動切斷任何連 接。
time server
說明:這個參數(shù)讓nmbd成為WINDOS客戶的時間服務(wù)器。默認是no。
2.2 共享資源參數(shù)
dmin users
這個參數(shù)用來賦予用戶對共享資源的管理員權(quán)限,意味著這些用戶可以root一樣進行所有的文件操作,當(dāng)然只局限在這個共享資源上。這個選項要慎用, 因為任何這樣的用戶可以對該共享上的文件隨意進行操作。缺省是admin users = no。
例如:
admin users = Su_27 那么Su_27這個用戶就是這個共享資源的管理員。
valid users
說明:指定共享資源的有效用戶,即允許訪問該資源的用戶。例如:valid users = user1, user2那么user1和user2是有效用戶。
invalid users
說明:和valid users 相反,指定那些用戶不可訪問這共享資源。
max connections (S)
說明:指定一個服務(wù)的最大連接數(shù)目,用戶連接到該服務(wù)時如這個服務(wù)的連接數(shù)目已經(jīng)達到指定值,這個新的連接請求把被拒絕。 例如: max connections = 100 最大連接數(shù)為100以上是一些samba的高級配置參數(shù),但samba的參數(shù)還有很多,本章不能一一詳述,如文件創(chuàng)建權(quán)限設(shè)定,代碼頁,文件名大小寫是否 敏感等,可以參考samba的文檔。
四、什么是NFS
NFS 是網(wǎng)絡(luò)文件系統(tǒng)(Network File System)的簡稱,是分布式計算系統(tǒng)的一個組成部分,實現(xiàn)在異種網(wǎng)絡(luò)上共享和裝配遠程文件系統(tǒng),從用戶角度看來,在這些遠程的文件系統(tǒng)操作和本地的文 件系統(tǒng)上操作并沒有什么不同。NFS由Sun 微系統(tǒng)公司(Sun Microsystem, Inc)開發(fā),制訂了NFS 標準,并被IETF接受,納入RFC,作為文件服務(wù)的一種標準(RFC1904,RFC1813)。NFS基于客戶/服務(wù)器結(jié)構(gòu),通過RPC(遠過程調(diào) 用)實現(xiàn),所有的NFS操作都由RPC過程來進行。NFS 服務(wù)器導(dǎo)出本地的目錄給遠程的NFS客戶,NFS客戶把對文件操作系統(tǒng)調(diào)用重定向到遠程的系統(tǒng)。在Linux里,通常用knfsd來實現(xiàn)NFS服務(wù),這是 個運行在核心空間的后臺守護程序,相對與用戶空間的NFS程序,有較高的響應(yīng)性能。
五、配置NFS
1.創(chuàng)建或修改/etc/exports
exports 的每一行由導(dǎo)出路徑, 客戶名列表以及每個客戶名后尾隨的訪問選項構(gòu)成, 訪問選項是可選的。
directory hostname(options) ...
options是可選的,如果不指定options,nfs把采用默認的選項。hostname也可以為空,代表給任意外來主機提供服務(wù)。
例如: /usr ws1.mydomain.com 導(dǎo)出路徑/usr 提供給 ws1.mydomain.com 訪問。
/usr ws1.mydomain.com(rw) 同樣是給ws1.mydomain.com訪問,但具有寫入權(quán)限。
/pub (ro,insecure,all_squash)導(dǎo)出/pub, 任何機器都可以訪問, 允許用大于1024的端口進行連接, 并把所有的連接id映射到nobody.
主機名里可以包含通配符*和?,例如 *.mydomain.com,代表mydomain.com里的所有機器,但注意通配符不能匹配主機名里的點,所以上面的*.domain.com不包 括ws1.subdomain.mydomain.com這樣的機器。也可以用IP網(wǎng)絡(luò)/子網(wǎng)掩碼的形式來指定網(wǎng)絡(luò)上的可以訪問的機器。例如: 192.168.1.0/255.255.255.0修改過/etc/exports后,需要告訴nfs進程重新檢查配置信息,可以用命令: exportfs或重新啟動nfs。
一些常用選項:
insecure 允許用戶可以從大于1024的端口進行連接。
secure 限制用戶只能從小于1024的端口號進行連接。
ro 只讀,注意在沒指定ro的情況是可寫的。
noaccess 讓導(dǎo)出路徑的所有子目錄對客戶不可見。用戶連接到這樣的路徑后看到的是個空目錄。
root_squash 這個選項可以把從客戶機的uid為0的請求映射成nobody。
no_root_squash 這個選項和上面的相反,不映射uid 為0的請求,這是缺省的。
rw 可寫,這是缺省的。
2.一個exports的例子
/home ws1(rw) ws2(rw) ws3(rw) /usr/X11R6 ws1(rw) ws2(rw) ws3(rw) /usr/share ws1(rw) ws2(rw) ws3(rw) / ws1(rw,no_root_squash) /home/ftp (ro) /pub (ro) /pub/private (ro,noaccess)3.啟動NFS服務(wù)
啟動NFS服務(wù)可以用如下命令:
/etc/rc.d/init.d/nfs start在修改exports文件后要告訴nfs配置信息變化,可以:
/etc/rc.d/init.d/nfs stop /etc/rc.d/init.d/nfs start4.怎么樣裝配遠程NFS文件系統(tǒng)
如上例,裝配上述的/pub可以簡單用如下命令:
mount hostname:/pub /mnt其中hostname是遠程主機的主機名。
查詢遠程機器上有導(dǎo)出文件系統(tǒng)的情況,可以用showmount -e hostname。