⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000009.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;ruster&nbsp;(尘埃*星辰*领悟),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;第五章&nbsp;局域网服务器&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Dec&nbsp;21&nbsp;13:38:39&nbsp;2000)&nbsp;<BR>&nbsp;<BR>第5章&nbsp;局域网服务器&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;本章要点:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;本章介绍如何将Linux机器配置称为局域网上的文件/打印服务器或者计算服务器,同&nbsp;<BR>时也介绍可能出现的问题以及解决方法。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本章具体包括以下内容。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;NFS文件服务&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BSD打印服务器&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Samba文件/打印服务&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WINS、DHCP和NIS&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;图形/计算服务器&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;5.1&nbsp;NFS和文件/打印服务&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;NFS是Sun发明的用来在UNIX系统之间共享文件的一种服务协议,事实上,如果你的系&nbsp;<BR>统中不是有很多的UNIX机器,我们并不建议使用NFS。因为在windows&nbsp;95上访问NFS相当&nbsp;<BR>困难。但是,如果你的系统中包含Sun或者SCO这样的UNIX系统,也许你除了使用NFS以外&nbsp;<BR>别无选择。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;5.1.1&nbsp;共享文件系统&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;NFS实际就是将某个UNIX机器的一个目录共享出来,由其他机器直接使用。共享的动作&nbsp;<BR>称为“输出”(export)。例如,host1机器的mydoc目录可以被输出,然后host2机器的管&nbsp;<BR>理员将它连接到/host1/mydoc目录下,以后host2对这个目录的操作自动转化为对host1&nbsp;<BR>上相应目录的操作。技术上,通常用UDP协议来实现NFS的数据传输。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;首先我们需要来制作一个NFS服务器,由于NFS要依赖于远程过程调用(RPC),所以服&nbsp;<BR>务器上必须启动SUNRPC服务,这个服务的另一个名字是port&nbsp;mapper,在目前版本中的L&nbsp;<BR>inux里面,用portmap程序来启动SUNRPC服务:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$&nbsp;/sbin/portmap&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;尽管不通过tcpd程序,但是port&nbsp;mapper是基于一个类似的程序tcp&nbsp;wrapper的运行库&nbsp;<BR>,所以也可以使用host.deny和host.allow程序来限制访问。另外,通常portmap使用的端&nbsp;<BR>口在/etc/services里面定义。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;为了使用NFS服务,需要启动mountd和nfsd程序,这两个程序在Linux中被称为rpc.mo&nbsp;<BR>untd和rpc.nfsd:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$/usr/sbin/rpc.mountd&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$/usr/sbin/rpc.nfsd&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;其中,rpc.nfsd程序支持一个数字参数,用来表示启动nfsd程序的个数,例如:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$rpc.nfsd&nbsp;7&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$ps&nbsp;ax|grep&nbsp;nfsd&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;606&nbsp;pts/0&nbsp;&nbsp;&nbsp;&nbsp;SW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00&nbsp;[nfsd]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;607&nbsp;pts/0&nbsp;&nbsp;&nbsp;&nbsp;SW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00&nbsp;[nfsd]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;608&nbsp;pts/0&nbsp;&nbsp;&nbsp;&nbsp;SW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00&nbsp;[nfsd]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;609&nbsp;pts/0&nbsp;&nbsp;&nbsp;&nbsp;SW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00&nbsp;[nfsd]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;610&nbsp;pts/0&nbsp;&nbsp;&nbsp;&nbsp;SW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00&nbsp;[nfsd]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;611&nbsp;pts/0&nbsp;&nbsp;&nbsp;&nbsp;SW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00&nbsp;[nfsd]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;612&nbsp;pts/0&nbsp;&nbsp;&nbsp;&nbsp;SW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00&nbsp;[nfsd]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;由于NFS是基于无连接的UDP服务,所以nfsd程序不得不在端口上等待并且处理,当nf&nbsp;<BR>s访问比较多的时候,增加nfsd程序的个数会有助于提高NFS的工作效率(因为避免了线&nbsp;<BR>程阻塞),但是太多的nfsd程序又可能会影响CPU的处理速度。正确的数值只有自己实验&nbsp;<BR>得到,不过,对于一般的系统,10-20个nfsd程序应该可以工作的很好。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;另外一个需要注意的是,按照Sun的定义,NFS是无状态的,有时这一点很讨厌,特别&nbsp;<BR>是有可能发生文件访问的冲突,为此,Linux提供nfs&nbsp;lock功能,对NFS访问进行监控,&nbsp;<BR>可以用rpc.lockd和rpc.statd程序来执行这个功能:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$/sbin/rpc.lockd&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$/sbin/rpc.statd&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;要想在启动的时候自动使用NFS服务,可以按照我们以前介绍的那样,编辑相应的启动&nbsp;<BR>脚本,不过,有些Linux系统提供了设置程序,最常用的是NTSYSV程序,如redhat和TLC&nbsp;<BR>都提供了这个程序:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$/usr/sbin/ntsysv&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;出现类似下面的界面:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;将这个选单中的nfs,nfslock和portmap选中并且ok退出,系统脚本就被自动改变了。&nbsp;<BR>(ntsysv程序只是建立/etc/rc.d/rc3.d下的连接而已,你也可以手工作这个连接工作,&nbsp;<BR>注意我们以前讲的启动脚本)&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;在启动了上面说的那些服务后,现在可以输出文件目录了。在Linux中有两种输出方式&nbsp;<BR>,一种使用exportfs命令,另一种是使用/etc/exports文件:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;exportfs命令的用法是&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;/usr/sbin/exportfs&nbsp;–o&nbsp;[选项]&nbsp;[客户机器名]:[目录名]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;客户机器名是可以使用你输出的文件系统的机器的域名或者IP,例如,你想让你的机&nbsp;<BR>器上的/ftp目录能够被host.mydomain.com使用,可以使用命令&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;/usr/sbin/exportfs&nbsp;host.mydomain.com:/ftp&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;机器名字可以使用通配符,例如,*.mydomain.com表示一切mydomain.com域内的主机&nbsp;<BR>,而202.112.58.0/255.255.255.0表示从202.112.58.0到202.112.58.255。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;不带参数的exportfs命令将显示当前的输出文件系统。要取消某一个输出,使用-u参&nbsp;<BR>数,格式是exportfs&nbsp;–u&nbsp;[机器名]:[目录名],例如:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;exportfs&nbsp;–u&nbsp;host.mydomain.com:/ftp&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-o是一些选项,首先,在这里可以设置文件系统的输出方式,是只读(ro)还是可以读&nbsp;<BR>写(rw)。另外,还有几个选项,我们下面再解释。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;在输出了目录之后,就可以在客户机器上使用NFS了,NFS客户的用法非常简单,只要&nbsp;<BR>你的客户机内核编译时选定了NFS支持,那么,可以直接将输出的目录连接到客户机上:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;mount&nbsp;[服务器名]:[目录名]&nbsp;[连接点]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;例如,在上面的例子中,假设输出文件目录的机器名字是nfs.mydomain.com,在host&nbsp;<BR>.mydomain.com中可以使用&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;mount&nbsp;nfs.mydomain.com:/ftp&nbsp;/mnt/nfs&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这个目录就被连接到/mnt/nfs下面了,以后可以象使用本地文件系统那样使用它。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;关于使用这个文件系统有一个问题,如同我们所知道那样,Linux用用户权限来处理文&nbsp;<BR>件访问的问题,那么,当某个目录被输出之后,对方如何设定对这个文件系统的操作权&nbsp;<BR>限呢?答案是通过uid,例如,/ftp的属主是ftp,属性是644,而在服务器上的ftp的ui&nbsp;<BR>d是14,于是客户机器将寻找uid为14的用户,并且将/ftp解释为由这个用户所有。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;显然,这可能引起混乱,为了避免出现困难,也许必须要求所有机器的用户uid一致。&nbsp;<BR>更严重的是root用户,如果你把一个目录以rw的形式输出,对方机器的root用户就可能&nbsp;<BR>完全破坏这个目录。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;解决的办法之一是-o&nbsp;选项的squash参数,它有几个选择,root_squash将使用正常的&nbsp;<BR>uid映射关系(我们刚才讲的),除了客户机器的root用户,root用户被映射成nobody用&nbsp;<BR>户,这样就避免了root操作导致系统破坏,这是缺省值。all_squash把客户机的所有用&nbsp;<BR>户都映射成nobody用户。squash_uids可以映射一组用户uid为nobody,例如squash_uid&nbsp;<BR>s=0-40,45,50-100等等。还有一个选项,no_root_squash将完全按照我们在上一段中讲&nbsp;<BR>的方式执行,包括root具有全部权限,这绝对应该避免的。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;例如,使用root_squash的rw方式输出可以使用类似这样的命令:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;exportfs&nbsp;–o&nbsp;root_squash,ro&nbsp;host.mydomain.com:/ftp&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-o的各个选项之间用逗号分开。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;输出文件系统的另外一种方式是使用/etc/exports文件,实际上,这是个描述文件,&nbsp;<BR>每一行给出一个输出目录,在rpc.nfsd启动的时候会自动去读这个文件,对每一行执行&nbsp;<BR>一个exportfs命令。另外,也可以使用exportfs&nbsp;-r&nbsp;命令自动输出其中的所有文件目录&nbsp;<BR>。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;/etc/exports文件每行的格式大概是这样:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;[目录]:[客户机器]([选项])&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;例如,刚才的命令用/etc/exports文件相当于这样的行:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;/ftp&nbsp;&nbsp;host.mydomian.com(rw,root_squash)&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;每次重新启动rpc.nfsd都会重新输出/etc/exports&nbsp;文件的内容,重起nfsd可以用这样&nbsp;<BR>的命令完成:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$killall&nbsp;-HUP&nbsp;/usr/sbin/rpc.mountd&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$killall&nbsp;-HUP&nbsp;/usr/sbin/rpc.nfsd&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;在Linux的NFS实现中,建议使用auto&nbsp;mount&nbsp;daemon(amd)程序来实现自动安装网络文&nbsp;<BR>件系统,但是根据我们的实验,这种做法的唯一优点是让系统管理员忙得不可开交,我&nbsp;<BR>们建议你简单地在setup中禁止amd系统服务,并且写一个启动脚本在启动时自动连接所&nbsp;<BR>有nfs目录。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;要检测nfs服务的工作,使用nfsstat程序。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;关于Linux的NFS我们要说明一点,由于某些原因,Linux的NFS&nbsp;server通常只能支持到N&nbsp;<BR>FS&nbsp;Ver&nbsp;2,而且还是一个测试中的功能,如果你重新编译了内核,记住如果一定要使用NFS&nbsp;<BR>,需要把核心的“使用测试中的功能”的选项打开。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;在用Linux作为NFS&nbsp;Server的时候有一个特殊问题,Sun&nbsp;Solaris支持NFS版本3,这个&nbsp;<BR>是个缺省值,当用Sun去mount&nbsp;Linux输出的目录时会出现Linux无法正确理解Sun的NFS版&nbsp;<BR>本的问题,解决的办法是在Linux启动rpc.mountd的时候明确声明不使用Version&nbsp;3:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;rpc.mountd&nbsp;–N&nbsp;3&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;5.1.2&nbsp;通过网络进行打印&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;网络打印并不是NFS的功能,它是由BSD打印程序提供的,如同我们以前说的那样,打&nbsp;<BR>印是通过/etc/printcap程序配置的。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;首先我们要配置一台允许其他机器通过它打印的服务器,实际上,这完全不需要更改&nbsp;<BR>/etc/printcap(如果你已经按照我们说的那样设置系统使你可以在本地打印)。相反,&nbsp;<BR>你只要设置允许哪一台机器打印到你的打印机上就行了,这可以通过/etc/hosts.lpd实&nbsp;<BR>现。例如,打印服务器的名字是openlab.asnc.edu.cn,其/etc/printcap文件是&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;net_lp:\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:sd=/var/spool/lpd/lp:\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:mx#0:\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:sh:\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -