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

📄 1565.html

📁 著名的linux英雄站点的文档打包
💻 HTML
📖 第 1 页 / 共 5 页
字号:
  <br>
  出现类似下面的界面:<br>
  <br>
 <br>
  <br>
  将这个选单中的nfs,nfslock和portmap选中并且ok退出,系统脚本就被自动改变了。<br>
(ntsysv程序只是建立/etc/rc.d/rc3.d下的连接而已,你也可以手工作这个连接工作,<br>
注意我们以前讲的启动脚本)<br>
  <br>
  在启动了上面说的那些服务后,现在可以输出文件目录了。在Linux中有两种输出方式<br>
,一种使用exportfs命令,另一种是使用/etc/exports文件:<br>
  <br>
  exportfs命令的用法是<br>
  <br>
  /usr/sbin/exportfs –o [选项] [客户机器名]:[目录名]<br>
  <br>
  客户机器名是可以使用你输出的文件系统的机器的域名或者IP,例如,你想让你的机<br>
器上的/ftp目录能够被host.mydomain.com使用,可以使用命令<br>
  <br>
  /usr/sbin/exportfs host.mydomain.com:/ftp<br>
  <br>
  机器名字可以使用通配符,例如,*.mydomain.com表示一切mydomain.com域内的主机<br>
,而202.112.58.0/255.255.255.0表示从202.112.58.0到202.112.58.255。<br>
  <br>
  不带参数的exportfs命令将显示当前的输出文件系统。要取消某一个输出,使用-u参<br>
数,格式是exportfs –u [机器名]:[目录名],例如:<br>
  <br>
  exportfs –u host.mydomain.com:/ftp<br>
  <br>
  -o是一些选项,首先,在这里可以设置文件系统的输出方式,是只读(ro)还是可以读<br>
写(rw)。另外,还有几个选项,我们下面再解释。<br>
  <br>
  在输出了目录之后,就可以在客户机器上使用NFS了,NFS客户的用法非常简单,只要<br>
你的客户机内核编译时选定了NFS支持,那么,可以直接将输出的目录连接到客户机上:<br>
  <br>
  mount [服务器名]:[目录名] [连接点]<br>
  <br>
  例如,在上面的例子中,假设输出文件目录的机器名字是nfs.mydomain.com,在host<br>
.mydomain.com中可以使用<br>
  <br>
  mount nfs.mydomain.com:/ftp /mnt/nfs<br>
  <br>
  这个目录就被连接到/mnt/nfs下面了,以后可以象使用本地文件系统那样使用它。<br>
  <br>
  关于使用这个文件系统有一个问题,如同我们所知道那样,Linux用用户权限来处理文<br>
件访问的问题,那么,当某个目录被输出之后,对方如何设定对这个文件系统的操作权<br>
限呢?答案是通过uid,例如,/ftp的属主是ftp,属性是644,而在服务器上的ftp的ui<br>
d是14,于是客户机器将寻找uid为14的用户,并且将/ftp解释为由这个用户所有。<br>
  <br>
  显然,这可能引起混乱,为了避免出现困难,也许必须要求所有机器的用户uid一致。<br>
更严重的是root用户,如果你把一个目录以rw的形式输出,对方机器的root用户就可能<br>
完全破坏这个目录。<br>
  <br>
  解决的办法之一是-o 选项的squash参数,它有几个选择,root_squash将使用正常的<br>
uid映射关系(我们刚才讲的),除了客户机器的root用户,root用户被映射成nobody用<br>
户,这样就避免了root操作导致系统破坏,这是缺省值。all_squash把客户机的所有用<br>
户都映射成nobody用户。squash_uids可以映射一组用户uid为nobody,例如squash_uid<br>
s=0-40,45,50-100等等。还有一个选项,no_root_squash将完全按照我们在上一段中讲<br>
的方式执行,包括root具有全部权限,这绝对应该避免的。<br>
  <br>
  例如,使用root_squash的rw方式输出可以使用类似这样的命令:<br>
  <br>
  exportfs –o root_squash,ro host.mydomain.com:/ftp<br>
  <br>
  -o的各个选项之间用逗号分开。<br>
  <br>
  输出文件系统的另外一种方式是使用/etc/exports文件,实际上,这是个描述文件,<br>
