欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
局域網(wǎng)服務(wù)器
本章介紹如何將Linux機器配置稱(chēng)為局域網(wǎng)上的文件/打印服務(wù)器或者計算服務(wù)器,同
時(shí)也介紹可能出現的問(wèn)題以及解決方法。
  
      本章具體包括以下內容。
  
    NFS文件服務(wù)
  
    BSD打印服務(wù)器
  
    Samba文件/打印服務(wù)
  
    WINS、DHCP和NIS
  
    圖形/計算服務(wù)器
  
  5.1 NFS和文件/打印服務(wù)
  
  NFS是Sun發(fā)明的用來(lái)在UNIX系統之間共享文件的一種服務(wù)協(xié)議,事實(shí)上,如果你的系
統中不是有很多的UNIX機器,我們并不建議使用NFS。因為在windows 95上訪(fǎng)問(wèn)NFS相當
困難。但是,如果你的系統中包含Sun或者SCO這樣的UNIX系統,也許你除了使用NFS以外
別無(wú)選擇。
  
  5.1.1 共享文件系統
  
  NFS實(shí)際就是將某個(gè)UNIX機器的一個(gè)目錄共享出來(lái),由其他機器直接使用。共享的動(dòng)作
稱(chēng)為“輸出”(export)。例如,host1機器的mydoc目錄可以被輸出,然后host2機器的管
理員將它連接到/host1/mydoc目錄下,以后host2對這個(gè)目錄的操作自動(dòng)轉化為對host1
上相應目錄的操作。技術(shù)上,通常用UDP協(xié)議來(lái)實(shí)現NFS的數據傳輸。
  
  首先我們需要來(lái)制作一個(gè)NFS服務(wù)器,由于NFS要依賴(lài)于遠程過(guò)程調用(RPC),所以服
務(wù)器上必須啟動(dòng)SUNRPC服務(wù),這個(gè)服務(wù)的另一個(gè)名字是port mapper,在目前版本中的L
inux里面,用portmap程序來(lái)啟動(dòng)SUNRPC服務(wù):
  
  $ /sbin/portmap
  
  盡管不通過(guò)tcpd程序,但是port mapper是基于一個(gè)類(lèi)似的程序tcp wrapper的運行庫
,所以也可以使用host.deny和host.allow程序來(lái)限制訪(fǎng)問(wèn)。另外,通常portmap使用的端
口在/etc/services里面定義。
  
  為了使用NFS服務(wù),需要啟動(dòng)mountd和nfsd程序,這兩個(gè)程序在Linux中被稱(chēng)為rpc.mo
untd和rpc.nfsd:
  
  $/usr/sbin/rpc.mountd
  
  $/usr/sbin/rpc.nfsd
  
  其中,rpc.nfsd程序支持一個(gè)數字參數,用來(lái)表示啟動(dòng)nfsd程序的個(gè)數,例如:
  
  $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是基于無(wú)連接的UDP服務(wù),所以nfsd程序不得不在端口上等待并且處理,當nf
s訪(fǎng)問(wèn)比較多的時(shí)候,增加nfsd程序的個(gè)數會(huì )有助于提高NFS的工作效率(因為避免了線(xiàn)
程阻塞),但是太多的nfsd程序又可能會(huì )影響CPU的處理速度。正確的數值只有自己實(shí)驗
得到,不過(guò),對于一般的系統,10-20個(gè)nfsd程序應該可以工作的很好。
  
  另外一個(gè)需要注意的是,按照Sun的定義,NFS是無(wú)狀態(tài)的,有時(shí)這一點(diǎn)很討厭,特別
是有可能發(fā)生文件訪(fǎng)問(wèn)的沖突,為此,Linux提供nfs lock功能,對NFS訪(fǎng)問(wèn)進(jìn)行監控,
可以用rpc.lockd和rpc.statd程序來(lái)執行這個(gè)功能:
  
  $/sbin/rpc.lockd
  
  $/sbin/rpc.statd
  
  要想在啟動(dòng)的時(shí)候自動(dòng)使用NFS服務(wù),可以按照我們以前介紹的那樣,編輯相應的啟動(dòng)
腳本,不過(guò),有些Linux系統提供了設置程序,最常用的是NTSYSV程序,如redhat和TLC
都提供了這個(gè)程序:
  
  $/usr/sbin/ntsysv
  
  出現類(lèi)似下面的界面:
  

  
  將這個(gè)選單中的nfs,nfslock和portmap選中并且ok退出,系統腳本就被自動(dòng)改變了。
(ntsysv程序只是建立/etc/rc.d/rc3.d下的連接而已,你也可以手工作這個(gè)連接工作,
注意我們以前講的啟動(dòng)腳本)
  
  在啟動(dòng)了上面說(shuō)的那些服務(wù)后,現在可以輸出文件目錄了。在Linux中有兩種輸出方式
,一種使用exportfs命令,另一種是使用/etc/exports文件:
  
  exportfs命令的用法是
  
  /usr/sbin/exportfs –o [選項] [客戶(hù)機器名]:[目錄名]
  
  客戶(hù)機器名是可以使用你輸出的文件系統的機器的域名或者IP,例如,你想讓你的機
器上的/ftp目錄能夠被host.mydomain.com使用,可以使用命令
  
  /usr/sbin/exportfs host.mydomain.com:/ftp
  
  機器名字可以使用通配符,例如,*.mydomain.com表示一切mydomain.com域內的主機
,而202.112.58.0/255.255.255.0表示從202.112.58.0到202.112.58.255。
  
  不帶參數的exportfs命令將顯示當前的輸出文件系統。要取消某一個(gè)輸出,使用-u參
數,格式是exportfs –u [機器名]:[目錄名],例如:
  
  exportfs –u host.mydomain.com:/ftp
  
  -o是一些選項,首先,在這里可以設置文件系統的輸出方式,是只讀(ro)還是可以讀
寫(xiě)(rw)。另外,還有幾個(gè)選項,我們下面再解釋。
  
  在輸出了目錄之后,就可以在客戶(hù)機器上使用NFS了,NFS客戶(hù)的用法非常簡(jiǎn)單,只要
你的客戶(hù)機內核編譯時(shí)選定了NFS支持,那么,可以直接將輸出的目錄連接到客戶(hù)機上:
  
  mount [服務(wù)器名]:[目錄名] [連接點(diǎn)]
  
  例如,在上面的例子中,假設輸出文件目錄的機器名字是nfs.mydomain.com,在host
.mydomain.com中可以使用
  
  mount nfs.mydomain.com:/ftp /mnt/nfs
  
  這個(gè)目錄就被連接到/mnt/nfs下面了,以后可以象使用本地文件系統那樣使用它。
  
  關(guān)于使用這個(gè)文件系統有一個(gè)問(wèn)題,如同我們所知道那樣,Linux用用戶(hù)權限來(lái)處理文
件訪(fǎng)問(wèn)的問(wèn)題,那么,當某個(gè)目錄被輸出之后,對方如何設定對這個(gè)文件系統的操作權
限呢?答案是通過(guò)uid,例如,/ftp的屬主是ftp,屬性是644,而在服務(wù)器上的ftp的ui
d是14,于是客戶(hù)機器將尋找uid為14的用戶(hù),并且將/ftp解釋為由這個(gè)用戶(hù)所有。
  
  顯然,這可能引起混亂,為了避免出現困難,也許必須要求所有機器的用戶(hù)uid一致。
更嚴重的是root用戶(hù),如果你把一個(gè)目錄以rw的形式輸出,對方機器的root用戶(hù)就可能
完全破壞這個(gè)目錄。
  
  解決的辦法之一是-o 選項的squash參數,它有幾個(gè)選擇,root_squash將使用正常的
uid映射關(guān)系(我們剛才講的),除了客戶(hù)機器的root用戶(hù),root用戶(hù)被映射成nobody用
戶(hù),這樣就避免了root操作導致系統破壞,這是缺省值。all_squash把客戶(hù)機的所有用
戶(hù)都映射成nobody用戶(hù)。squash_uids可以映射一組用戶(hù)uid為nobody,例如squash_uid
s=0-40,45,50-100等等。還有一個(gè)選項,no_root_squash將完全按照我們在上一段中講
的方式執行,包括root具有全部權限,這絕對應該避免的。
  
  例如,使用root_squash的rw方式輸出可以使用類(lèi)似這樣的命令:
  
  exportfs –o root_squash,ro host.mydomain.com:/ftp
  
  -o的各個(gè)選項之間用逗號分開(kāi)。
  
  輸出文件系統的另外一種方式是使用/etc/exports文件,實(shí)際上,這是個(gè)描述文件,
每一行給出一個(gè)輸出目錄,在rpc.nfsd啟動(dòng)的時(shí)候會(huì )自動(dòng)去讀這個(gè)文件,對每一行執行
一個(gè)exportfs命令。另外,也可以使用exportfs -r 命令自動(dòng)輸出其中的所有文件目錄
。
  
  /etc/exports文件每行的格式大概是這樣:
  
  [目錄](méi):[客戶(hù)機器]([選項])
  
  例如,剛才的命令用/etc/exports文件相當于這樣的行:
  
  /ftp  host.mydomian.com(rw,root_squash)
  
  每次重新啟動(dòng)rpc.nfsd都會(huì )重新輸出/etc/exports 文件的內容,重起nfsd可以用這樣
的命令完成:
  
  $killall -HUP /usr/sbin/rpc.mountd
  
  $killall -HUP /usr/sbin/rpc.nfsd
  
  在Linux的NFS實(shí)現中,建議使用auto mount daemon(amd)程序來(lái)實(shí)現自動(dòng)安裝網(wǎng)絡(luò )文
件系統,但是根據我們的實(shí)驗,這種做法的唯一優(yōu)點(diǎn)是讓系統管理員忙得不可開(kāi)交,我
們建議你簡(jiǎn)單地在setup中禁止amd系統服務(wù),并且寫(xiě)一個(gè)啟動(dòng)腳本在啟動(dòng)時(shí)自動(dòng)連接所
有nfs目錄。
  
  要檢測nfs服務(wù)的工作,使用nfsstat程序。
  
  關(guān)于Linux的NFS我們要說(shuō)明一點(diǎn),由于某些原因,Linux的NFS server通常只能支持到N
FS Ver 2,而且還是一個(gè)測試中的功能,如果你重新編譯了內核,記住如果一定要使用NFS
,需要把核心的“使用測試中的功能”的選項打開(kāi)。
  
  在用Linux作為NFS Server的時(shí)候有一個(gè)特殊問(wèn)題,Sun Solaris支持NFS版本3,這個(gè)
是個(gè)缺省值,當用Sun去mount Linux輸出的目錄時(shí)會(huì )出現Linux無(wú)法正確理解Sun的NFS版
本的問(wèn)題,解決的辦法是在Linux啟動(dòng)rpc.mountd的時(shí)候明確聲明不使用Version 3:
  
  rpc.mountd –N 3
  
  5.1.2 通過(guò)網(wǎng)絡(luò )進(jìn)行打印
  
  網(wǎng)絡(luò )打印并不是NFS的功能,它是由BSD打印程序提供的,如同我們以前說(shuō)的那樣,打
印是通過(guò)/etc/printcap程序配置的。
  
  首先我們要配置一臺允許其他機器通過(guò)它打印的服務(wù)器,實(shí)際上,這完全不需要更改
/etc/printcap(如果你已經(jīng)按照我們說(shuō)的那樣設置系統使你可以在本地打?。?。相反,
你只要設置允許哪一臺機器打印到你的打印機上就行了,這可以通過(guò)/etc/hosts.lpd實(shí)
現。例如,打印服務(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中寫(xiě)上:
  
  myhost.asnc.edu.cn
  
  然后重新啟動(dòng)lpd程序,就可以允許myhost上的用戶(hù)打印了。
  
  必須注意的一個(gè)問(wèn)題是,實(shí)際存在兩個(gè)文件,都可以用來(lái)允許遠程打印,一個(gè)是我們
剛才說(shuō)的/etc/hosts.lpd,另一個(gè)比較微妙,它是/etc/hosts.equiv。關(guān)于后者的詳細
情況,我們在研究遠程X的時(shí)候討論。
  
  為了使myhost能夠自動(dòng)將打印作業(yè)發(fā)向openlab,需要設置myhost上的/etc/printcap
文件,主要是提供rp和rm變量,它們分別代表遠程打印機和遠程機器,例如,可以將my
host的/etc/printcap設置成
  
  lp:
  
          :sd=/var/spool/lpd/lp:
  
          :mx#0:
  
          :sh:
  
          :lp=:
  
          :rm=openlab.asnc.edu.cn:rp=net_lp:
  
          :if=/var/spool/lpd/lp/filter:
  
  這里將本地打印機設置為空,遠地服務(wù)器設置為openlab,遠程打印機設置為openlab
上的打印機名字,于是就可以使用openlab上的net_lp進(jìn)行打印了。
  
  通常打印用lpr命令實(shí)現,在前面我們已經(jīng)介紹了這個(gè)命令的用法。在打印服務(wù)器的情
況下,經(jīng)常會(huì )有大量的打印事務(wù)需要處理,為此,BSD打印系統使用一些命令進(jìn)行打印隊
列的管理,主要的是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一欄的數值,這個(gè)值是打印作業(yè)號,你可以用lprm命令將某個(gè)作業(yè)刪除:
  
  [root@mail /etc]# lprm 21
  
  dfA021A7xsgvf dequeued
  
  cfA021linux.asnc.edu.cn dequeued
  
  lprm后面跟作業(yè)號,注意lprm命令非常奇怪,它正常完成是要輸出信息的。
  
  可以使用lpc程序對打印隊列進(jìn)行更精細的管理,輸入lpc之后會(huì )出現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是一個(gè)很惡心的程序,個(gè)人看來(lái)一般還是使用lpq和lprm,killall lpd的辦法
比較好,如果你一定要使用lpc,那就慢慢研究吧,
P。
  
  5.2 Samba服務(wù)器
  
  實(shí)際上,NFS的用處并不多,一般,當我們要建立一個(gè)龐大的服務(wù)器集群來(lái)對付email
或者www服務(wù)時(shí),我們用NFS來(lái)實(shí)現目錄的共享。在一般情況下,我們的客戶(hù)機器總是wi
ndows,這種情況下,可以用samba來(lái)實(shí)現集成。
  
  samba是一個(gè)免費的UNIX應用程序,用來(lái)使一臺UNIX機器可以象Windows NT一樣為win
dows 9x機器提供文件和打印服務(wù)。不過(guò),確實(shí)它還不能完全提供NT的功能,然而它非常
小巧而高效。
  
  要使用samba,你必須安裝跟samba相關(guān)的軟件包,軟件包通常包括幾個(gè),即samba、s
amba-common和samba-client,后者用于從Linux訪(fǎng)問(wèn)windows 9x的共享文件。你可以到
自己的發(fā)行版本里去查找對應的文件并且安裝。當然,如果你按照我們的建議那樣安裝
了所有的程序,那么就無(wú)需再手工安裝了。
  
  5.2.1 在windows環(huán)境中集成Linux
  
  現在我們來(lái)解釋如何將Samba做成一個(gè)可以被windows 9x訪(fǎng)問(wèn)的文件服務(wù)器。這是通過(guò)
/usr/sbin/smbd守護進(jìn)程實(shí)現的。smbd可以直接從命令行啟動(dòng),但是在這之前必須先設
置一些內容。
  
  smbd的控制文件是/etc/smb.conf,這個(gè)文件的內容很長(cháng),是一個(gè)文本文件,與普通的
配置文件不同的是它使用分號為注釋行,通常在/etc下已經(jīng)有了一個(gè)smb.conf的例子,
如果你不小心把它刪除了,那么在/usr/doc/samba-2.0.3/examples下還有一個(gè)名叫smb
.conf.default的例子(2.0.3是版本號)。
  
  現在我們自己來(lái)構做一個(gè)最簡(jiǎn)單的smb.conf,你可以先備份缺省的/etc/smb.conf,然
后按照下面的例子構做一個(gè)/etc/smb.conf文件,也可以按照我們下面解釋的那樣對缺省
的smb.conf進(jìn)行編輯:
  
  下面是這個(gè)文件的內容:
  
  # 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
  
  然后你需要啟動(dòng)smbd和nmbd,后者用來(lái)在網(wǎng)絡(luò )上廣播機器的名字,首先察看/etc/ser
vices文件,看看是否有類(lè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
  
  如果沒(méi)有就加上去,然后,啟動(dòng)smbd和nmbd:
  
  smbd –D
  
  nmbd –D
  
  -D選項用于將這兩個(gè)程序設置成daemon服務(wù)進(jìn)程。
  
  現在,就可以從windows 9x客戶(hù)機訪(fǎng)問(wèn)Linux的共享目錄了,由于netbios廣播機器名
字需要一定的時(shí)間,可能不能馬上在網(wǎng)絡(luò )鄰居看到,這時(shí)你可以用windows 9x的“查找
計算機”功能查詢(xún)一下Linux機器的IP,就可以找到了。例如:
  

  
  圖5.1 查找到的samba機器
  
  以后的操作就象操作一臺windows機器的共享目錄一樣。要注意的是,由于smbd程序按
照客戶(hù)連接的身份將請求提交給服務(wù)器,所以除了在[public]段落中設置的共享屬性之
外,要使得這個(gè)共享真正生效,還要把對應目錄(/ftp)的屬性設置成755,只有同時(shí)滿(mǎn)
足smb的共享權限和UNIX用戶(hù)權限的目錄和文件才能真正被網(wǎng)絡(luò )鄰居訪(fǎng)問(wèn)。
  
  下面我們來(lái)解釋一下smb.conf中設置的這些內容,smb.conf文件被分成了若干段落,
用方括號擴住的一行標志著(zhù)一個(gè)段落的開(kāi)始,段落有兩種,一種是[global]段落,用來(lái)
設置一些基本參數,另一種就是用來(lái)共享某個(gè)路徑的段落,例如剛才的[public]。
  
  [global]段落中可以設置許多信息,詳細的內容可以參考samba的文檔,對我們來(lái)說(shuō),
最重要的是這樣一些設置:
  
  workgroup =
  
  這個(gè)選項用來(lái)設置你的windows系統的工作組名字或者NT域的名字。
  
  netbios name =
  
  設置在網(wǎng)上鄰居里面看到的機器名,如果沒(méi)有,將使用機器的DNS名字。
  
  security和身份驗證
  
  security =
  
  這個(gè)選項設置身份驗證機制,即如何對用戶(hù)驗證身份,目前版本支持四個(gè)選項,即sh
are,user,server和domain選項。
  
  share選項就是我們剛才使用的,windows 9x客戶(hù)可以直接訪(fǎng)問(wèn)共享目錄,不需要給出
密碼。另外幾種選項都需要提供用戶(hù)名和密碼。
  
  如果security = user方式,那么系統將使用類(lèi)似UNIX的賬號管理機制來(lái)處理這個(gè)問(wèn)題
,你需要同時(shí)定義一個(gè)口令文件,用來(lái)存放samba的用戶(hù)。
  
  例如,與上面的配置相同,但是需要驗證用戶(hù)身份的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選項,這個(gè)選項表示登錄過(guò)程中以加密方式傳遞
口令,對于windows 98和windows NT 4.0,這個(gè)選項必須置成yes,對于windows95正好
相反,要設置成no,因為windows 95直接傳遞明文的口令。如果你的系統中同時(shí)有wind
ows 95和windows 98,需要將windows 98設置成傳遞明文,例子可以參考/usr/doc/sam
ba-2.0.3/docs下的幾個(gè)reg文件(其實(shí)只要雙擊正確的reg文件就OK了)。
  
  username map提供一個(gè)用戶(hù)名字映像的功能,即將客戶(hù)機提供的名字映象成UNIX賬號
,例如,這里給出的文件是:
  
  # Unix_name = SMB_name1 SMB_name2 ...
  
  root = administrator admin
  
  nobody = guest pcguest smbguest
  
  root = adm
  
  也就是由客戶(hù)提供的administrator登錄名將自動(dòng)由Linux解釋為root賬號。
  
  smb passwd files提供了檢驗用戶(hù)口令的文件。
  
  smbusers和smbpasswd文件都可以通過(guò)smbadduser命令來(lái)設置,smbadduser的格式是:
  
  smbadduser [UNIX賬號]:[windows 賬號]
  
  例如,要建立一個(gè)名叫test的windows登錄賬號,對應的UNIX賬號是guest,執行
  
  smbadduser guest:test
  
  然后會(huì )讓你輸入windows登錄口令,確認后,這個(gè)賬號就可以使用了。如果需要更改s
amba口令,使用smbpasswd [UNIX賬號]就可以了。
  
  另一個(gè)常用的security選項是security =server,這個(gè)選項告訴系統應該到另外一臺
NT server上做身份驗證,例如,類(lèi)似于剛才的形式,但是使用ASNT_1服務(wù)器進(jìn)行口令驗
證的配置應該是:
  
  [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)機手冊)。
  
  最后一個(gè)可能的方式是security=domain選項,實(shí)際上,在用戶(hù)看來(lái),它和security=
user幾乎是一樣的。區別在于,現在在本地建立的samba用戶(hù)可以被加入到由NT的域控制
器里面去。即使這樣,仍然要求samba用戶(hù)的本地映射(由NT用戶(hù)到UNIX用戶(hù)的對照)存
在,因此,我們將不多討論這個(gè)問(wèn)題了。
  
  其他重要的全局設置
  
  在global段落里還有其他一些重要的參數,主要的有下面一些:
  
  printing =
  
  這個(gè)選項設置打印系統類(lèi)型,由于Linux使用BSD打印系統,所以應該設置成printing
=bsd。
  
  printcap name =
  
  設置本地打印控制文件,例如printcap name = /etc/printcap。
  
  load printers =
  
  這個(gè)選項設置是否提供打印服務(wù),如果你希望windows客戶(hù)可以使用你的打印機,設置
為load printers = yes,否則為no。
  
  guest account =
  
  guest用戶(hù)的映射用戶(hù)名字,通??偸窃O置為nobody。
  
  lock directory=
  
  設置文件共享鎖定使用的目錄,例如lock directory = /var/lock/samba,這個(gè)目錄
在啟動(dòng)samba之前應該存在,而且屬性要設置為755。
  
  share mode=
  
  是否使用文件的共享鎖定機制,應該設定為share mode = yes以避免文件完整性遭到
破壞。
  
  password level=
  
  username level =
  
  設置有意義的用戶(hù)名和口令的長(cháng)度,通常應該設置為8。
  
    unix password sync =
  
  除非你非常熟悉samba和windows,否則將它設置為no(缺省值),這個(gè)選項允許你通
過(guò)修改windows口令來(lái)更改UNIX口令。與它相關(guān)的還有兩個(gè)選項,你可以自己看一下缺省
的smb.conf范例。
  
  interfaces =
  
  告訴samba使用正確的廣播方式,例如,你的samba服務(wù)器在一個(gè)C類(lèi)網(wǎng)202.111.1.0中
工作,將它設置為intefaces = 202.111.1.0 /24,通常只有當你有多片網(wǎng)卡時(shí)才需要使
用這個(gè)選項。
  
  remote annouce =
  
  這個(gè)選項告訴samba在什么范圍內廣播它的信息,例如remote annouce = 202.111.1.
0/24。
  
  host allow =
  
  這個(gè)選項告訴samba允許那些機器使用你的共享服務(wù),例如host allow = 202.111.1.
表示202.111.1.0-202.111.1.255。
  
  log file =
  
  將它設置為你想要記錄samba工作信息的目錄加上一個(gè).%m。這樣可以使samba區分出不
同客戶(hù)機器來(lái)的請求,例如log file = /var/log/samba/log.%m。
  
  local master =
  
  如果想要你的samba服務(wù)器成為局域網(wǎng)的主瀏覽器,設置為yes。
  
  domain master =
  
  如果你想要samba系統作為主域控制器,設置為yes。不過(guò)你要注意,samba的主域控制
器不能接受NT的請求,實(shí)際上,只有當你的系統中全是windows 95時(shí),這個(gè)選項才有意
義。如果你要讓windows 95客戶(hù)機器把samba當成NT域來(lái)登錄,將它設置成yes,并且設
置security =domain以及domain logons =yes。否則,簡(jiǎn)單地將它設置成no。
  
  domain logons =
  
  見(jiàn)domain master選項。
  
  wins support =
  
  如果你想要你的samba成為一個(gè)wins server(見(jiàn)后),將它設置成yes,否則設置成n
o。
  
  wins server =
  
  如果你的系統中有一個(gè)NT被配置成了wins server,給出它的IP。例如,wins server
=202.111.1.48。
  
  max disk size =
  
  這個(gè)選項給出samba可以使用的最大磁盤(pán)空間,單位是MB。例如max disk size = 100
0。如果設置為0則不進(jìn)行任何限制。
  
  max log size =
  
  設置最大的記錄文件大小,單位是kb。
  
  max open files =
  
  最多可以同時(shí)打開(kāi)的文件數,例如max open files = 1000
  
  preserve case =
  
  short preserve case =
  
  default case =
  
  case sensitive =
  
  這幾個(gè)選項用來(lái)設置samba的大小寫(xiě)設置,preserve case和short preserve case 兩
個(gè)選項設置samba在處理文件是是否保留大小寫(xiě),缺省是no。default case是建立文件時(shí)
的缺省大小寫(xiě),缺省情況下是lower(小寫(xiě))。最后一個(gè)case sensive最為重要,它表示s
amba在處理文件的時(shí)候是否區分大小寫(xiě),缺省是no,表示不區分,如果你修改這個(gè)定義
,一定要小心,因為許多DOS軟件不認識小寫(xiě)文件名字!
  
  建立共享目錄
  
  上面已經(jīng)建立了一個(gè)可以由所有人共享使用的目錄,在windows 9x下它被顯示成publ
ic,也可以設置其他的共享目錄。
  
  我們首先看一看[public]的格式:
  
  [public]
  
  comment = public files
  
  public = yes
  
  path = /ftp
  
  browseable = yes
  
  writable = no
  
  comment是注釋?zhuān)褪窃诰W(wǎng)絡(luò )鄰居里看到的說(shuō)明,public = yes 說(shuō)明這個(gè)目錄可以被
一切用戶(hù)共享,browsable是一個(gè)bool變量,當前它等于yes,表示這個(gè)目錄將在網(wǎng)上鄰
居里顯示出來(lái)并且被所有人看到。
  
  writable設定這個(gè)目錄是否可寫(xiě),另外一個(gè)用法是read only,上面的這一行也可以寫(xiě)
成read only = yes。
  
  path=/ftp設定了這個(gè)目錄在服務(wù)器上的位置。不要忘記把這個(gè)目錄設置成大家都可以
讀的屬性。
  
  在security=share的時(shí)候,我們只能使用共享目錄。而在security = user的情況下,
我們通??梢栽O置從網(wǎng)絡(luò )上使用宿主目錄,這方面,Linux用一個(gè)專(zhuān)門(mén)的[homes]段落來(lái)
設置它:
  
  [homes]
  
   comment = Home Directories
  
   browseable = no
  
   public = no
  
   writable = yes
  
   create mask =0740
  
  設置browsable = no使得別人無(wú)法看到這個(gè)共享項的存在,但是你用網(wǎng)絡(luò )鄰居功能打
開(kāi)這個(gè)機器時(shí)卻會(huì )根據你的用戶(hù)名自動(dòng)把宿主目錄顯示出來(lái),其他選項的意思和上面完
全一樣。注意[homes]段落不需要path語(yǔ)句,而且顯示的時(shí)候也不顯示成home,而是直接
顯示宿主目錄名字。這個(gè)[homes]是不能改變的。
  
  注意create mask選項,它表示通過(guò)網(wǎng)絡(luò )鄰居建立的文件的缺省屬性。
  
  還可以設置私有的目錄,例如,想建立一個(gè)共享目錄,共享名字為somewhere,映射到
/somewhere,但是只能由wanghy,root和someone三個(gè)用戶(hù)使用,那么可以這樣設置:
  
  [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選項設置合法的用戶(hù),同樣還可以使用+或者&,@選項來(lái)設置一個(gè)完整的
組為合法用戶(hù),例如@test表示test組的成員,三者的主要區別是+從本地得到組信息,
&從NIS服務(wù)得出組信息,而@則兩個(gè)都用。當然,不要忘記將/somewhere設置成wanghy,
root和someone可以訪(fǎng)問(wèn)的屬性。
  
  當使用share認證方式共享一個(gè)大家都可以寫(xiě)的目錄時(shí)必須小心,因為通常share模式
當客戶(hù)連接的時(shí)候實(shí)際使用的是guest用戶(hù),所以可能需要設置對應目錄的guest ok =y
es。另外,對應目錄必須是全局可寫(xiě)的。
  
  共享打印機
  
  最后的內容是共享打印機,這可以通過(guò)使用[printers]段落完成,例如,下面的段落
啟用了網(wǎng)絡(luò )打印機,它只能由wanghy用戶(hù)使用:
  
  # 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應該設置為BSD。而且,由于windows 95的工作方式,你必須考慮遠端打印機是如
何配置的。如果samba打印機不使用過(guò)濾,那么你需要在windows 95客戶(hù)機器上安裝打印
機的驅動(dòng)程序,然后直接發(fā)送過(guò)去就可以了。print command是打印時(shí)調用的打印命令,
注意許多配置工具(例如swat)會(huì )把它寫(xiě)成一個(gè)print command = lpr –r –P %p %s,
但是很多情況下smbd都不會(huì )提交正確的打印機設備名字,你需要手工改成上面的形式或
者用打印機的名字代替%p參數。
  
  在更多的情況下,Linux的samba打印機使用一個(gè)PostScript過(guò)濾器,比如使用我們在
第四章介紹的GhostScript程序,那么,在客戶(hù)看來(lái),這個(gè)打印機將是一個(gè)PostScript打
印機,所以這時(shí)無(wú)論實(shí)際的打印機是什么,你都需要在Windows 95客戶(hù)上將這個(gè)打印機
設置成為PostScript打印機(非常有趣,哪一種PostScript打印機無(wú)所謂,只要是Post
Script而且幅面大小一樣就行了)。
  
  總之,你可以任意設置samba的各種服務(wù),提供任意多的共享文件和目錄?;痉绞骄?br>是按照上面的段落格式,每一段給出一個(gè)共享目錄。
  
  編輯完畢后,用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程序自動(dòng)校驗/etc/smb.conf的各個(gè)共享段落,然后按下回車(chē)鍵將把這個(gè)文件
顯示一遍。
  
  如同剛才說(shuō)的那樣,可以用smbd –D和nmbd –D啟動(dòng)samba,也可以使用ntsysv程序,
使用方法和nfs類(lèi)似,這里不再詳細敘述了。
  
  如果要察看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的手冊頁(yè)面,如man smb.conf。但是這確實(shí)不太方便。
而且samba的語(yǔ)法也在不斷改變以便跟上Windows NT的發(fā)展。為了簡(jiǎn)化samba的配置,Sa
mba在其中包含了一個(gè)可以通過(guò)瀏覽器進(jìn)行smb配置的工具,這個(gè)程序的名字叫swat。
  
  要使用swat,首先必須將它配置成一個(gè)服務(wù)器進(jìn)程,這可以更改/etc/services和/et
c/inetd.conf來(lái)實(shí)現。首先要為swat分配一個(gè)端口,例如在/etc/services中加入這樣一
行:
  
  swat              901/tcp
  
  901是我們通常給swat分配的端口。
  
  接下來(lái),在/etc/inetd.conf中啟動(dòng)swat,可以加入這樣一行:
  
  swat      stream  tcp     nowait.400      root /usr/sbin/swat  swat
  
  重新啟動(dòng)inetd:
  
  kill –HUP inetd
  
  然后,在瀏覽器中輸入你的Linux機器的地址,比如Linux機器的IP是166.111.111.11
1,那么可以輸入http://166.111.111.111:901/,注意901和http://都是不可省略的。
  
  然后將出現登錄窗口:
  

  
  圖5.2 swat登錄
  
  用戶(hù)名為root,口令輸入超級用戶(hù)口令,輸入后,將出現swat的配置屏幕:
  

  
  圖5.3 swat
  
  每一個(gè)標題都代表一組設置,可以用這個(gè)界面直接配置samba。特別是,可以在這個(gè)界
面里看到smb的手冊頁(yè)面。
  
  需要注意的是,由于swat程序生成smb.conf的時(shí)候會(huì )自動(dòng)刪除原來(lái)的smb.conf,因此
你應該先備份原來(lái)的smb.conf文件。另外,swat使用明文傳送用戶(hù)名和口令,意味著(zhù)你
的系統口令可能被監聽(tīng)到,所以一定要注意安全。
  
  5.2.3 重新編譯samba
  
  samba總是在不斷地更新中,你應該盡量獲得samba的最新版本。然而,由于samba是一
個(gè)通用的UNIX程序,你能得到的通常都是源代碼,下面我們解釋一下如何重新編譯samb
a。
  
  其實(shí)編譯samba和編譯 任何Linux源代碼的方法都是一樣的,問(wèn)題在于,為了保證sam
ba在System V和BSD上都能夠使用,缺省的samba安裝目錄是/usr/local/samba,相應的
配置文件也不是在/etc,而是/usr/local/samba/lib。為此,你首先應該執行配置程序
。在配置程序中,你可以設定各種目標目錄,設定的命令可以用help參數得到:
  
  ./configure –help |less
  
  這可以顯示用什么命令更改缺省目錄,例如-bindir=/usr/bin,--sbindir=/usr/sbi
n等等。
  
  不過(guò),就我個(gè)人來(lái)說(shuō),我更喜歡直接手工編輯產(chǎn)生的Makefile文件,改變里面的目錄
名字,例如,下面是我改動(dòng)的方法:(注意加粗的部分)首先執行./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來(lái)訪(fǎng)問(wèn)Samba共享文件,但是,在個(gè)別的情況下,偶爾也需
要使用Linux訪(fǎng)問(wèn)Windows 9x/NT的共享目錄,這是通過(guò)smbclient和smbmount實(shí)現的。要
使用這些工具,確定你已經(jīng)安裝了smb-client軟件包。
  
  smbclient是一個(gè)基本的訪(fǎng)問(wèn)Windows 共享目錄的軟件,例如,假設你的Windows共享
機器是WINWS,共享目錄是PUBLIC,那么可以這樣執行smbclient:
  
  smbclient //WINWS/PUBLIC
  
  然后出現提示:
  
  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:
  
  如果是不需要口令的系統,直接回車(chē),否則,按照你當前的Linux用戶(hù)名輸入對應的口
令,然后出現smbclient的提示符:
  
  smb: >
  
  在這個(gè)提示符下面可以輸入命令,help顯示所有可用的命令,用法頗類(lèi)似于ftp,使用完
畢之后,輸入quit退出。
  
  smbclient的常用命令有:
  
  cd [目錄名] 改變目錄
  
  del [文件名] 刪除文件
  
  dir 顯示目錄
  
  get [文件名] 從服務(wù)器下載文件并且存放到本地目錄
  
  lcd [目錄名] 改變本地目錄
  
  mget [一組文件] 取得成組文件
  
  put [文件名] 上載文件
  
  recurse 激活遞歸模式,在這個(gè)模式下可以連子目錄一起操作
  
  mput [一組文件] 成組上載文件
  
  rmdir 刪除目錄
  
  mkdir 建立目錄
  
  上面是smbclient的一般用法。如果你想明確地給出用戶(hù)名和口令,使用-U參數,例如
,用戶(hù)名test,口令passwd應該給出為
  
  smbclient //WINWS/PUBLIC –U test%passwd
  
  另外幾個(gè)常用的smbclient命令行參數是這樣:
  
  -I [ip地址]顯式給出目標服務(wù)器的IP地址,由于在smbclient中使用的是netbios名字
,所以有時(shí)可能出現無(wú)法查詢(xún)到計算機的情況,在這種情況下,可以通過(guò)-I選項給出IP
。
  
  -L [host] 這個(gè)選項顯示指定機器上的共享資源列表,例如,smbclient –L //WINW
S
  
  -W [工作組名] 在登錄時(shí)指定工作組名字或者域名
  
  -N 不使用口令
  
  另外一種使用Windows 9x文件服務(wù)的方法是使用smbmount,它的基本語(yǔ)法是
  
  smbmount //機器名/共享目錄名 –c ‘mount 連接點(diǎn)‘
  
  這是目前的smbmount的語(yǔ)法,例如,要將前面說(shuō)的//WINWS/PUBLIC連接到本地的/net
目錄,命令是
  
  smbmount //WINWS/PUBLIC –c ‘mount /net‘
  
  以后/net下的內容就是//WINWI/PUBLIC的內容。
  
  這個(gè)命令支持-U,-P(給出口令),-n(禁止口令),-D(給出NT域)等選項。
  
  要使用共享打印機,需要使用smbprint??梢詫mbprint作為一個(gè)輸入過(guò)濾器,例如
,可以將/etc/printcap配置成這樣:
  
  smblp:
  
     :sd=/var/spool/samba:
  
     :af=/var/spool/samba/smbprintacc:
  
     :if=/usr/bin/smbprint:
  
     :lp=:
  
  然后需要建立smbprint配置文件,例如在現在的情況下,smbprint位于/usr/bin下,
需要建立/usr/bin/.config文件,內容如下:
  
  $ cat .config
  
   server=ASNC      
  
  #服務(wù)器的名字
  
  service=HPLIII
  
   #共享打印機的共享名
  
  password="pass"
  
  #使用口令為pass
  
  然后就可以用lpr命令打印了。

  
  5.2.5 WINS和NetBIOS
  
  熟悉Windows NT的用戶(hù)會(huì )知道,windows 用NetBIOS名字在網(wǎng)絡(luò )上確定機器,但是在互
連網(wǎng)絡(luò )中人們用DNS名字,兩個(gè)名字可能會(huì )不一致;另外,NetBIOS名字的傳播是依靠廣播
機制,也就意味著(zhù)Windows 系統的名字不能跨越子網(wǎng)和路由器,對于大型網(wǎng)絡(luò )這是非常
討厭的事情。Microsoft使用WINS(windows 通用命名服務(wù))來(lái)解決這兩個(gè)問(wèn)題。
  
  WINS Server通常是一臺Windows NT服務(wù)器,Windows 客戶(hù)機器通過(guò)它彼此交換自己的
NetBIOS名字,因為WINS服務(wù)器是通過(guò)IP地址訪(fǎng)問(wèn)的,所以使用同一個(gè)WINS的機器無(wú)論物
理上是否處于同一個(gè)網(wǎng)段內都可以直接在網(wǎng)絡(luò )鄰居內看到。
  
  要將samba配置成WINS 服務(wù)器,在[global]段落中使用下面的兩行:
  
  wins support = yes
  
  以后將windows 客戶(hù)機的WINS地址設置成samba機器就可以了。例如:
  

  
  圖5.4 啟用wins
  
  如果要讓samba使用已有的WINS服務(wù),使用
  
  wins server = [WINS服務(wù)器地址]
  
  在使用已有的wins服務(wù)器的情況下,可以將samba當成一個(gè)wins代理來(lái)使用。wins代理
實(shí)際上也是一個(gè)wins服務(wù)器,但是它是從某個(gè)主wins服務(wù)器取得名字信息,然后廣播給
別的機器,這可以讓netbios名字廣播給別的機器。
  
  要將samba配置成為wins代理,只要設置這樣的一行:
  
  wins proxy = yes
  
  不要忘記同時(shí)應該給出主wins服務(wù)器的地址。
  
  5.3 DHCP
  
  DHCP即Dynamic Host Configuration Protocol (動(dòng)態(tài)主機配置協(xié)議),它用于給子網(wǎng)
內的機器動(dòng)態(tài)分配IP地址、域名服務(wù)器和網(wǎng)關(guān)地址等信息。通常使用它的主要理由是節
省IP地址,但是也有許多單位為了避免管理每臺機器的IP地址這樣的復雜問(wèn)題而使用它
。如果你的系統中有很多連什么是IP地址都搞不清的用戶(hù),用dhcp提供網(wǎng)絡(luò )配置是一件
很有益的事情。
  
  要使用DHCP,首先必須記住DHCP是一個(gè)租用體系,系統會(huì )定期以廣播的方式傳遞給客
戶(hù)機器可以使用的IP地址,為此,你必須有一些IP地址可以供動(dòng)態(tài)分配之用。實(shí)際上,
純粹的局域網(wǎng)中,DHCP并沒(méi)有太大的用處,但是當面對一個(gè)較大的部門(mén)的時(shí)候,為了使
安裝配置網(wǎng)絡(luò )客戶(hù)機器的方法簡(jiǎn)化,也可以使用DHCP。
  
  要使用DHCP,必須安裝dhcp軟件包,例如我用的是dhcp-2.0.3.rpm,當然你也仍然可
以自己編譯這個(gè)工具。
  
  dhcp的配置非常簡(jiǎn)單,缺省下使用/etc/dhcp.conf,這個(gè)文件通常需要自己建立,下
面是一個(gè)范例的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;
  
  #缺省的占用時(shí)間
  
  max-lease-time 7200;
  
  #最大占用時(shí)間片
  
  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";
  
  #缺省的域名

  
}

  
  每個(gè)由subnet開(kāi)始的段落定義了一個(gè)獨立的租用段落,可以有多個(gè)subnet,每個(gè)subn
et段落里面還可以有多個(gè)range段落。
  
  接下來(lái),你需要啟動(dòng)dhcpd程序,這個(gè)程序會(huì )使用一個(gè)文件,這個(gè)文件的名字是dhcpd
.leases,不過(guò)具體的位置和發(fā)行版本有關(guān),你可以直接執行dhcpd程序來(lái)看看它的位置

  
  [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應該位于/var/state/dhcp/dhcpd.leases,因此你可以手
工建立這個(gè)文件:
  
   [root@openlab /etc]# touch /var/state/dhcp/dhcpd.leases
  
  然后就可以重新執行dhcpd了。
  
  不過(guò)需要注意的是,dhcpd是通過(guò)廣播來(lái)完成服務(wù)的,所以你應該確定核心中加入了廣
播支持,用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說(shuō)明廣播已經(jīng)被支持了。
  
  下一步要確認廣播路由,例如,你要想通過(guò)eth0廣播DHCP服務(wù)信息,必須將eth0加入
廣播路由表,即
  
  route add –host 255.255.255.255 dev eth0
  
  下面就可以使用dhcpd了,在測試階段,你可以使用-f讓dhcpd在前臺工作:
  
  dhcpd –f –d
  
  -d選項顯示調試信息。
  
  然后,你需要準備windows 9x客戶(hù)機器,這只要在Windows 98的控制面板中選擇網(wǎng)絡(luò )
設置,設置TCP/IP通信協(xié)議的屬性,將IP地址設置成“自動(dòng)獲得IP地址”就可以了。
  
  然后可以重啟動(dòng)windows 98,在啟動(dò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,這基
本是個(gè)對照表,例如:
  
  [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";
  
}
  
  這個(gè)信息表示192.168.12.50分配給了一個(gè)名叫aaa的客戶(hù)機器。
  
  在某些情況下,你可能需要建立綁定到確定的以太網(wǎng)地址的IP地址對照表,這可以通
過(guò)host段落來(lái)設置,例如:
  
  host test {
  
   hardware ethernet 08:00:2b:4c:59:23;
  
  #以太網(wǎng)卡的MAC地址
  
  fixed-address 192.168.12.40;
  
  #分配一個(gè)固定的IP地址
  
}
  
  這個(gè)段落里仍然可以使用各種option 子句。
  
  使用Linux提供的dhcp程序有一個(gè)比較討厭的問(wèn)題,一般來(lái)說(shuō),Linux的dhcp服務(wù)是相
當穩定的,問(wèn)題在于,如果你在同一個(gè)子網(wǎng)內同時(shí)有windows NT和Linux的dhcp服務(wù)程序
,那么windows 9x客戶(hù)機器總是會(huì )先選擇Windows NT服務(wù)器,目前我們還沒(méi)有找到解決
這個(gè)問(wèn)題的好辦法,只能盡量保證不開(kāi)Windows NT dhcp服務(wù)。
  
  5.4 NIS
  
  我們現在要來(lái)處理一個(gè)純粹在局域網(wǎng)中使用的服務(wù),即NIS(網(wǎng)絡(luò )信息系統)。這個(gè)東
西是sun搞出來(lái)的在不同機器之間共享口令文件和組文件的工具。依靠它,不同的機器可
以使用一組同樣的賬號信息。對于NFS,Samba等共享服務(wù),或者其他需要在機器之間共
享用戶(hù)權限信息的軟件,NIS相當有用。
  
  最簡(jiǎn)單的NIS應用是共享passwd文件,例如一個(gè)NIS服務(wù)器可以散布它自身的passwd和
shadow文件的信息,使得即使在NIS客戶(hù)機器上沒(méi)有賬號的用戶(hù)也可以根據服務(wù)器上的帳
號和口令登錄到客戶(hù)機器上。
  
  NIS有兩個(gè)版本,其中,比較早期的一個(gè)是我們下面要介紹的版本,而比較新的一個(gè),
稱(chēng)為NIS+,被sun應用在它的Solaris系統中。目前Linux的免費NIS服務(wù)器只能支持比較
早的版本,雖然Linux的NIS客戶(hù)程序可以使用NIS+。因為我們這本書(shū)是服務(wù)器指南,所
以我們將不會(huì )涉及NIS+。
  
  在理解NIS之前,我們必須首先了解它的局限性。NIS是一個(gè)簡(jiǎn)單的數據庫系統,客戶(hù)
機器通過(guò)廣播的方法從網(wǎng)絡(luò )上取得NIS服務(wù)信息,它對NIS請求和服務(wù)信息都不作驗證,
因此任何人都可能冒充成真正的NIS客戶(hù)來(lái)取得你的NIS服務(wù)器提供的口令映射表,也就
是說(shuō)可以拿到你的服務(wù)器的/etc/passwd和/etc/shadow文件?;蛘?,更危險的情況是,
任何人都可以冒充為一臺NIS服務(wù)器發(fā)布NIS信息。因此,除非你確保你得局域網(wǎng)是安全
的,否則不要使用NIS。如果你的網(wǎng)絡(luò )接入Internet,記住應該用防火墻把局域網(wǎng)和Int
ernet割開(kāi)。
  
  因為NIS是基于廣播的,因此你在每一個(gè)以太網(wǎng)段中都需要包含一個(gè)NIS服務(wù)器,為了
確保服務(wù)器之間的信息同步,NIS使用“主”和“從”服務(wù)器的概念。主NIS服務(wù)器發(fā)送
權威的NIS信息,而從NIS服務(wù)器只是從主服務(wù)器那里取得NIS信息,并且對同一網(wǎng)段的機
器提供服務(wù)。主從服務(wù)器之間的NIS信息傳遞基于IP,所以可以跨越路由,這使得使用N
IS管理較大的網(wǎng)絡(luò )成為可能。
  
  要使用NIS,你必須安裝NIS服務(wù)器程序,在Linux中,對應的軟件包是以yp開(kāi)頭的幾個(gè)
包,例如:
  
  # 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*
  
  這個(gè)古怪的名字是因為NIS最早被稱(chēng)為Sun Yellow Page。
  
  我們說(shuō)過(guò)NIS主要是用來(lái)在機器之間共享賬號信息,實(shí)際上還有一些信息也在NIS中傳
遞,例如下面的幾個(gè)文件:/etc/hosts,/etc/networks,/etc/protocols,/etc/serv
ices和/etc/netgroup等等。
  
  現在我們來(lái)構造一個(gè)簡(jiǎn)單的NIS服務(wù)系統,它包括一個(gè)NIS服務(wù)器和NIS客戶(hù)機器。NIS
服務(wù)器的設置是簡(jiǎn)單的,首先我們必須設置NIS域的名字:
  
  # domainname ASNC
  
  這樣就建立了一個(gè)名字叫ASNC的NIS域。注意不要把NIS域和DNS或者Windows NT的域混
淆。
  
  接下來(lái),需要初始化服務(wù)器,這可以用ypinit程序來(lái)完成,通常情況下,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:
  
  這里需要你填入各個(gè)NIS服務(wù)器的地址,輸入所有NIS服務(wù)器的地址后,按下^D組合健
,將會(huì )出現類(lèi)似下面的信息:
  
  The current list of NIS servers looks like this:
  
  mail.asnc.edu.cn
  
  wxd.asnc.edu.cn
  
  Is this correct?  [y/n: y]
  
  回車(chē)后,系統將自動(dòng)初始化NIS服務(wù)器。
  
  接下來(lái),你需要啟動(dòng)NIS服務(wù)程序,這個(gè)程序的名字是ypserv,一般位于/sbin下面,
你只要簡(jiǎn)單地執行它就可以了,不過(guò)它是基于portmap程序的,所以
  
  #portmap
  
  #ypserv
  
  這樣,NIS主服務(wù)器就開(kāi)始運行了。
  
  以后你可以將domainname和ypserv命令加入到系統啟動(dòng)腳本中。在大部分UNIX啟動(dòng)腳
本中,可以通過(guò)在/etc/domainname中寫(xiě)入NIS域名讓系統啟動(dòng)時(shí)自動(dòng)設置NIS域,而yps
erv程序也可以通過(guò)NTSYSV程序啟動(dòng)。
  
  要使用NIS服務(wù),需要使用ypbind程序,在NIS客戶(hù)機器上,你需要的只是設置NIS域和
啟動(dòng)ypbind:
  
  #domainname ASNC
  
  #portmap
  
  #ypbind
  
  這樣客戶(hù)機器就可以使用NIS信息了。注意如果沒(méi)有portmap,ypbind程序會(huì )簡(jiǎn)單地退
出。
  
  要想使用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文件的時(shí)候,首先察
看對應的本地文件,接著(zhù)是NIS+,最后是NIS。以下的行的概念類(lèi)似,至于與DNS有關(guān)的
行我們已經(jīng)在以前介紹過(guò)了。
  
  在passwd和shadow,group里面可以使用的選項有files(代表本地文件),nisplus(NI
S+),nis(NIS),還有一個(gè)特殊的選項是compat。這個(gè)選項比較有趣,通常我們如果使
用NIS提供passwd和shadow,group文件的話(huà),那么來(lái)自NIS服務(wù)器的所有賬戶(hù)信息都會(huì )被
接受,而compat允許我們用“魔餅”來(lái)控制那些信息被接受。所謂“魔餅”其實(shí)就是一
些以+號開(kāi)頭的行。例如,我們希望來(lái)自服務(wù)器的信息中,只有賬號user1的信息被接受
,其他信息都被忽略,這樣只有user1用戶(hù)可以利用服務(wù)器上的賬號在客戶(hù)機器上登錄,
那么,我們首先這樣設置/etc/nsswitch.conf中的對應行:
  
  passwd:     compat
  
  shadow:     compat
  
  然后設置/etc/passwd文件,在最后加入這樣的行:
  
  +user1
  
  然后,user1用戶(hù)就可以在客戶(hù)機器上登錄了。同樣的辦法也可以用來(lái)控制整個(gè)組。
  
  在使用魔餅的過(guò)程中,我們可以用“網(wǎng)組”來(lái)簡(jiǎn)化管理,網(wǎng)組是sun提出的概念,它的
設置是由/etc/netgroup文件決定。這個(gè)文件的每一行由這樣的語(yǔ)法構成:
  
  [組名]  [列表]
  
  列表由一系列三元組構成,格式是這樣的:
  
  (主機名,用戶(hù)名,域名)
  
  任何空欄位表示通配符。例如,(host1,,)代表主機host1上的所有用戶(hù),(host1,,do
main1)代表主機host1上domain1域內的所有用戶(hù)。
  
  /etc/netgroup文件中的每一行代表一個(gè)網(wǎng)組,例如
  
  group1 (host1,,)
  
  說(shuō)明了一個(gè)名叫g(shù)roup1的組,它代表host1上的所有用戶(hù)。
  
  網(wǎng)組也可以用在客戶(hù)機器的passwd和group文件中,例如我們想讓客戶(hù)機器能夠接受g
roup1網(wǎng)組內的所有信息,可以使用
  
  +@group1
  
  當你處理一個(gè)比較大的網(wǎng)絡(luò )的時(shí)候,你可能需要為每個(gè)NIS域建立幾個(gè)從NIS服務(wù)器。
建立NIS從服務(wù)器的步驟比較簡(jiǎn)單,首先必須在建立主服務(wù)器時(shí)設置從服務(wù)器地址,即當
出現這樣的提示:
  
   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ù)器的地址
就被記錄了下來(lái)。如果你在初始化主服務(wù)器時(shí)忘了加入這樣的內容,可以直接編輯主NI
S服務(wù)器上的/var/yp/ypservers文件來(lái)加入,每一行代表一個(gè)NIS服務(wù)器地址。編輯結束
后,在這個(gè)目錄下執行make程序來(lái)刷新NIS數據庫。
  
  然后可以初始化從NIS服務(wù)器,這可以用這樣的命令完成:
  
  /usr/lib/yp/ypinit –s [主服務(wù)器名]
  
  然后在從服務(wù)器上執行portmap和ypserv就可以了。
  
  為了保持從服務(wù)器和主服務(wù)器的數據同步,你需要定期從主服務(wù)器取得NIS數據。NIS
數據保存在/var/yp目錄下,每一個(gè)域會(huì )有一個(gè)單獨的目錄,例如:
  
  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數據,例如,想取回passwd.b
yname.db的最新版本,執行
  
  #/usr/lib/yp/ypxfr passwd.byname.db
  
  如同前面說(shuō)的那樣,NIS服務(wù)器的主要優(yōu)勢是簡(jiǎn)化賬號的管理,但是它的安全性很值得
懷疑,而且必須注意的是,NIS的信息取得是使用廣播,因此它很浪費帶寬。特別是你需
要在每個(gè)以太網(wǎng)之內加入一個(gè)NIS服務(wù)器。我們建議除非你有絕對必要的理由,否則不要
使用NIS。如果你對同步網(wǎng)絡(luò )賬號感到困擾,可以考慮使用某種自動(dòng)化工具用蠻力方式拷
貝所有的賬號文件。
  
  為了解決NIS的固有問(wèn)題,Sun提出了NIS+系統,它解決了NIS數據分層,安全性,增量
傳送等等問(wèn)題,不幸的是它過(guò)于復雜,而且在作者寫(xiě)這本書(shū)的時(shí)候還沒(méi)有能在Linux上執
行的NIS+服務(wù)器軟件,所以本書(shū)將不涉及這一方面的問(wèn)題。當然,什么也不能阻止你把
Linux配置成一臺NIS+客戶(hù)機器,但是NIS服務(wù)器只能在solaris上運行。
  
  5.5 遠程過(guò)程調用和X客戶(hù)/服務(wù)器
  
  下面我們要簡(jiǎn)單介紹一下X客戶(hù)/服務(wù)器模型的問(wèn)題。一般來(lái)說(shuō),很少有人像我們下面
介紹的這樣使用Linux,這是因為x86體系結構本質(zhì)上在處理高性能計算的時(shí)候效果不好
,而且Linux的圖形支持至今也不能令人完全滿(mǎn)意。不過(guò),我確實(shí)知道有人這樣使用X,
比如某個(gè)網(wǎng)絡(luò )系統中你有一臺非常強大的系統(PIII Xeon 700 *2),那么,你很可能
想將某些圖形的計算/設計程序放到服務(wù)器上去執行,并且在本地觀(guān)察輸出。特別是如果
你有一臺浮點(diǎn)超強的工作站(比如某些Power PC系統),你可以將圖形的計算程序通過(guò)
網(wǎng)絡(luò )提交給它來(lái)完成,用自己的Windows或者Linux PC作為圖形終端來(lái)觀(guān)察輸出結果。
  
  另外一種常見(jiàn)的方式是Linux到UNIX/Linux的,你可以把某些任務(wù)提交給遠程系統完成
。這可以簡(jiǎn)單地使用telnet,也可以使用UNIX下常用的一組r(遠程)命令,如rsh,rlog
in,rexec等等。大部分windows 95的遠程X 調用都使用這些功能,而且這些命令也是許
多安全性災難的起源,所以我們在這里也相應地解釋這些東西。
  
  5.5.1 r命令
  
  r命令是一些常用的遠程操作命令,主要包括rcp,rsh,rlogin和rexec,當然還有其
他幾個(gè)也用r開(kāi)頭的命令,如ruser,rwho等等,但是我們將不把主要內容放在這些東西上
。
  
  rcp,rsh的目標都是給用戶(hù)提供一種不需要口令就可以訪(fǎng)問(wèn)遠程系統的方式。比如,
你在服務(wù)器server.yourdomain.com上有一個(gè)test賬號,而在另外一臺機器client.your
domain.com上也有一個(gè)test賬號,那么,你可能在client機器上遠程對server機器進(jìn)行
操作,并且,為了簡(jiǎn)單,也許你不想給出用戶(hù)口令。那么,你就需要使用rsh和rcp命令
了。
  
  無(wú)論哪一種,都是基于遠程機器之間的互相信任。在UNIX中,確定這種互相信任的文
件有兩種,一種是全局的信任文件,這個(gè)文件是/etc/hosts.equiv;另外一種是單個(gè)的
對于某個(gè)用戶(hù)的信任文件,這個(gè)文件存放在每個(gè)用戶(hù)的宿主目錄下,名字是.rhosts。
  
  /etc/hosts.equiv定義了那些遠程機器的賬號和本地賬號等價(jià)。例如,在我們剛才提
到的情況,你可以在server上建立一個(gè)/etc/hosts.equiv文件,其內容包括這樣的行:
  
  client.yourdomain.com test
  
  這樣一行代表client.yourdomain.com上的test賬號等價(jià)于本地機器上的test賬號。同
樣,client.yourdomain.com cook代表client上的cook賬號等價(jià)于本地賬號cook。
  
  必須注意一個(gè)很?chē)乐氐膯?wèn)題,由于r命令可以切換用戶(hù)身份(見(jiàn)下面的介紹),因此,
