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 得到其他用户的信息很方便,所以系统将终端设备的存取许可设