每一行给出一个输出目录,在rpc.nfsd启动的时候会自动去读这个文件,对每一行执行<br>
一个exportfs命令。另外,也可以使用exportfs -r 命令自动输出其中的所有文件目录<br>
。<br>
  <br>
  /etc/exports文件每行的格式大概是这样:<br>
  <br>
  [目录]:[客户机器]([选项])<br>
  <br>
  例如,刚才的命令用/etc/exports文件相当于这样的行:<br>
  <br>
  /ftp  host.mydomian.com(rw,root_squash)<br>
  <br>
  每次重新启动rpc.nfsd都会重新输出/etc/exports 文件的内容,重起nfsd可以用这样<br>
的命令完成:<br>
  <br>
  $killall -HUP /usr/sbin/rpc.mountd<br>
  <br>
  $killall -HUP /usr/sbin/rpc.nfsd<br>
  <br>
  在Linux的NFS实现中,建议使用auto mount daemon(amd)程序来实现自动安装网络文<br>
件系统,但是根据我们的实验,这种做法的唯一优点是让系统管理员忙得不可开交,我<br>
们建议你简单地在setup中禁止amd系统服务,并且写一个启动脚本在启动时自动连接所<br>
有nfs目录。<br>
  <br>
  要检测nfs服务的工作,使用nfsstat程序。<br>
  <br>
  关于Linux的NFS我们要说明一点,由于某些原因,Linux的NFS server通常只能支持到N<br>
FS Ver 2,而且还是一个测试中的功能,如果你重新编译了内核,记住如果一定要使用NFS<br>
,需要把核心的“使用测试中的功能”的选项打开。<br>
  <br>
  在用Linux作为NFS Server的时候有一个特殊问题,Sun Solaris支持NFS版本3,这个<br>
是个缺省值,当用Sun去mount Linux输出的目录时会出现Linux无法正确理解Sun的NFS版<br>
本的问题,解决的办法是在Linux启动rpc.mountd的时候明确声明不使用Version 3:<br>
  <br>
  rpc.mountd –N 3<br>
  <br>
  5.1.2 通过网络进行打印<br>
  <br>
  网络打印并不是NFS的功能,它是由BSD打印程序提供的,如同我们以前说的那样,打<br>
印是通过/etc/printcap程序配置的。<br>
  <br>
  首先我们要配置一台允许其他机器通过它打印的服务器,实际上,这完全不需要更改<br>
/etc/printcap(如果你已经按照我们说的那样设置系统使你可以在本地打印)。相反,<br>
你只要设置允许哪一台机器打印到你的打印机上就行了,这可以通过/etc/hosts.lpd实<br>
现。例如,打印服务器的名字是openlab.asnc.edu.cn,其/etc/printcap文件是<br>
  <br>
  net_lp:<br>
  <br>
          :sd=/var/spool/lpd/lp:<br>
  <br>
          :mx#0:<br>
  <br>
          :sh:<br>
  <br>
          :af=/var/log/lpc:<br>
  <br>
          :lp=/dev/lp0:<br>
  <br>
  其中定义了某一台打印机的名字是net_lp,net_lp直接连接到openlab.asnc.edu.cn上<br>
,想允许myhost.asnc.edu.cn打印到net_lp,那么可以直接在/etc/hosts.lpd中写上:<br>
  <br>
  myhost.asnc.edu.cn<br>
  <br>
  然后重新启动lpd程序,就可以允许myhost上的用户打印了。<br>
  <br>
  必须注意的一个问题是,实际存在两个文件,都可以用来允许远程打印,一个是我们<br>
刚才说的/etc/hosts.lpd,另一个比较微妙,它是/etc/hosts.equiv。关于后者的详细<br>
情况,我们在研究远程X的时候讨论。<br>
  <br>
  为了使myhost能够自动将打印作业发向openlab,需要设置myhost上的/etc/printcap<br>