一個(gè)等價(jià)于本地賬號的全局信任賬號實(shí)際上已經(jīng)取得了控制所有賬號的能力。因此,除
非你確定所有的全局信任賬號都是絕對可靠的,否則,保證hosts.equiv為空文件并且定
時(shí)檢查!
  
  單個(gè)信任文件.rhosts文件必須存放在用戶(hù)的宿主目錄下,而且出于安全性的考慮,它
的屬性至少是640以免非授權的修改。這個(gè)文件的格式與hosts.equiv類(lèi)似,所不同的是
,這個(gè)文件可以用來(lái)定義不同的用戶(hù)賬號之間的等價(jià)性。例如,你在server的user1用戶(hù)
的宿主目錄(/home/user1)下面建立這樣的.rhosts文件:
  
  host1.yourdomain.com user1
  
  host2.yourdomain.com user2
  
  這樣的文件意味著(zhù)除了host1上的user1用戶(hù)被等價(jià)為server的user1用戶(hù)之外,host2
上的user2用戶(hù)也被等價(jià)為server的user1用戶(hù)。
  
  常用的遠程訪(fǎng)問(wèn)命令有下面幾條:
  
  rsh
  
  這個(gè)命令用來(lái)在遠程機器上執行一條命令,格式是rsh [目標主機] [命令]。例如,我
