background image

      rmto    流方式操作的磁带 
      swap    交换区 
      syscon  系统终端 
      ttynn   终端口 
      x25     网络端口 
      等等 

  (3)/etc/mknod 命令 
      用于建立设备文件.只有 root 能使用这个命令建立设备文件.其参数是文 
  件名,字母 c 或 b 分别代表字符特别文件或块特别文件,主设备号,次设备号.块 
  特别文件是像磁带,磁盘这样一些以块为单位存取数据的设备.字符特别文件 
  是如像终端,打印机,MODEM,或者其它任何与系统通讯时,一次传输一个字符的 
  设备,包括模仿对磁盘进行字符方式存取的磁盘驱动器.主设备号指定了系统 
  子程序(设备驱动程序),当在设备上执行 I/O 时,系统将调用这个驱动程序.调 
  用设备驱动程序时,次设备号将传递给该驱动程序(次设备规定具体的磁盘驱 
  动器,带驱动器,信号线编号,或磁盘分区).每种类型的设备一般都有自己的设 
  备驱动程序. 
      文件系统将主设备号和次设备号存放在 i 节点中的磁盘地址表内,所以没 
  有磁盘空间分配给设备文件(除 i 节点本身占用的磁盘区外).当程序试图在设 
  备文件上执行 I/O 操作时,系统识别出该文件是一个特别文件,并调用由主设备 
  号指定的设备驱动程序,次设备号作为调用设备驱动程序的参数. 

  (4)安全考虑 
      将设备处理成文件,使得 UNIX 程序独立于设备,即程序不必一定要了解正 
  使用的设备的任何特性,存取设备也不需要记录长度,块大小,传输速度,网络 
  协议等这样一些信息,所有烦人的细节由设备驱动程序去关心考虑,要存取设 
  备,程序只须打开设备文件,然后作为普通的 UNIX 文件来使用. 
      从安全的观点来看这样处理很好,因为任何设备上进行的 I/O 操作只经过 
  了少量的渠道(即设备文件).用户不能直接地存取设备.所以如果正确地设置 
  了磁盘分区的存取许可,用户就只能通过 UNIX 文件系统存取磁盘.文件系统有 
  内部安全机制(文件许可).不幸的是,如果磁盘分区设备得不正确,任何用户都 
  能够写一个程序读磁盘分区中的每个文件,作法很简单:读一 i 节点,然后以磁 
  盘地址表中块号出现的顺序,依次读这些块号指出的存有文件内容的块.故除 
  了 root 以外,决不要使盘分区对任何人可写.因为所有者,文件存取许可方式这 
  样一些信息存放于 i 节点中,任何人只要具有已安装分区的写许可,就能设置任 
  何文件的 SUID 许可,而不管文件的所有者是谁,也不必用 chmod()命令,还可避 
  过系统建立的安全检查. 
      以上所述对内存文件 mem,kmem 和对换文件 swap 也是一样的.这些文件含有 
  用户信息,一个"耐心"的程序可以将用户信息提取出来. 
      要避免磁盘分区(以及其它设备)可读可写,应当在建立设备文件前先用 
  umask 命令设置文件建立屏蔽值. 
      一般情况下,UNIX 系统上的终端口对任何人都是可写的,从而使用户可以 
  用 write 命令发送信息.虽然 write 命令易引起安全方面的问题,但大多数用户 
  觉得用 write 得到其他用户的信息很方便,所以系统将终端设备的存取许可设