文件,主要是提供rp和rm变量,它们分别代表远程打印机和远程机器,例如,可以将my<br>
host的/etc/printcap设置成<br>
  <br>
  lp:<br>
  <br>
          :sd=/var/spool/lpd/lp:<br>
  <br>
          :mx#0:<br>
  <br>
          :sh:<br>
  <br>
          :lp=:<br>
  <br>
          :rm=openlab.asnc.edu.cn:rp=net_lp:<br>
  <br>
          :if=/var/spool/lpd/lp/filter:<br>
  <br>
  这里将本地打印机设置为空,远地服务器设置为openlab,远程打印机设置为openlab<br>
上的打印机名字,于是就可以使用openlab上的net_lp进行打印了。<br>
  <br>
  通常打印用lpr命令实现,在前面我们已经介绍了这个命令的用法。在打印服务器的情<br>
况下,经常会有大量的打印事务需要处理,为此,BSD打印系统使用一些命令进行打印队<br>
列的管理,主要的是lpq,lprm和lpc。<br>
  <br>
  lpq命令可以显示当前的打印队列:<br>
  <br>
  [root@mail /etc]# lpq<br>
  <br>
  Rank   Owner      Job  Files                                 Total Size<br>
  <br>
  1st    root       21   mail.rc                               112 bytes<br>
  <br>
  2nd    root       22   ftphosts                              104 bytes<br>
  <br>
  注意job一栏的数值,这个值是打印作业号,你可以用lprm命令将某个作业删除:<br>
  <br>
  [root@mail /etc]# lprm 21<br>
  <br>
  dfA021A7xsgvf dequeued<br>
  <br>
  cfA021linux.asnc.edu.cn dequeued<br>
  <br>
  lprm后面跟作业号,注意lprm命令非常奇怪,它正常完成是要输出信息的。<br>
  <br>
  可以使用lpc程序对打印队列进行更精细的管理,输入lpc之后会出现lpc&gt;,这是lpc的<br>
提示符,可以输入各种命令,用help命令可以获得帮助,quit命令退出。<br>
  <br>
  $lpc<br>
  <br>
  lpc&gt; help<br>
  <br>
  Commands may be abbreviated.  Commands are:<br>
<br>
  <br>
  abort   enable  disable help    restart status  topq    ?<br>
  <br>
  clean   exit    down    quit    start   stop    up<br>
  <br>
  lpc&gt;<br>
  <br>
  注意lpc是一个很恶心的程序,个人看来一般还是使用lpq和lprm,killall lpd的办法<br>
比较好,如果你一定要使用lpc,那就慢慢研究吧,:PP。<br>
  <br>
  5.2 Samba服务器<br>
  <br>
  实际上,NFS的用处并不多,一般,当我们要建立一个庞大的服务器集群来对付email<br>
或者www服务时,我们用NFS来实现目录的共享。在一般情况下,我们的客户机器总是wi<br>
ndows,这种情况下,可以用samba来实现集成。<br>
  <br>
  samba是一个免费的UNIX应用程序,用来使一台UNIX机器可以象Windows NT一样为win<br>
dows 9x机器提供文件和打印服务。不过,确实它还不能完全提供NT的功能,然而它非常<br>
小巧而高效。<br>
  <br>
  要使用samba,你必须安装跟samba相关的软件包,软件包通常包括几个,即samba、s<br>
amba-common和samba-client,后者用于从Linux访问windows 9x的共享文件。你可以到<br>
自己的发行版本里去查找对应的文件并且安装。当然,如果你按照我们的建议那样安装<br>
了所有的程序,那么就无需再手工安装了。<br>
  <br>
  5.2.1 在windows环境中集成Linux<br>
  <br>
  现在我们来解释如何将Samba做成一个可以被windows 9x访问的文件服务器。这是通过<br>