們已經(jīng)按照上面說(shuō)的建立了server和client之間test賬號的等價(jià)關(guān)系,那么現在就可以
在client機器上用rsh命令遠程執行server上的命令:
  
  #rsh server.yourdomain.com ls –l
  
  這樣,rsh將調用遠程機器上的ls -l命令(顯示的是server的目錄內容),然后將輸出
返回到client機器上。
  
  rsh的開(kāi)關(guān)-l用來(lái)改變用戶(hù)名,在缺省的情況下,rsh會(huì )自動(dòng)使用你在client機器上的
用戶(hù)名建立等價(jià)關(guān)系,但是如同我們前面那個(gè)例子,你在host2上的名字為user2,現在
想以user1的身份到server上執行命令cat file1,那么可以執行
  
  #rsh –l user1 server.yourdomain.com cat file1
  
  rlogin
  
  從特性上說(shuō),它等價(jià)于telnet。不過(guò),對于建立了信任關(guān)系的賬號,它無(wú)需輸入口令
。命令格式是rlogin [目標主機]
  
  例如rlogin server.yourdomain.com
  
  rsh程序也可以用-l改變身份,用法和rsh命令一樣。
  
  rcp
  
  這個(gè)命令用來(lái)在機器之間拷貝文件,例如,你想把當前目錄下的test.zip文件拷貝到
遠程機器server的/home/test目錄下,執行:
  
  rcp test.zip server.yourdomain.com:/home/test
  
  rexec
  
  這個(gè)命令也是在遠程機器上執行命令,不過(guò)需要給出用戶(hù)名和口令,格式是
  
  rexec –l [用戶(hù)名] -p [口令] [目標主機] [命令]
  
  要使用這些r命令,需要啟動(dòng)對應的服務(wù),一般這些服務(wù)在inetd.conf中定義,下面是
/etc/services和/etc/inetd.conf中對應的段落:
  
  # /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
  
  ……………………

  
  一般來(lái)說(shuō),應該盡量避免使用r命令,除非你能確信自己是安全的。
  
  5.5.2 X Window的客戶(hù)/服務(wù)器模式
  
  我們一直沒(méi)有把時(shí)間消耗到X上,因為對于一臺網(wǎng)絡(luò )服務(wù)器來(lái)說(shuō),X Window實(shí)際是可有
可無(wú)的。不過(guò),確實(shí)存在我們說(shuō)的那種情況,用Linux作為高性能的中心計算服務(wù)器或者
圖形終端。
  
  X本身是基于客戶(hù)-服務(wù)器模式的,簡(jiǎn)單地說(shuō),每個(gè)運行X應用程序的機器上必須有一個(gè)
