国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看
打開APP
未登錄
開通VIP,暢享免費電子書等14項超值服
開通VIP
首頁
好書
留言交流
下載APP
聯(lián)系客服
局域網(wǎng)服務(wù)器
xjh
>《其他應(yīng)用》
2006.05.07
關(guān)注
本章介紹如何將Linux機器配置稱為局域網(wǎng)上的文件/打印服務(wù)器或者計算服務(wù)器,同
時也介紹可能出現(xiàn)的問題以及解決方法。
本章具體包括以下內(nèi)容。
NFS文件服務(wù)
BSD打印服務(wù)器
Samba文件/打印服務(wù)
WINS、DHCP和NIS
圖形/計算服務(wù)器
5.1 NFS和文件/打印服務(wù)
NFS是Sun發(fā)明的用來在UNIX系統(tǒng)之間共享文件的一種服務(wù)協(xié)議,事實上,如果你的系
統(tǒng)中不是有很多的UNIX機器,我們并不建議使用NFS。因為在windows 95上訪問NFS相當
困難。但是,如果你的系統(tǒng)中包含Sun或者SCO這樣的UNIX系統(tǒng),也許你除了使用NFS以外
別無選擇。
5.1.1 共享文件系統(tǒng)
NFS實際就是將某個UNIX機器的一個目錄共享出來,由其他機器直接使用。共享的動作
稱為“輸出”(export)。例如,host1機器的mydoc目錄可以被輸出,然后host2機器的管
理員將它連接到/host1/mydoc目錄下,以后host2對這個目錄的操作自動轉(zhuǎn)化為對host1
上相應(yīng)目錄的操作。技術(shù)上,通常用UDP協(xié)議來實現(xiàn)NFS的數(shù)據(jù)傳輸。
首先我們需要來制作一個NFS服務(wù)器,由于NFS要依賴于遠程過程調(diào)用(RPC),所以服
務(wù)器上必須啟動SUNRPC服務(wù),這個服務(wù)的另一個名字是port mapper,在目前版本中的L
inux里面,用portmap程序來啟動SUNRPC服務(wù):
$ /sbin/portmap
盡管不通過tcpd程序,但是port mapper是基于一個類似的程序tcp wrapper的運行庫
,所以也可以使用host.deny和host.allow程序來限制訪問。另外,通常portmap使用的端
口在/etc/services里面定義。
為了使用NFS服務(wù),需要啟動mountd和nfsd程序,這兩個程序在Linux中被稱為rpc.mo
untd和rpc.nfsd:
$/usr/sbin/rpc.mountd
$/usr/sbin/rpc.nfsd
其中,rpc.nfsd程序支持一個數(shù)字參數(shù),用來表示啟動nfsd程序的個數(shù),例如:
$rpc.nfsd 7
$ps ax|grep nfsd
606 pts/0 SW 0:00 [nfsd]
607 pts/0 SW 0:00 [nfsd]
608 pts/0 SW 0:00 [nfsd]
609 pts/0 SW 0:00 [nfsd]
610 pts/0 SW 0:00 [nfsd]
611 pts/0 SW 0:00 [nfsd]
612 pts/0 SW 0:00 [nfsd]
由于NFS是基于無連接的UDP服務(wù),所以nfsd程序不得不在端口上等待并且處理,當nf
s訪問比較多的時候,增加nfsd程序的個數(shù)會有助于提高NFS的工作效率(因為避免了線
程阻塞),但是太多的nfsd程序又可能會影響CPU的處理速度。正確的數(shù)值只有自己實驗
得到,不過,對于一般的系統(tǒng),10-20個nfsd程序應(yīng)該可以工作的很好。
另外一個需要注意的是,按照Sun的定義,NFS是無狀態(tài)的,有時這一點很討厭,特別
是有可能發(fā)生文件訪問的沖突,為此,Linux提供nfs lock功能,對NFS訪問進行監(jiān)控,
可以用rpc.lockd和rpc.statd程序來執(zhí)行這個功能:
$/sbin/rpc.lockd
$/sbin/rpc.statd
要想在啟動的時候自動使用NFS服務(wù),可以按照我們以前介紹的那樣,編輯相應(yīng)的啟動
腳本,不過,有些Linux系統(tǒng)提供了設(shè)置程序,最常用的是NTSYSV程序,如redhat和TLC
都提供了這個程序:
$/usr/sbin/ntsysv
出現(xiàn)類似下面的界面:
將這個選單中的nfs,nfslock和portmap選中并且ok退出,系統(tǒng)腳本就被自動改變了。
(ntsysv程序只是建立/etc/rc.d/rc3.d下的連接而已,你也可以手工作這個連接工作,
注意我們以前講的啟動腳本)
在啟動了上面說的那些服務(wù)后,現(xiàn)在可以輸出文件目錄了。在Linux中有兩種輸出方式
,一種使用exportfs命令,另一種是使用/etc/exports文件:
exportfs命令的用法是
/usr/sbin/exportfs –o [選項] [客戶機器名]:[目錄名]
客戶機器名是可以使用你輸出的文件系統(tǒng)的機器的域名或者IP,例如,你想讓你的機
器上的/ftp目錄能夠被host.mydomain.com使用,可以使用命令
/usr/sbin/exportfs host.mydomain.com:/ftp
機器名字可以使用通配符,例如,*.mydomain.com表示一切mydomain.com域內(nèi)的主機
,而202.112.58.0/255.255.255.0表示從202.112.58.0到202.112.58.255。
不帶參數(shù)的exportfs命令將顯示當前的輸出文件系統(tǒng)。要取消某一個輸出,使用-u參
數(shù),格式是exportfs –u [機器名]:[目錄名],例如:
exportfs –u host.mydomain.com:/ftp
-o是一些選項,首先,在這里可以設(shè)置文件系統(tǒng)的輸出方式,是只讀(ro)還是可以讀
寫(rw)。另外,還有幾個選項,我們下面再解釋。
在輸出了目錄之后,就可以在客戶機器上使用NFS了,NFS客戶的用法非常簡單,只要
你的客戶機內(nèi)核編譯時選定了NFS支持,那么,可以直接將輸出的目錄連接到客戶機上:
mount [服務(wù)器名]:[目錄名] [連接點]
例如,在上面的例子中,假設(shè)輸出文件目錄的機器名字是nfs.mydomain.com,在host
.mydomain.com中可以使用
mount nfs.mydomain.com:/ftp /mnt/nfs
這個目錄就被連接到/mnt/nfs下面了,以后可以象使用本地文件系統(tǒng)那樣使用它。
關(guān)于使用這個文件系統(tǒng)有一個問題,如同我們所知道那樣,Linux用用戶權(quán)限來處理文
件訪問的問題,那么,當某個目錄被輸出之后,對方如何設(shè)定對這個文件系統(tǒng)的操作權(quán)
限呢?答案是通過uid,例如,/ftp的屬主是ftp,屬性是644,而在服務(wù)器上的ftp的ui
d是14,于是客戶機器將尋找uid為14的用戶,并且將/ftp解釋為由這個用戶所有。
顯然,這可能引起混亂,為了避免出現(xiàn)困難,也許必須要求所有機器的用戶uid一致。
更嚴重的是root用戶,如果你把一個目錄以rw的形式輸出,對方機器的root用戶就可能
完全破壞這個目錄。
解決的辦法之一是-o 選項的squash參數(shù),它有幾個選擇,root_squash將使用正常的
uid映射關(guān)系(我們剛才講的),除了客戶機器的root用戶,root用戶被映射成nobody用
戶,這樣就避免了root操作導(dǎo)致系統(tǒng)破壞,這是缺省值。all_squash把客戶機的所有用
戶都映射成nobody用戶。squash_uids可以映射一組用戶uid為nobody,例如squash_uid
s=0-40,45,50-100等等。還有一個選項,no_root_squash將完全按照我們在上一段中講
的方式執(zhí)行,包括root具有全部權(quán)限,這絕對應(yīng)該避免的。
例如,使用root_squash的rw方式輸出可以使用類似這樣的命令:
exportfs –o root_squash,ro host.mydomain.com:/ftp
-o的各個選項之間用逗號分開。
輸出文件系統(tǒng)的另外一種方式是使用/etc/exports文件,實際上,這是個描述文件,
每一行給出一個輸出目錄,在rpc.nfsd啟動的時候會自動去讀這個文件,對每一行執(zhí)行
一個exportfs命令。另外,也可以使用exportfs -r 命令自動輸出其中的所有文件目錄
。
/etc/exports文件每行的格式大概是這樣:
[目錄]:[客戶機器]([選項])
例如,剛才的命令用/etc/exports文件相當于這樣的行:
/ftp host.mydomian.com(rw,root_squash)
每次重新啟動rpc.nfsd都會重新輸出/etc/exports 文件的內(nèi)容,重起nfsd可以用這樣
的命令完成:
$killall -HUP /usr/sbin/rpc.mountd
$killall -HUP /usr/sbin/rpc.nfsd
在Linux的NFS實現(xiàn)中,建議使用auto mount daemon(amd)程序來實現(xiàn)自動安裝網(wǎng)絡(luò)文
件系統(tǒng),但是根據(jù)我們的實驗,這種做法的唯一優(yōu)點是讓系統(tǒng)管理員忙得不可開交,我
們建議你簡單地在setup中禁止amd系統(tǒng)服務(wù),并且寫一個啟動腳本在啟動時自動連接所
有nfs目錄。
要檢測nfs服務(wù)的工作,使用nfsstat程序。
關(guān)于Linux的NFS我們要說明一點,由于某些原因,Linux的NFS server通常只能支持到N
FS Ver 2,而且還是一個測試中的功能,如果你重新編譯了內(nèi)核,記住如果一定要使用NFS
,需要把核心的“使用測試中的功能”的選項打開。
在用Linux作為NFS Server的時候有一個特殊問題,Sun Solaris支持NFS版本3,這個
是個缺省值,當用Sun去mount Linux輸出的目錄時會出現(xiàn)Linux無法正確理解Sun的NFS版
本的問題,解決的辦法是在Linux啟動rpc.mountd的時候明確聲明不使用Version 3:
rpc.mountd –N 3
5.1.2 通過網(wǎng)絡(luò)進行打印
網(wǎng)絡(luò)打印并不是NFS的功能,它是由BSD打印程序提供的,如同我們以前說的那樣,打
印是通過/etc/printcap程序配置的。
首先我們要配置一臺允許其他機器通過它打印的服務(wù)器,實際上,這完全不需要更改
/etc/printcap(如果你已經(jīng)按照我們說的那樣設(shè)置系統(tǒng)使你可以在本地打?。O喾?,
你只要設(shè)置允許哪一臺機器打印到你的打印機上就行了,這可以通過/etc/hosts.lpd實
現(xiàn)。例如,打印服務(wù)器的名字是openlab.asnc.edu.cn,其/etc/printcap文件是
net_lp:
:sd=/var/spool/lpd/lp:
:mx#0:
:sh:
:af=/var/log/lpc:
:lp=/dev/lp0:
其中定義了某一臺打印機的名字是net_lp,net_lp直接連接到openlab.asnc.edu.cn上
,想允許myhost.asnc.edu.cn打印到net_lp,那么可以直接在/etc/hosts.lpd中寫上:
myhost.asnc.edu.cn
然后重新啟動lpd程序,就可以允許myhost上的用戶打印了。
必須注意的一個問題是,實際存在兩個文件,都可以用來允許遠程打印,一個是我們
剛才說的/etc/hosts.lpd,另一個比較微妙,它是/etc/hosts.equiv。關(guān)于后者的詳細
情況,我們在研究遠程X的時候討論。
為了使myhost能夠自動將打印作業(yè)發(fā)向openlab,需要設(shè)置myhost上的/etc/printcap
文件,主要是提供rp和rm變量,它們分別代表遠程打印機和遠程機器,例如,可以將my
host的/etc/printcap設(shè)置成
lp:
:sd=/var/spool/lpd/lp:
:mx#0:
:sh:
:lp=:
:rm=openlab.asnc.edu.cn:rp=net_lp:
:if=/var/spool/lpd/lp/filter:
這里將本地打印機設(shè)置為空,遠地服務(wù)器設(shè)置為openlab,遠程打印機設(shè)置為openlab
上的打印機名字,于是就可以使用openlab上的net_lp進行打印了。
通常打印用lpr命令實現(xiàn),在前面我們已經(jīng)介紹了這個命令的用法。在打印服務(wù)器的情
況下,經(jīng)常會有大量的打印事務(wù)需要處理,為此,BSD打印系統(tǒng)使用一些命令進行打印隊
列的管理,主要的是lpq,lprm和lpc。
lpq命令可以顯示當前的打印隊列:
[root@mail /etc]# lpq
Rank Owner Job Files Total Size
1st root 21 mail.rc 112 bytes
2nd root 22 ftphosts 104 bytes
注意job一欄的數(shù)值,這個值是打印作業(yè)號,你可以用lprm命令將某個作業(yè)刪除:
[root@mail /etc]# lprm 21
dfA021A7xsgvf dequeued
cfA021linux.asnc.edu.cn dequeued
lprm后面跟作業(yè)號,注意lprm命令非常奇怪,它正常完成是要輸出信息的。
可以使用lpc程序?qū)Υ蛴£犃羞M行更精細的管理,輸入lpc之后會出現(xiàn)lpc>,這是lpc的
提示符,可以輸入各種命令,用help命令可以獲得幫助,quit命令退出。
$lpc
lpc> help
Commands may be abbreviated. Commands are:
abort enable disable help restart status topq ?
clean exit down quit start stop up
lpc>
注意lpc是一個很惡心的程序,個人看來一般還是使用lpq和lprm,killall lpd的辦法
比較好,如果你一定要使用lpc,那就慢慢研究吧,
P。
5.2 Samba服務(wù)器
實際上,NFS的用處并不多,一般,當我們要建立一個龐大的服務(wù)器集群來對付email
或者www服務(wù)時,我們用NFS來實現(xiàn)目錄的共享。在一般情況下,我們的客戶機器總是wi
ndows,這種情況下,可以用samba來實現(xiàn)集成。
samba是一個免費的UNIX應(yīng)用程序,用來使一臺UNIX機器可以象Windows NT一樣為win
dows 9x機器提供文件和打印服務(wù)。不過,確實它還不能完全提供NT的功能,然而它非常
小巧而高效。
要使用samba,你必須安裝跟samba相關(guān)的軟件包,軟件包通常包括幾個,即samba、s
amba-common和samba-client,后者用于從Linux訪問windows 9x的共享文件。你可以到
自己的發(fā)行版本里去查找對應(yīng)的文件并且安裝。當然,如果你按照我們的建議那樣安裝
了所有的程序,那么就無需再手工安裝了。
5.2.1 在windows環(huán)境中集成Linux
現(xiàn)在我們來解釋如何將Samba做成一個可以被windows 9x訪問的文件服務(wù)器。這是通過
/usr/sbin/smbd守護進程實現(xiàn)的。smbd可以直接從命令行啟動,但是在這之前必須先設(shè)
置一些內(nèi)容。
smbd的控制文件是/etc/smb.conf,這個文件的內(nèi)容很長,是一個文本文件,與普通的
配置文件不同的是它使用分號為注釋行,通常在/etc下已經(jīng)有了一個smb.conf的例子,
如果你不小心把它刪除了,那么在/usr/doc/samba-2.0.3/examples下還有一個名叫smb
.conf.default的例子(2.0.3是版本號)。
現(xiàn)在我們自己來構(gòu)做一個最簡單的smb.conf,你可以先備份缺省的/etc/smb.conf,然
后按照下面的例子構(gòu)做一個/etc/smb.conf文件,也可以按照我們下面解釋的那樣對缺省
的smb.conf進行編輯:
下面是這個文件的內(nèi)容:
# cat smb.conf
[global]
workgroup=ASNC
load printers = no
encrypt passwords=no
security=share
[public]
comment = public files
public = yes
path = /ftp
browseable = yes
writable = no
然后你需要啟動smbd和nmbd,后者用來在網(wǎng)絡(luò)上廣播機器的名字,首先察看/etc/ser
vices文件,看看是否有類似這樣的內(nèi)容:
netbios-ns137/tcp# NETBIOS Name Service
netbios-ns137/udp
netbios-dgm138/tcp# NETBIOS Datagram Service
netbios-dgm138/udp
netbios-ssn139/tcp # NETBIOS session service
netbios-ssn139/udp
如果沒有就加上去,然后,啟動smbd和nmbd:
smbd –D
nmbd –D
-D選項用于將這兩個程序設(shè)置成daemon服務(wù)進程。
現(xiàn)在,就可以從windows 9x客戶機訪問Linux的共享目錄了,由于netbios廣播機器名
字需要一定的時間,可能不能馬上在網(wǎng)絡(luò)鄰居看到,這時你可以用windows 9x的“查找
計算機”功能查詢一下Linux機器的IP,就可以找到了。例如:
圖5.1 查找到的samba機器
以后的操作就象操作一臺windows機器的共享目錄一樣。要注意的是,由于smbd程序按
照客戶連接的身份將請求提交給服務(wù)器,所以除了在[public]段落中設(shè)置的共享屬性之
外,要使得這個共享真正生效,還要把對應(yīng)目錄(/ftp)的屬性設(shè)置成755,只有同時滿
足smb的共享權(quán)限和UNIX用戶權(quán)限的目錄和文件才能真正被網(wǎng)絡(luò)鄰居訪問。
下面我們來解釋一下smb.conf中設(shè)置的這些內(nèi)容,smb.conf文件被分成了若干段落,
用方括號擴住的一行標志著一個段落的開始,段落有兩種,一種是[global]段落,用來
設(shè)置一些基本參數(shù),另一種就是用來共享某個路徑的段落,例如剛才的[public]。
[global]段落中可以設(shè)置許多信息,詳細的內(nèi)容可以參考samba的文檔,對我們來說,
最重要的是這樣一些設(shè)置:
workgroup =
這個選項用來設(shè)置你的windows系統(tǒng)的工作組名字或者NT域的名字。
netbios name =
設(shè)置在網(wǎng)上鄰居里面看到的機器名,如果沒有,將使用機器的DNS名字。
security和身份驗證
security =
這個選項設(shè)置身份驗證機制,即如何對用戶驗證身份,目前版本支持四個選項,即sh
are,user,server和domain選項。
share選項就是我們剛才使用的,windows 9x客戶可以直接訪問共享目錄,不需要給出
密碼。另外幾種選項都需要提供用戶名和密碼。
如果security = user方式,那么系統(tǒng)將使用類似UNIX的賬號管理機制來處理這個問題
,你需要同時定義一個口令文件,用來存放samba的用戶。
例如,與上面的配置相同,但是需要驗證用戶身份的smb.conf中的golobal段落是(注
意加粗部分):
[global]
workgroup = ASNC
load printers = no
encrypt passwords=yes
smb passwd file = /etc/smbpasswd
security=user
username map = /etc/smbusers
這里需要注意的是encrypt passwords選項,這個選項表示登錄過程中以加密方式傳遞
口令,對于windows 98和windows NT 4.0,這個選項必須置成yes,對于windows95正好
相反,要設(shè)置成no,因為windows 95直接傳遞明文的口令。如果你的系統(tǒng)中同時有wind
ows 95和windows 98,需要將windows 98設(shè)置成傳遞明文,例子可以參考/usr/doc/sam
ba-2.0.3/docs下的幾個reg文件(其實只要雙擊正確的reg文件就OK了)。
username map提供一個用戶名字映像的功能,即將客戶機提供的名字映象成UNIX賬號
,例如,這里給出的文件是:
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
root = adm
也就是由客戶提供的administrator登錄名將自動由Linux解釋為root賬號。
smb passwd files提供了檢驗用戶口令的文件。
smbusers和smbpasswd文件都可以通過smbadduser命令來設(shè)置,smbadduser的格式是:
smbadduser [UNIX賬號]:[windows 賬號]
例如,要建立一個名叫test的windows登錄賬號,對應(yīng)的UNIX賬號是guest,執(zhí)行
smbadduser guest:test
然后會讓你輸入windows登錄口令,確認后,這個賬號就可以使用了。如果需要更改s
amba口令,使用smbpasswd [UNIX賬號]就可以了。
另一個常用的security選項是security =server,這個選項告訴系統(tǒng)應(yīng)該到另外一臺
NT server上做身份驗證,例如,類似于剛才的形式,但是使用ASNT_1服務(wù)器進行口令驗
證的配置應(yīng)該是:
[global]
workgroup = ASNC
load printers = no
security=server
password server = ASNT_1
最后的password server選項給出了口令服務(wù)器的名字,注意這里用的是netbios名字
,也就是網(wǎng)絡(luò)鄰居中的名字,如果netbios名字和DNS名字不一致,你需要修改/etc/lmh
osts文件,加入正確的netbios名字。(lmhosts文件的格式參考聯(lián)機手冊)。
最后一個可能的方式是security=domain選項,實際上,在用戶看來,它和security=
user幾乎是一樣的。區(qū)別在于,現(xiàn)在在本地建立的samba用戶可以被加入到由NT的域控制
器里面去。即使這樣,仍然要求samba用戶的本地映射(由NT用戶到UNIX用戶的對照)存
在,因此,我們將不多討論這個問題了。
其他重要的全局設(shè)置
在global段落里還有其他一些重要的參數(shù),主要的有下面一些:
printing =
這個選項設(shè)置打印系統(tǒng)類型,由于Linux使用BSD打印系統(tǒng),所以應(yīng)該設(shè)置成printing
=bsd。
printcap name =
設(shè)置本地打印控制文件,例如printcap name = /etc/printcap。
load printers =
這個選項設(shè)置是否提供打印服務(wù),如果你希望windows客戶可以使用你的打印機,設(shè)置
為load printers = yes,否則為no。
guest account =
guest用戶的映射用戶名字,通??偸窃O(shè)置為nobody。
lock directory=
設(shè)置文件共享鎖定使用的目錄,例如lock directory = /var/lock/samba,這個目錄
在啟動samba之前應(yīng)該存在,而且屬性要設(shè)置為755。
share mode=
是否使用文件的共享鎖定機制,應(yīng)該設(shè)定為share mode = yes以避免文件完整性遭到
破壞。
password level=
username level =
設(shè)置有意義的用戶名和口令的長度,通常應(yīng)該設(shè)置為8。
unix password sync =
除非你非常熟悉samba和windows,否則將它設(shè)置為no(缺省值),這個選項允許你通
過修改windows口令來更改UNIX口令。與它相關(guān)的還有兩個選項,你可以自己看一下缺省
的smb.conf范例。
interfaces =
告訴samba使用正確的廣播方式,例如,你的samba服務(wù)器在一個C類網(wǎng)202.111.1.0中
工作,將它設(shè)置為intefaces = 202.111.1.0 /24,通常只有當你有多片網(wǎng)卡時才需要使
用這個選項。
remote annouce =
這個選項告訴samba在什么范圍內(nèi)廣播它的信息,例如remote annouce = 202.111.1.
0/24。
host allow =
這個選項告訴samba允許那些機器使用你的共享服務(wù),例如host allow = 202.111.1.
表示202.111.1.0-202.111.1.255。
log file =
將它設(shè)置為你想要記錄samba工作信息的目錄加上一個.%m。這樣可以使samba區(qū)分出不
同客戶機器來的請求,例如log file = /var/log/samba/log.%m。
local master =
如果想要你的samba服務(wù)器成為局域網(wǎng)的主瀏覽器,設(shè)置為yes。
domain master =
如果你想要samba系統(tǒng)作為主域控制器,設(shè)置為yes。不過你要注意,samba的主域控制
器不能接受NT的請求,實際上,只有當你的系統(tǒng)中全是windows 95時,這個選項才有意
義。如果你要讓windows 95客戶機器把samba當成NT域來登錄,將它設(shè)置成yes,并且設(shè)
置security =domain以及domain logons =yes。否則,簡單地將它設(shè)置成no。
domain logons =
見domain master選項。
wins support =
如果你想要你的samba成為一個wins server(見后),將它設(shè)置成yes,否則設(shè)置成n
o。
wins server =
如果你的系統(tǒng)中有一個NT被配置成了wins server,給出它的IP。例如,wins server
=202.111.1.48。
max disk size =
這個選項給出samba可以使用的最大磁盤空間,單位是MB。例如max disk size = 100
0。如果設(shè)置為0則不進行任何限制。
max log size =
設(shè)置最大的記錄文件大小,單位是kb。
max open files =
最多可以同時打開的文件數(shù),例如max open files = 1000
preserve case =
short preserve case =
default case =
case sensitive =
這幾個選項用來設(shè)置samba的大小寫設(shè)置,preserve case和short preserve case 兩
個選項設(shè)置samba在處理文件是是否保留大小寫,缺省是no。default case是建立文件時
的缺省大小寫,缺省情況下是lower(小寫)。最后一個case sensive最為重要,它表示s
amba在處理文件的時候是否區(qū)分大小寫,缺省是no,表示不區(qū)分,如果你修改這個定義
,一定要小心,因為許多DOS軟件不認識小寫文件名字!
建立共享目錄
上面已經(jīng)建立了一個可以由所有人共享使用的目錄,在windows 9x下它被顯示成publ
ic,也可以設(shè)置其他的共享目錄。
我們首先看一看[public]的格式:
[public]
comment = public files
public = yes
path = /ftp
browseable = yes
writable = no
comment是注釋,就是在網(wǎng)絡(luò)鄰居里看到的說明,public = yes 說明這個目錄可以被
一切用戶共享,browsable是一個bool變量,當前它等于yes,表示這個目錄將在網(wǎng)上鄰
居里顯示出來并且被所有人看到。
writable設(shè)定這個目錄是否可寫,另外一個用法是read only,上面的這一行也可以寫
成read only = yes。
path=/ftp設(shè)定了這個目錄在服務(wù)器上的位置。不要忘記把這個目錄設(shè)置成大家都可以
讀的屬性。
在security=share的時候,我們只能使用共享目錄。而在security = user的情況下,
我們通??梢栽O(shè)置從網(wǎng)絡(luò)上使用宿主目錄,這方面,Linux用一個專門的[homes]段落來
設(shè)置它:
[homes]
comment = Home Directories
browseable = no
public = no
writable = yes
create mask =0740
設(shè)置browsable = no使得別人無法看到這個共享項的存在,但是你用網(wǎng)絡(luò)鄰居功能打
開這個機器時卻會根據(jù)你的用戶名自動把宿主目錄顯示出來,其他選項的意思和上面完
全一樣。注意[homes]段落不需要path語句,而且顯示的時候也不顯示成home,而是直接
顯示宿主目錄名字。這個[homes]是不能改變的。
注意create mask選項,它表示通過網(wǎng)絡(luò)鄰居建立的文件的缺省屬性。
還可以設(shè)置私有的目錄,例如,想建立一個共享目錄,共享名字為somewhere,映射到
/somewhere,但是只能由wanghy,root和someone三個用戶使用,那么可以這樣設(shè)置:
[somewhere]
comment = some where only for wanghy root someone
path = /somewhere
valid users = wanghy root someone
public = no
writable = yes
printable = no
create mask = 0765
valid users選項設(shè)置合法的用戶,同樣還可以使用+或者&,@選項來設(shè)置一個完整的
組為合法用戶,例如@test表示test組的成員,三者的主要區(qū)別是+從本地得到組信息,
&從NIS服務(wù)得出組信息,而@則兩個都用。當然,不要忘記將/somewhere設(shè)置成wanghy,
root和someone可以訪問的屬性。
當使用share認證方式共享一個大家都可以寫的目錄時必須小心,因為通常share模式
當客戶連接的時候?qū)嶋H使用的是guest用戶,所以可能需要設(shè)置對應(yīng)目錄的guest ok =y
es。另外,對應(yīng)目錄必須是全局可寫的。
共享打印機
最后的內(nèi)容是共享打印機,這可以通過使用[printers]段落完成,例如,下面的段落
啟用了網(wǎng)絡(luò)打印機,它只能由wanghy用戶使用:
# specifically define each individual printer
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user ‘guest account‘ to print
guest ok = no
writable = no
printable = yes
print command=lpr –r %s
valid users = wanghy
注意如果要使用samba的打印服務(wù),必須確定global中的load printers = yes并且pr
inting應(yīng)該設(shè)置為BSD。而且,由于windows 95的工作方式,你必須考慮遠端打印機是如
何配置的。如果samba打印機不使用過濾,那么你需要在windows 95客戶機器上安裝打印
機的驅(qū)動程序,然后直接發(fā)送過去就可以了。print command是打印時調(diào)用的打印命令,
注意許多配置工具(例如swat)會把它寫成一個print command = lpr –r –P %p %s,
但是很多情況下smbd都不會提交正確的打印機設(shè)備名字,你需要手工改成上面的形式或
者用打印機的名字代替%p參數(shù)。
在更多的情況下,Linux的samba打印機使用一個PostScript過濾器,比如使用我們在
第四章介紹的GhostScript程序,那么,在客戶看來,這個打印機將是一個PostScript打
印機,所以這時無論實際的打印機是什么,你都需要在Windows 95客戶上將這個打印機
設(shè)置成為PostScript打印機(非常有趣,哪一種PostScript打印機無所謂,只要是Post
Script而且幅面大小一樣就行了)。
總之,你可以任意設(shè)置samba的各種服務(wù),提供任意多的共享文件和目錄?;痉绞骄?br>是按照上面的段落格式,每一段給出一個共享目錄。
編輯完畢后,用testparm程序驗證是否有錯誤的行:
[root@openlab bin]# testparm
Load smb config files from /etc/smb.conf
Processing section "[public]"
Processing section "[homes]"
Loaded services file OK.
Press enter to see a dump of your service definitions
testparm程序自動校驗/etc/smb.conf的各個共享段落,然后按下回車鍵將把這個文件
顯示一遍。
如同剛才說的那樣,可以用smbd –D和nmbd –D啟動samba,也可以使用ntsysv程序,
使用方法和nfs類似,這里不再詳細敘述了。
如果要察看samba的運行狀態(tài),使用smbstatus:
# smbstatus
Samba version pre-2.0.7
Service uid gid pid machine
----------------------------------------------
No locked files
Share mode memory usage (bytes):
1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total
5.2.2 swat程序
想了解samba,可以看smb.conf的手冊頁面,如man smb.conf。但是這確實不太方便。
而且samba的語法也在不斷改變以便跟上Windows NT的發(fā)展。為了簡化samba的配置,Sa
mba在其中包含了一個可以通過瀏覽器進行smb配置的工具,這個程序的名字叫swat。
要使用swat,首先必須將它配置成一個服務(wù)器進程,這可以更改/etc/services和/et
c/inetd.conf來實現(xiàn)。首先要為swat分配一個端口,例如在/etc/services中加入這樣一
行:
swat 901/tcp
901是我們通常給swat分配的端口。
接下來,在/etc/inetd.conf中啟動swat,可以加入這樣一行:
swat stream tcp nowait.400 root /usr/sbin/swat swat
重新啟動inetd:
kill –HUP inetd
然后,在瀏覽器中輸入你的Linux機器的地址,比如Linux機器的IP是166.111.111.11
1,那么可以輸入
http://166.111.111.111:901/
,注意901和http://都是不可省略的。
然后將出現(xiàn)登錄窗口:
圖5.2 swat登錄
用戶名為root,口令輸入超級用戶口令,輸入后,將出現(xiàn)swat的配置屏幕:
圖5.3 swat
每一個標題都代表一組設(shè)置,可以用這個界面直接配置samba。特別是,可以在這個界
面里看到smb的手冊頁面。
需要注意的是,由于swat程序生成smb.conf的時候會自動刪除原來的smb.conf,因此
你應(yīng)該先備份原來的smb.conf文件。另外,swat使用明文傳送用戶名和口令,意味著你
的系統(tǒng)口令可能被監(jiān)聽到,所以一定要注意安全。
5.2.3 重新編譯samba
samba總是在不斷地更新中,你應(yīng)該盡量獲得samba的最新版本。然而,由于samba是一
個通用的UNIX程序,你能得到的通常都是源代碼,下面我們解釋一下如何重新編譯samb
a。
其實編譯samba和編譯 任何Linux源代碼的方法都是一樣的,問題在于,為了保證sam
ba在System V和BSD上都能夠使用,缺省的samba安裝目錄是/usr/local/samba,相應(yīng)的
配置文件也不是在/etc,而是/usr/local/samba/lib。為此,你首先應(yīng)該執(zhí)行配置程序
。在配置程序中,你可以設(shè)定各種目標目錄,設(shè)定的命令可以用help參數(shù)得到:
./configure –help |less
這可以顯示用什么命令更改缺省目錄,例如-bindir=/usr/bin,--sbindir=/usr/sbi
n等等。
不過,就我個人來說,我更喜歡直接手工編輯產(chǎn)生的Makefile文件,改變里面的目錄
名字,例如,下面是我改動的方法:(注意加粗的部分)首先執(zhí)行./configure,然后編
輯Makefile:
........
prefix=/usr/local/samba
exec_prefix=${prefix}
mandir=${prefix}/man
.........
srcdir=.
builddir=/root/samba-pre2.0.7/source
SHELL=/bin/sh
BASEDIR= /usr/local/samba
BINDIR = /usr/bin
# we don‘t use sbindir because we want full compatibility with
# the previous releases of Samba
SBINDIR = /usr/sbin
LIBDIR = ${exec_prefix}/lib
VARDIR = /var/log/samba
MANDIR = /usr/man
CONFIGDIR = /etc
SMBLOGFILE = $(VARDIR)/log.smb
NMBLOGFILE = $(VARDIR)/log.nmb
CONFIGFILE = $(CONFIGDIR)/smb.conf
LMHOSTSFILE = $(CONFIGDIR)/lmhosts
DRIVERFILE = $(CONFIGDIR)/printers.def
PASSWD_PROGRAM = /bin/passwd
最后再make,make install就可以了。
5.2.4 從Linux使用windows 文件服務(wù)
通常我們總是從windows 9x來訪問Samba共享文件,但是,在個別的情況下,偶爾也需
要使用Linux訪問Windows 9x/NT的共享目錄,這是通過smbclient和smbmount實現(xiàn)的。要
使用這些工具,確定你已經(jīng)安裝了smb-client軟件包。
smbclient是一個基本的訪問Windows 共享目錄的軟件,例如,假設(shè)你的Windows共享
機器是WINWS,共享目錄是PUBLIC,那么可以這樣執(zhí)行smbclient:
smbclient //WINWS/PUBLIC
然后出現(xiàn)提示:
added interface ip=202.199.248.6 bcast=202.199.248.255 nmask=255.255.255.0
Got a positive name query response from 202.199.248.5 ( 202.199.248.5 )
Password:
如果是不需要口令的系統(tǒng),直接回車,否則,按照你當前的Linux用戶名輸入對應(yīng)的口
令,然后出現(xiàn)smbclient的提示符:
smb: >
在這個提示符下面可以輸入命令,help顯示所有可用的命令,用法頗類似于ftp,使用完
畢之后,輸入quit退出。
smbclient的常用命令有:
cd [目錄名] 改變目錄
del [文件名] 刪除文件
dir 顯示目錄
get [文件名] 從服務(wù)器下載文件并且存放到本地目錄
lcd [目錄名] 改變本地目錄
mget [一組文件] 取得成組文件
put [文件名] 上載文件
recurse 激活遞歸模式,在這個模式下可以連子目錄一起操作
mput [一組文件] 成組上載文件
rmdir 刪除目錄
mkdir 建立目錄
上面是smbclient的一般用法。如果你想明確地給出用戶名和口令,使用-U參數(shù),例如
,用戶名test,口令passwd應(yīng)該給出為
smbclient //WINWS/PUBLIC –U test%passwd
另外幾個常用的smbclient命令行參數(shù)是這樣:
-I [ip地址]顯式給出目標服務(wù)器的IP地址,由于在smbclient中使用的是netbios名字
,所以有時可能出現(xiàn)無法查詢到計算機的情況,在這種情況下,可以通過-I選項給出IP
。
-L [host] 這個選項顯示指定機器上的共享資源列表,例如,smbclient –L //WINW
S
-W [工作組名] 在登錄時指定工作組名字或者域名
-N 不使用口令
另外一種使用Windows 9x文件服務(wù)的方法是使用smbmount,它的基本語法是
smbmount //機器名/共享目錄名 –c ‘mount 連接點‘
這是目前的smbmount的語法,例如,要將前面說的//WINWS/PUBLIC連接到本地的/net
目錄,命令是
smbmount //WINWS/PUBLIC –c ‘mount /net‘
以后/net下的內(nèi)容就是//WINWI/PUBLIC的內(nèi)容。
這個命令支持-U,-P(給出口令),-n(禁止口令),-D(給出NT域)等選項。
要使用共享打印機,需要使用smbprint。可以將smbprint作為一個輸入過濾器,例如
,可以將/etc/printcap配置成這樣:
smblp:
:sd=/var/spool/samba:
:af=/var/spool/samba/smbprintacc:
:if=/usr/bin/smbprint:
:lp=:
然后需要建立smbprint配置文件,例如在現(xiàn)在的情況下,smbprint位于/usr/bin下,
需要建立/usr/bin/.config文件,內(nèi)容如下:
$ cat .config
server=ASNC
#服務(wù)器的名字
service=HPLIII
#共享打印機的共享名
password="pass"
#使用口令為pass
然后就可以用lpr命令打印了。
5.2.5 WINS和NetBIOS
熟悉Windows NT的用戶會知道,windows 用NetBIOS名字在網(wǎng)絡(luò)上確定機器,但是在互
連網(wǎng)絡(luò)中人們用DNS名字,兩個名字可能會不一致;另外,NetBIOS名字的傳播是依靠廣播
機制,也就意味著Windows 系統(tǒng)的名字不能跨越子網(wǎng)和路由器,對于大型網(wǎng)絡(luò)這是非常
討厭的事情。Microsoft使用WINS(windows 通用命名服務(wù))來解決這兩個問題。
WINS Server通常是一臺Windows NT服務(wù)器,Windows 客戶機器通過它彼此交換自己的
NetBIOS名字,因為WINS服務(wù)器是通過IP地址訪問的,所以使用同一個WINS的機器無論物
理上是否處于同一個網(wǎng)段內(nèi)都可以直接在網(wǎng)絡(luò)鄰居內(nèi)看到。
要將samba配置成WINS 服務(wù)器,在[global]段落中使用下面的兩行:
wins support = yes
以后將windows 客戶機的WINS地址設(shè)置成samba機器就可以了。例如:
圖5.4 啟用wins
如果要讓samba使用已有的WINS服務(wù),使用
wins server = [WINS服務(wù)器地址]
在使用已有的wins服務(wù)器的情況下,可以將samba當成一個wins代理來使用。wins代理
實際上也是一個wins服務(wù)器,但是它是從某個主wins服務(wù)器取得名字信息,然后廣播給
別的機器,這可以讓netbios名字廣播給別的機器。
要將samba配置成為wins代理,只要設(shè)置這樣的一行:
wins proxy = yes
不要忘記同時應(yīng)該給出主wins服務(wù)器的地址。
5.3 DHCP
DHCP即Dynamic Host Configuration Protocol (動態(tài)主機配置協(xié)議),它用于給子網(wǎng)
內(nèi)的機器動態(tài)分配IP地址、域名服務(wù)器和網(wǎng)關(guān)地址等信息。通常使用它的主要理由是節(jié)
省IP地址,但是也有許多單位為了避免管理每臺機器的IP地址這樣的復(fù)雜問題而使用它
。如果你的系統(tǒng)中有很多連什么是IP地址都搞不清的用戶,用dhcp提供網(wǎng)絡(luò)配置是一件
很有益的事情。
要使用DHCP,首先必須記住DHCP是一個租用體系,系統(tǒng)會定期以廣播的方式傳遞給客
戶機器可以使用的IP地址,為此,你必須有一些IP地址可以供動態(tài)分配之用。實際上,
純粹的局域網(wǎng)中,DHCP并沒有太大的用處,但是當面對一個較大的部門的時候,為了使
安裝配置網(wǎng)絡(luò)客戶機器的方法簡化,也可以使用DHCP。
要使用DHCP,必須安裝dhcp軟件包,例如我用的是dhcp-2.0.3.rpm,當然你也仍然可
以自己編譯這個工具。
dhcp的配置非常簡單,缺省下使用/etc/dhcp.conf,這個文件通常需要自己建立,下
面是一個范例的dhcp.conf文件:
subnet 192.168.12.0 netmask 255.255.255.0 {
range 192.168.12.10 192.168.12.55;
#出租的IP范圍
default-lease-time 600;
#缺省的占用時間
max-lease-time 7200;
#最大占用時間片
option subnet-mask 255.255.255.0;
#子網(wǎng)的掩碼
option broadcast-address 192.168.12.255;
#廣播地址
option routers 192.168.12.1;
#路由器地址
option domain-name-servers 192.168.12.2;
#域名服務(wù)器地址
option domain-name "asnc.edu.cn";
#缺省的域名
}
每個由subnet開始的段落定義了一個獨立的租用段落,可以有多個subnet,每個subn
et段落里面還可以有多個range段落。
接下來,你需要啟動dhcpd程序,這個程序會使用一個文件,這個文件的名字是dhcpd
.leases,不過具體的位置和發(fā)行版本有關(guān),你可以直接執(zhí)行dhcpd程序來看看它的位置
:
[root@openlab /etc]# dhcpd
Internet Software Consortium DHCP Server 2.0
Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
All rights reserved.
Please contribute if you find this software useful.
For info, please visit
http://www.isc.org/dhcp-contrib.html
Can‘t open lease database /var/state/dhcp/dhcpd.leases: No such file or di
rector
y -- check for failed database rewrite attempt!
Please read the dhcpd.leases manual page if you.
don‘t know what to do about this.
exiting.
顯然,它認為dhcpd.leases應(yīng)該位于/var/state/dhcp/dhcpd.leases,因此你可以手
工建立這個文件:
[root@openlab /etc]# touch /var/state/dhcp/dhcpd.leases
然后就可以重新執(zhí)行dhcpd了。
不過需要注意的是,dhcpd是通過廣播來完成服務(wù)的,所以你應(yīng)該確定核心中加入了廣
播支持,用ifconfig程序可以看到當前的狀況:
[root@openlab dhcp]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 52:54:4C:B9:B8:29
inet addr:192.168.12.2
Bcast:192.168.12.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3288 errors:0 dropped:0 overruns:0 frame:0
TX packets:1015 errors:0 dropped:0 overruns:0 carrier:0
collisions:1 txqueuelen:100
Interrupt:3 Base address:0x300
MULTICAST說明廣播已經(jīng)被支持了。
下一步要確認廣播路由,例如,你要想通過eth0廣播DHCP服務(wù)信息,必須將eth0加入
廣播路由表,即
route add –host 255.255.255.255 dev eth0
下面就可以使用dhcpd了,在測試階段,你可以使用-f讓dhcpd在前臺工作:
dhcpd –f –d
-d選項顯示調(diào)試信息。
然后,你需要準備windows 9x客戶機器,這只要在Windows 98的控制面板中選擇網(wǎng)絡(luò)
設(shè)置,設(shè)置TCP/IP通信協(xié)議的屬性,將IP地址設(shè)置成“自動獲得IP地址”就可以了。
然后可以重啟動windows 98,在啟動中,你應(yīng)該可以在Linux的終端上看到這樣的題是
:
Internet Software Consortium DHCP Server 2.0
Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
All rights reserved.
Please contribute if you find this software useful.
For info, please visit
http://www.isc.org/dhcp-contrib.html
Listening on LPF/eth0/52:54:4c:b9:b8:29/202.199.248.0
Sending on LPF/eth0/52:54:4c:b9:b8:29/202.199.248.0
Sending on Socket/fallback/fallback-net
DHCPREQUEST for 192.168.12.47 from 00:40:05:47:7c:14 via eth0
DHCPREQUEST for 192.168.12.47 from 00:40:05:47:7c:14 via eth0
圖5.5 啟用DHCP
這樣的信息表示IP地址已經(jīng)正確地分配了。
如果想要了解當前dhcp分配的情況,可以看看/var/state/dhcp/dhcpd.leases,這基
本是個對照表,例如:
[root@openlab dhcp]# cat dhcpd.leases
# All times in this file are in UTC (GMT), not your local timezone. This
is
# not a bug, so please don‘t ask about it. There is no portable way to
# store leases in the local timezone, so please don‘t request this as a
# feature. If this is inconvenient or confusing to you, we sincerely
# apologize. Seriously, though - don‘t ask.
# The format of this file is documented in the dhcpd.leases(5) manual page
.
lease 192.168.12.50 {
starts 5 2000/02/18 07:45:49;
ends 5 2000/02/18 07:55:49;
hardware ethernet 00:88:cc:12:53:15;
uid 01:00:88:cc:12:53:15;
client-hostname "aaa";
}
這個信息表示192.168.12.50分配給了一個名叫aaa的客戶機器。
在某些情況下,你可能需要建立綁定到確定的以太網(wǎng)地址的IP地址對照表,這可以通
過host段落來設(shè)置,例如:
host test {
hardware ethernet 08:00:2b:4c:59:23;
#以太網(wǎng)卡的MAC地址
fixed-address 192.168.12.40;
#分配一個固定的IP地址
}
這個段落里仍然可以使用各種option 子句。
使用Linux提供的dhcp程序有一個比較討厭的問題,一般來說,Linux的dhcp服務(wù)是相
當穩(wěn)定的,問題在于,如果你在同一個子網(wǎng)內(nèi)同時有windows NT和Linux的dhcp服務(wù)程序
,那么windows 9x客戶機器總是會先選擇Windows NT服務(wù)器,目前我們還沒有找到解決
這個問題的好辦法,只能盡量保證不開Windows NT dhcp服務(wù)。
5.4 NIS
我們現(xiàn)在要來處理一個純粹在局域網(wǎng)中使用的服務(wù),即NIS(網(wǎng)絡(luò)信息系統(tǒng))。這個東
西是sun搞出來的在不同機器之間共享口令文件和組文件的工具。依靠它,不同的機器可
以使用一組同樣的賬號信息。對于NFS,Samba等共享服務(wù),或者其他需要在機器之間共
享用戶權(quán)限信息的軟件,NIS相當有用。
最簡單的NIS應(yīng)用是共享passwd文件,例如一個NIS服務(wù)器可以散布它自身的passwd和
shadow文件的信息,使得即使在NIS客戶機器上沒有賬號的用戶也可以根據(jù)服務(wù)器上的帳
號和口令登錄到客戶機器上。
NIS有兩個版本,其中,比較早期的一個是我們下面要介紹的版本,而比較新的一個,
稱為NIS+,被sun應(yīng)用在它的Solaris系統(tǒng)中。目前Linux的免費NIS服務(wù)器只能支持比較
早的版本,雖然Linux的NIS客戶程序可以使用NIS+。因為我們這本書是服務(wù)器指南,所
以我們將不會涉及NIS+。
在理解NIS之前,我們必須首先了解它的局限性。NIS是一個簡單的數(shù)據(jù)庫系統(tǒng),客戶
機器通過廣播的方法從網(wǎng)絡(luò)上取得NIS服務(wù)信息,它對NIS請求和服務(wù)信息都不作驗證,
因此任何人都可能冒充成真正的NIS客戶來取得你的NIS服務(wù)器提供的口令映射表,也就
是說可以拿到你的服務(wù)器的/etc/passwd和/etc/shadow文件?;蛘?,更危險的情況是,
任何人都可以冒充為一臺NIS服務(wù)器發(fā)布NIS信息。因此,除非你確保你得局域網(wǎng)是安全
的,否則不要使用NIS。如果你的網(wǎng)絡(luò)接入Internet,記住應(yīng)該用防火墻把局域網(wǎng)和Int
ernet割開。
因為NIS是基于廣播的,因此你在每一個以太網(wǎng)段中都需要包含一個NIS服務(wù)器,為了
確保服務(wù)器之間的信息同步,NIS使用“主”和“從”服務(wù)器的概念。主NIS服務(wù)器發(fā)送
權(quán)威的NIS信息,而從NIS服務(wù)器只是從主服務(wù)器那里取得NIS信息,并且對同一網(wǎng)段的機
器提供服務(wù)。主從服務(wù)器之間的NIS信息傳遞基于IP,所以可以跨越路由,這使得使用N
IS管理較大的網(wǎng)絡(luò)成為可能。
要使用NIS,你必須安裝NIS服務(wù)器程序,在Linux中,對應(yīng)的軟件包是以yp開頭的幾個
包,例如:
# ls yp*
yp-tools-2.3-2.i386.rpm ypbind-3.3-24.i386.rpm ypserv-1.3.7-3.i386.rpm
#rpm –i yp*
這個古怪的名字是因為NIS最早被稱為Sun Yellow Page。
我們說過NIS主要是用來在機器之間共享賬號信息,實際上還有一些信息也在NIS中傳
遞,例如下面的幾個文件:/etc/hosts,/etc/networks,/etc/protocols,/etc/serv
ices和/etc/netgroup等等。
現(xiàn)在我們來構(gòu)造一個簡單的NIS服務(wù)系統(tǒng),它包括一個NIS服務(wù)器和NIS客戶機器。NIS
服務(wù)器的設(shè)置是簡單的,首先我們必須設(shè)置NIS域的名字:
# domainname ASNC
這樣就建立了一個名字叫ASNC的NIS域。注意不要把NIS域和DNS或者Windows NT的域混
淆。
接下來,需要初始化服務(wù)器,這可以用ypinit程序來完成,通常情況下,ypinit位于
/usr/lib/yp目錄下,要將服務(wù)器初始化為NIS主服務(wù)器,使用ypinit –m:
# /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. mail.asnc.edu.cn is in the list of NIS server hosts. Please con
tinued
the names for the other hosts, one per line. When you are done with the
list, type a <control D>.
next host to add: mail.asnc.edu.cn
next host to add:
這里需要你填入各個NIS服務(wù)器的地址,輸入所有NIS服務(wù)器的地址后,按下^D組合健
,將會出現(xiàn)類似下面的信息:
The current list of NIS servers looks like this:
mail.asnc.edu.cn
wxd.asnc.edu.cn
Is this correct? [y/n: y]
回車后,系統(tǒng)將自動初始化NIS服務(wù)器。
接下來,你需要啟動NIS服務(wù)程序,這個程序的名字是ypserv,一般位于/sbin下面,
你只要簡單地執(zhí)行它就可以了,不過它是基于portmap程序的,所以
#portmap
#ypserv
這樣,NIS主服務(wù)器就開始運行了。
以后你可以將domainname和ypserv命令加入到系統(tǒng)啟動腳本中。在大部分UNIX啟動腳
本中,可以通過在/etc/domainname中寫入NIS域名讓系統(tǒng)啟動時自動設(shè)置NIS域,而yps
erv程序也可以通過NTSYSV程序啟動。
要使用NIS服務(wù),需要使用ypbind程序,在NIS客戶機器上,你需要的只是設(shè)置NIS域和
啟動ypbind:
#domainname ASNC
#portmap
#ypbind
這樣客戶機器就可以使用NIS信息了。注意如果沒有portmap,ypbind程序會簡單地退
出。
要想使用NIS提供的信息,需要管理/etc/nsswitch.conf文件。例如,這是我們的/et
c/nsswitch文件:
passwd: files nisplus nis
shadow: files nisplus nis
group: files nisplus nis
hosts: files nisplus nis dns
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
netgroup: nisplus
publickey: nisplus
automount: files nisplus
aliases: files nisplus
注意passwd: files nisplus nis這樣的行,它表示在需要passwd文件的時候,首先察
看對應(yīng)的本地文件,接著是NIS+,最后是NIS。以下的行的概念類似,至于與DNS有關(guān)的
行我們已經(jīng)在以前介紹過了。
在passwd和shadow,group里面可以使用的選項有files(代表本地文件),nisplus(NI
S+),nis(NIS),還有一個特殊的選項是compat。這個選項比較有趣,通常我們?nèi)绻?br>用NIS提供passwd和shadow,group文件的話,那么來自NIS服務(wù)器的所有賬戶信息都會被
接受,而compat允許我們用“魔餅”來控制那些信息被接受。所謂“魔餅”其實就是一
些以+號開頭的行。例如,我們希望來自服務(wù)器的信息中,只有賬號user1的信息被接受
,其他信息都被忽略,這樣只有user1用戶可以利用服務(wù)器上的賬號在客戶機器上登錄,
那么,我們首先這樣設(shè)置/etc/nsswitch.conf中的對應(yīng)行:
passwd: compat
shadow: compat
然后設(shè)置/etc/passwd文件,在最后加入這樣的行:
+user1
然后,user1用戶就可以在客戶機器上登錄了。同樣的辦法也可以用來控制整個組。
在使用魔餅的過程中,我們可以用“網(wǎng)組”來簡化管理,網(wǎng)組是sun提出的概念,它的
設(shè)置是由/etc/netgroup文件決定。這個文件的每一行由這樣的語法構(gòu)成:
[組名] [列表]
列表由一系列三元組構(gòu)成,格式是這樣的:
(主機名,用戶名,域名)
任何空欄位表示通配符。例如,(host1,,)代表主機host1上的所有用戶,(host1,,do
main1)代表主機host1上domain1域內(nèi)的所有用戶。
/etc/netgroup文件中的每一行代表一個網(wǎng)組,例如
group1 (host1,,)
說明了一個名叫g(shù)roup1的組,它代表host1上的所有用戶。
網(wǎng)組也可以用在客戶機器的passwd和group文件中,例如我們想讓客戶機器能夠接受g
roup1網(wǎng)組內(nèi)的所有信息,可以使用
+@group1
當你處理一個比較大的網(wǎng)絡(luò)的時候,你可能需要為每個NIS域建立幾個從NIS服務(wù)器。
建立NIS從服務(wù)器的步驟比較簡單,首先必須在建立主服務(wù)器時設(shè)置從服務(wù)器地址,即當
出現(xiàn)這樣的提示:
the names for the other hosts, one per line. When you are done with the
list, type a <control D>.
next host to add: mail.asnc.edu.cn
next host to add:
依次填入所有從NIS服務(wù)器的主機名或者地址,最后按下^D退出,這樣從服務(wù)器的地址
就被記錄了下來。如果你在初始化主服務(wù)器時忘了加入這樣的內(nèi)容,可以直接編輯主NI
S服務(wù)器上的/var/yp/ypservers文件來加入,每一行代表一個NIS服務(wù)器地址。編輯結(jié)束
后,在這個目錄下執(zhí)行make程序來刷新NIS數(shù)據(jù)庫。
然后可以初始化從NIS服務(wù)器,這可以用這樣的命令完成:
/usr/lib/yp/ypinit –s [主服務(wù)器名]
然后在從服務(wù)器上執(zhí)行portmap和ypserv就可以了。
為了保持從服務(wù)器和主服務(wù)器的數(shù)據(jù)同步,你需要定期從主服務(wù)器取得NIS數(shù)據(jù)。NIS
數(shù)據(jù)保存在/var/yp目錄下,每一個域會有一個單獨的目錄,例如:
bash# rwho
bash# ls
ASNC Makefileasnc binding nicknames securenets ypservers
bash# ls ASNC
hosts.byname.db protocols.byname.db services.byname.db
group.bygid.db netid.byname.db protocols.bynumber.db ypservers.db
group.byname.db passwd.byname.db rpc.byname.db
hosts.byaddr.db passwd.byuid.db rpc.bynumber.db
你可以用/usr/lib/yp/ypxfr程序從主服務(wù)器上取得NIS數(shù)據(jù),例如,想取回passwd.b
yname.db的最新版本,執(zhí)行
#/usr/lib/yp/ypxfr passwd.byname.db
如同前面說的那樣,NIS服務(wù)器的主要優(yōu)勢是簡化賬號的管理,但是它的安全性很值得
懷疑,而且必須注意的是,NIS的信息取得是使用廣播,因此它很浪費帶寬。特別是你需
要在每個以太網(wǎng)之內(nèi)加入一個NIS服務(wù)器。我們建議除非你有絕對必要的理由,否則不要
使用NIS。如果你對同步網(wǎng)絡(luò)賬號感到困擾,可以考慮使用某種自動化工具用蠻力方式拷
貝所有的賬號文件。
為了解決NIS的固有問題,Sun提出了NIS+系統(tǒng),它解決了NIS數(shù)據(jù)分層,安全性,增量
傳送等等問題,不幸的是它過于復(fù)雜,而且在作者寫這本書的時候還沒有能在Linux上執(zhí)
行的NIS+服務(wù)器軟件,所以本書將不涉及這一方面的問題。當然,什么也不能阻止你把
Linux配置成一臺NIS+客戶機器,但是NIS服務(wù)器只能在solaris上運行。
5.5 遠程過程調(diào)用和X客戶/服務(wù)器
下面我們要簡單介紹一下X客戶/服務(wù)器模型的問題。一般來說,很少有人像我們下面
介紹的這樣使用Linux,這是因為x86體系結(jié)構(gòu)本質(zhì)上在處理高性能計算的時候效果不好
,而且Linux的圖形支持至今也不能令人完全滿意。不過,我確實知道有人這樣使用X,
比如某個網(wǎng)絡(luò)系統(tǒng)中你有一臺非常強大的系統(tǒng)(PIII Xeon 700 *2),那么,你很可能
想將某些圖形的計算/設(shè)計程序放到服務(wù)器上去執(zhí)行,并且在本地觀察輸出。特別是如果
你有一臺浮點超強的工作站(比如某些Power PC系統(tǒng)),你可以將圖形的計算程序通過
網(wǎng)絡(luò)提交給它來完成,用自己的Windows或者Linux PC作為圖形終端來觀察輸出結(jié)果。
另外一種常見的方式是Linux到UNIX/Linux的,你可以把某些任務(wù)提交給遠程系統(tǒng)完成
。這可以簡單地使用telnet,也可以使用UNIX下常用的一組r(遠程)命令,如rsh,rlog
in,rexec等等。大部分windows 95的遠程X 調(diào)用都使用這些功能,而且這些命令也是許
多安全性災(zāi)難的起源,所以我們在這里也相應(yīng)地解釋這些東西。
5.5.1 r命令
r命令是一些常用的遠程操作命令,主要包括rcp,rsh,rlogin和rexec,當然還有其
他幾個也用r開頭的命令,如ruser,rwho等等,但是我們將不把主要內(nèi)容放在這些東西上
。
rcp,rsh的目標都是給用戶提供一種不需要口令就可以訪問遠程系統(tǒng)的方式。比如,
你在服務(wù)器server.yourdomain.com上有一個test賬號,而在另外一臺機器client.your
domain.com上也有一個test賬號,那么,你可能在client機器上遠程對server機器進行
操作,并且,為了簡單,也許你不想給出用戶口令。那么,你就需要使用rsh和rcp命令
了。
無論哪一種,都是基于遠程機器之間的互相信任。在UNIX中,確定這種互相信任的文
件有兩種,一種是全局的信任文件,這個文件是/etc/hosts.equiv;另外一種是單個的
對于某個用戶的信任文件,這個文件存放在每個用戶的宿主目錄下,名字是.rhosts。
/etc/hosts.equiv定義了那些遠程機器的賬號和本地賬號等價。例如,在我們剛才提
到的情況,你可以在server上建立一個/etc/hosts.equiv文件,其內(nèi)容包括這樣的行:
client.yourdomain.com test
這樣一行代表client.yourdomain.com上的test賬號等價于本地機器上的test賬號。同
樣,client.yourdomain.com cook代表client上的cook賬號等價于本地賬號cook。
必須注意一個很嚴重的問題,由于r命令可以切換用戶身份(見下面的介紹),因此,
一個等價于本地賬號的全局信任賬號實際上已經(jīng)取得了控制所有賬號的能力。因此,除
非你確定所有的全局信任賬號都是絕對可靠的,否則,保證hosts.equiv為空文件并且定
時檢查!
單個信任文件.rhosts文件必須存放在用戶的宿主目錄下,而且出于安全性的考慮,它
的屬性至少是640以免非授權(quán)的修改。這個文件的格式與hosts.equiv類似,所不同的是
,這個文件可以用來定義不同的用戶賬號之間的等價性。例如,你在server的user1用戶
的宿主目錄(/home/user1)下面建立這樣的.rhosts文件:
host1.yourdomain.com user1
host2.yourdomain.com user2
這樣的文件意味著除了host1上的user1用戶被等價為server的user1用戶之外,host2
上的user2用戶也被等價為server的user1用戶。
常用的遠程訪問命令有下面幾條:
rsh
這個命令用來在遠程機器上執(zhí)行一條命令,格式是rsh [目標主機] [命令]。例如,我
們已經(jīng)按照上面說的建立了server和client之間test賬號的等價關(guān)系,那么現(xiàn)在就可以
在client機器上用rsh命令遠程執(zhí)行server上的命令:
#rsh server.yourdomain.com ls –l
這樣,rsh將調(diào)用遠程機器上的ls -l命令(顯示的是server的目錄內(nèi)容),然后將輸出
返回到client機器上。
rsh的開關(guān)-l用來改變用戶名,在缺省的情況下,rsh會自動使用你在client機器上的
用戶名建立等價關(guān)系,但是如同我們前面那個例子,你在host2上的名字為user2,現(xiàn)在
想以user1的身份到server上執(zhí)行命令cat file1,那么可以執(zhí)行
#rsh –l user1 server.yourdomain.com cat file1
rlogin
從特性上說,它等價于telnet。不過,對于建立了信任關(guān)系的賬號,它無需輸入口令
。命令格式是rlogin [目標主機]
例如rlogin server.yourdomain.com
rsh程序也可以用-l改變身份,用法和rsh命令一樣。
rcp
這個命令用來在機器之間拷貝文件,例如,你想把當前目錄下的test.zip文件拷貝到
遠程機器server的/home/test目錄下,執(zhí)行:
rcp test.zip server.yourdomain.com:/home/test
rexec
這個命令也是在遠程機器上執(zhí)行命令,不過需要給出用戶名和口令,格式是
rexec –l [用戶名] -p [口令] [目標主機] [命令]
要使用這些r命令,需要啟動對應(yīng)的服務(wù),一般這些服務(wù)在inetd.conf中定義,下面是
/etc/services和/etc/inetd.conf中對應(yīng)的段落:
# /etc/services
…………
exec 512/tcp
login 513/tcp
shell 514/tcp cmd # no passwords used
…………………
#/etc/inetd.conf
……………
shell stream tcp nowait root /usr/sbin/tcpd in.rshd
login stream tcp nowait root /usr/sbin/tcpd in.rlogind
exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
……………………
一般來說,應(yīng)該盡量避免使用r命令,除非你能確信自己是安全的。
5.5.2 X Window的客戶/服務(wù)器模式
我們一直沒有把時間消耗到X上,因為對于一臺網(wǎng)絡(luò)服務(wù)器來說,X Window實際是可有
可無的。不過,確實存在我們說的那種情況,用Linux作為高性能的中心計算服務(wù)器或者
圖形終端。
X本身是基于客戶-服務(wù)器模式的,簡單地說,每個運行X應(yīng)用程序的機器上必須有一個
X服務(wù)程序,而X應(yīng)用程序通過網(wǎng)絡(luò)(如果在同一臺機器上,就通過lo網(wǎng)絡(luò)接口)將自己
的請求/調(diào)用提交給服務(wù)程序,然后由X服務(wù)器顯示到屏幕上。因為X應(yīng)用程序和服務(wù)程序
之間的對話是通過網(wǎng)絡(luò)的,所以X應(yīng)用程序和X服務(wù)器可以不在同一機器上運行。我們可
以在某一臺機器上運行X應(yīng)用程序,然后將它的輸出轉(zhuǎn)發(fā)到另外一臺運行著X server的機
器上,這樣就可以把計算程序和終端分離開來。
要使用這種功能,需要在你準備作為X終端的機器上使用xhost命令。這個命令用來在
X服務(wù)程序上設(shè)置它接受那些機器來的X輸出,注意你只能在X已經(jīng)啟動的情況下執(zhí)行這個
程序,比如在xterm中。語法是xhost [+/-] 主機名。例如xhost + 192.168.1.2意味著
你的X現(xiàn)在將接收來自192.168.1.2的X應(yīng)用程序的輸出。相反,xhost – 192.168.1.2把
這個項移除。一個xhost +意味著你的機器接受任何地方來的X應(yīng)用程序的信息。
在設(shè)置了X終端之后,你需要在運行X應(yīng)用程序的機器上設(shè)置DISPLAY環(huán)境變量。例如你
的X終端的IP地址是192.168.1.1,那么你需要在運行X應(yīng)用的機器(比如192.168.1.2)上
執(zhí)行
#DISPLAY=192.168.1.1
#export DISPLAY
然后各種X應(yīng)用程序的輸出就會被送到192.168.1.1去,因此在這之后你只要直接輸入
對應(yīng)的X應(yīng)用程序的啟動命令就可以在X終端上看到X界面了。
如果你覺得設(shè)置DISPLAY環(huán)境變量比較討厭,也可以直接使用display參數(shù),例如,想
把xterm的輸出轉(zhuǎn)發(fā)到192.168.1.1,直接在提示符下(在運行X應(yīng)用程序的機器上并不需
要啟動X)輸入
xterm –display 192.168.1.1:0.0 &
另外,如果你這樣執(zhí)行了xterm,那么以后從xterm中啟動的任何程序都將自動獲得一
個環(huán)境變量DISPLAY=192.168.1.1:0.0。
5.5.3 exceed
上面說的X應(yīng)用也可以用來將Linux的輸出送到Windows 9x中,只要Windows 9x中安裝
了X服務(wù)器程序。目前這種服務(wù)程序有很多種,最常用的是exceed。
安裝exceed非常簡單(信不信由你,
P),安裝之后,在第一次運行exceed的時候后
要求你建立一個X session,以后再啟動exceed將會直接縮小為圖標,但是你仍然可以用
右鍵建立新的X session。
如果你想要用X session啟動遠端的X客戶程序,你首先必須激活遠端的r命令,方法就
是我們前面說的。接下來,你需要配置X session,啟用"X clients"會出現(xiàn)一個會話框
,首先要選擇通信方式,缺省的REXEC就行了。 我們一般建議你啟動一個xterm,然后在
xterm中啟動其他的程序,因此Program Type選“Terminal Emulator",添上user id和
口令, host就是遠端機器的地址,接下來的command輸入(假定你運行eXceed的客戶機
器IP地址是192.168.1.1)
xterm -display 192.168.1.1:0.0
它表示把對應(yīng)的Linux機器的顯示輸出重定向到192.168.1.1這個地址。然后按下run菜
單,很快你會發(fā)現(xiàn)任務(wù)欄或者屏幕上多了一個終端窗口(如果被極小化,就是任務(wù)欄里
多了一個任務(wù),激活它就行了),從現(xiàn)在開始,你就可以象使用本地機器一樣使用Linu
x機器的圖形應(yīng)用程序了。你可以啟動 netscape或者kedit程序檢驗XWindow的輸出是否
會出現(xiàn)在你的windows 95客戶機器上。
注意,當你退出Xclients時,可以將前面的設(shè)置存盤,而在第二次及以后運行 eXcee
d時,eXceed會自動收縮成任務(wù)欄的圖標,只要按下右鍵選擇tools-> client starter就
可以了。
配置X session確實非常簡單,不過你也可以像前面說的那樣直接telnet到遠端機器上
,設(shè)置環(huán)境變量DISPLAY,然后就可以直接從命令行執(zhí)行x程序,程序會顯示到你的wind
ows 9x機器上,例如
$ xclock -display 192.168.1.12:0.0 &
30866
然后就會在192.168.1.12上看到xclock的界面:
圖5。6 遠程使用X服務(wù)
本書的一些涉及圖形的部分是用這種方式寫成的。
注意X的遠程使用非常消耗網(wǎng)絡(luò)帶寬,所以不要指望用它來執(zhí)行視頻程序,或者通過一
個速度比較慢的網(wǎng)絡(luò)連接使用它。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報
。
打開APP,閱讀全文并永久保存
查看更多類似文章
猜你喜歡
類似文章
samba配置
NFS,NIS,RSH配置(ZZ)
簡單安裝配置samba服務(wù)器
nfs與smb samba有什么區(qū)別
ftp服務(wù)器(ftp/tftp)、 Samba服務(wù)器、NFS服務(wù)器的區(qū)別
使用windows xp系統(tǒng),如何設(shè)置局域網(wǎng)共享功能(samba和nfs)—海美迪官方論壇...
更多類似文章 >>
生活服務(wù)
首頁
萬象
文化
人生
生活
健康
教育
職場
理財
娛樂
藝術(shù)
上網(wǎng)
留言交流
回頂部
聯(lián)系我們
分享
收藏
點擊這里,查看已保存的文章
導(dǎo)長圖
關(guān)注
一鍵復(fù)制
下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!
聯(lián)系客服
微信登錄中...
請勿關(guān)閉此頁面
先別劃走!
送你5元優(yōu)惠券,購買VIP限時立減!
5
元
優(yōu)惠券
優(yōu)惠券還有
10:00
過期
馬上使用
×