/usr/sbin/smbd守护进程实现的。smbd可以直接从命令行启动,但是在这之前必须先设<br>
置一些内容。<br>
  <br>
  smbd的控制文件是/etc/smb.conf,这个文件的内容很长,是一个文本文件,与普通的<br>
配置文件不同的是它使用分号为注释行,通常在/etc下已经有了一个smb.conf的例子,<br>
如果你不小心把它删除了,那么在/usr/doc/samba-2.0.3/examples下还有一个名叫smb<br>
.conf.default的例子(2.0.3是版本号)。<br>
  <br>
  现在我们自己来构做一个最简单的smb.conf,你可以先备份缺省的/etc/smb.conf,然<br>
后按照下面的例子构做一个/etc/smb.conf文件,也可以按照我们下面解释的那样对缺省<br>
的smb.conf进行编辑:<br>
  <br>
  下面是这个文件的内容:<br>
  <br>
  # cat smb.conf<br>
  <br>
  [global]<br>
  <br>
  workgroup=ASNC<br>
  <br>
  load printers = no<br>
  <br>
  encrypt passwords=no<br>
  <br>
  security=share<br>
  <br>
  [public]<br>
  <br>
  comment = public files<br>
  <br>
  public = yes<br>
  <br>
  path = /ftp<br>
  <br>
  browseable = yes<br>
  <br>
  writable = no<br>
  <br>
  然后你需要启动smbd和nmbd,后者用来在网络上广播机器的名字,首先察看/etc/ser<br>
vices文件,看看是否有类似这样的内容:<br>
  <br>
  netbios-ns137/tcp# NETBIOS Name Service<br>
  <br>
  netbios-ns137/udp<br>
  <br>
  netbios-dgm138/tcp# NETBIOS Datagram Service<br>
  <br>
  netbios-dgm138/udp<br>
  <br>
  netbios-ssn139/tcp         # NETBIOS session service<br>
  <br>
  netbios-ssn139/udp<br>
  <br>
  如果没有就加上去,然后,启动smbd和nmbd:<br>
  <br>
  smbd –D<br>
  <br>
  nmbd –D<br>
  <br>
  -D选项用于将这两个程序设置成daemon服务进程。<br>
  <br>
  现在,就可以从windows 9x客户机访问Linux的共享目录了,由于netbios广播机器名<br>
字需要一定的时间,可能不能马上在网络邻居看到,这时你可以用windows 9x的“查找<br>
计算机”功能查询一下Linux机器的IP,就可以找到了。例如:<br>
  <br>
 <br>
  <br>
  图5.1 查找到的samba机器<br>
  <br>
  以后的操作就象操作一台windows机器的共享目录一样。要注意的是,由于smbd程序按<br>
照客户连接的身份将请求提交给服务器,所以除了在[public]段落中设置的共享属性之<br>
外,要使得这个共享真正生效,还要把对应目录(/ftp)的属性设置成755,只有同时满<br>
足smb的共享权限和UNIX用户权限的目录和文件才能真正被网络邻居访问。<br>
  <br>
  下面我们来解释一下smb.conf中设置的这些内容,smb.conf文件被分成了若干段落,<br>
用方括号扩住的一行标志着一个段落的开始,段落有两种,一种是[global]段落,用来<br>
设置一些基本参数,另一种就是用来共享某个路径的段落,例如刚才的[public]。<br>
  <br>
  [global]段落中可以设置许多信息,详细的内容可以参考samba的文档,对我们来说,<br>
最重要的是这样一些设置:<br>
  <br>
  workgroup =<br>
  <br>
  这个选项用来设置你的windows系统的工作组名字或者NT域的名字。<br>
  <br>
  netbios name =<br>
  <br>
  设置在网上邻居里面看到的机器名,如果没有,将使用机器的DNS名字。<br>
  <br>
  security和身份验证<br>
  <br>
  security = <br>
  <br>
  这个选项设置身份验证机制,即如何对用户验证身份,目前版本支持四个选项,即sh<br>
are,user,server和domain选项。<br>

⌨️ 快捷键说明

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