X服務(wù)程序,而X應用程序通過(guò)網(wǎng)絡(luò )(如果在同一臺機器上,就通過(guò)lo網(wǎng)絡(luò )接口)將自己
的請求/調用提交給服務(wù)程序,然后由X服務(wù)器顯示到屏幕上。因為X應用程序和服務(wù)程序
之間的對話(huà)是通過(guò)網(wǎng)絡(luò )的,所以X應用程序和X服務(wù)器可以不在同一機器上運行。我們可
以在某一臺機器上運行X應用程序,然后將它的輸出轉發(fā)到另外一臺運行著(zhù)X server的機
器上,這樣就可以把計算程序和終端分離開(kāi)來(lái)。
  
  要使用這種功能,需要在你準備作為X終端的機器上使用xhost命令。這個(gè)命令用來(lái)在
X服務(wù)程序上設置它接受那些機器來(lái)的X輸出,注意你只能在X已經(jīng)啟動(dòng)的情況下執行這個(gè)
程序,比如在xterm中。語(yǔ)法是xhost [+/-] 主機名。例如xhost + 192.168.1.2意味著(zhù)
你的X現在將接收來(lái)自192.168.1.2的X應用程序的輸出。相反,xhost – 192.168.1.2把
這個(gè)項移除。一個(gè)xhost +意味著(zhù)你的機器接受任何地方來(lái)的X應用程序的信息。
  
  在設置了X終端之后,你需要在運行X應用程序的機器上設置DISPLAY環(huán)境變量。例如你
的X終端的IP地址是192.168.1.1,那么你需要在運行X應用的機器(比如192.168.1.2)上
執行
  
  #DISPLAY=192.168.1.1
  
  #export DISPLAY
  
  然后各種X應用程序的輸出就會(huì )被送到192.168.1.1去,因此在這之后你只要直接輸入
對應的X應用程序的啟動(dòng)命令就可以在X終端上看到X界面了。
  
  如果你覺(jué)得設置DISPLAY環(huán)境變量比較討厭,也可以直接使用display參數,例如,想
把xterm的輸出轉發(fā)到192.168.1.1,直接在提示符下(在運行X應用程序的機器上并不需
要啟動(dòng)X(jué))輸入
  
  xterm –display 192.168.1.1:0.0 &
  
  另外,如果你這樣執行了xterm,那么以后從xterm中啟動(dòng)的任何程序都將自動(dòng)獲得一
個(gè)環(huán)境變量DISPLAY=192.168.1.1:0.0。
  
  5.5.3 exceed
  
  上面說(shuō)的X應用也可以用來(lái)將Linux的輸出送到Windows 9x中,只要Windows 9x中安裝
了X服務(wù)器程序。目前這種服務(wù)程序有很多種,最常用的是exceed。
  
  安裝exceed非常簡(jiǎn)單(信不信由你,
P),安裝之后,在第一次運行exceed的時(shí)候后
要求你建立一個(gè)X session,以后再啟動(dòng)exceed將會(huì )直接縮小為圖標,但是你仍然可以用
右鍵建立新的X session。
  
  如果你想要用X session啟動(dòng)遠端的X客戶(hù)程序,你首先必須激活遠端的r命令,方法就
是我們前面說(shuō)的。接下來(lái),你需要配置X session,啟用"X clients"會(huì )出現一個(gè)會(huì )話(huà)框
,首先要選擇通信方式,缺省的REXEC就行了。 我們一般建議你啟動(dòng)一個(gè)xterm,然后在
xterm中啟動(dòng)其他的程序,因此Program Type選“Terminal Emulator",添上user id和
口令, host就是遠端機器的地址,接下來(lái)的command輸入(假定你運行eXceed的客戶(hù)機
器IP地址是192.168.1.1)
  
  xterm -display 192.168.1.1:0.0
  
  它表示把對應的Linux機器的顯示輸出重定向到192.168.1.1這個(gè)地址。然后按下run菜
單,很快你會(huì )發(fā)現任務(wù)欄或者屏幕上多了一個(gè)終端窗口(如果被極小化,就是任務(wù)欄里
多了一個(gè)任務(wù),激活它就行了),從現在開(kāi)始,你就可以象使用本地機器一樣使用Linu
x機器的圖形應用程序了。你可以啟動(dòng) netscape或者kedit程序檢驗XWindow的輸出是否
會(huì )出現在你的windows 95客戶(hù)機器上。
  
  注意,當你退出Xclients時(shí),可以將前面的設置存盤(pán),而在第二次及以后運行 eXcee
d時(shí),eXceed會(huì )自動(dòng)收縮成任務(wù)欄的圖標,只要按下右鍵選擇tools-> client starter就
可以了。
  
  配置X session確實(shí)非常簡(jiǎn)單,不過(guò)你也可以像前面說(shuō)的那樣直接telnet到遠端機器上
,設置環(huán)境變量DISPLAY,然后就可以直接從命令行執行x程序,程序會(huì )顯示到你的wind
ows 9x機器上,例如
  
  $ xclock -display 192.168.1.12:0.0 &
  
  30866
  
  然后就會(huì )在192.168.1.12上看到xclock的界面:
  

  
  圖5。6 遠程使用X服務(wù)
  
  本書(shū)的一些涉及圖形的部分是用這種方式寫(xiě)成的。
  
  注意X的遠程使用非常消耗網(wǎng)絡(luò )帶寬,所以不要指望用它來(lái)執行視頻程序,或者通過(guò)一
個(gè)速度比較慢的網(wǎng)絡(luò )連接使用它。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
samba配置
NFS,NIS,RSH配置(ZZ)
簡(jiǎn)單安裝配置samba服務(wù)器
nfs與smb samba有什么區別
ftp服務(wù)器(ftp/tftp)、 Samba服務(wù)器、NFS服務(wù)器的區別
使用windows xp系統,如何設置局域網(wǎng)共享功能(samba和nfs)—海美迪官方論壇...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久