3 Linux管理员手册--存贮介质( 九 )


细心的读者可能已经注意到一个小的逻辑问题 。第一个文件系统(叫根文件系统,因为它包含根目录)如何mount,因为很明显,它不能mount到另一个文件系统? Well, the answer is that it is done by magic. The root filesystem is magically mounted at boot time, and one can rely on it to always be mounted-- 如果根文件系统不能mount,系统将不能启动 。The name of the filesystem that is magically mounted as root 被编译进核心,或用LILO或rdev 设置 。
根文件系统通常先被只读mount 。然后启动手稿运行fsck 校验它的有效性,如果没有问题,将re-mount它,使之可写 。fsck 不能运行于一个已mount的文件系统,因为fsck 运行时,任何文件系统的改变将导致错误 。因为根文件系统在被检查时是只读,fsck 可以无虑地修复任何问题,因为re-mount 操作将刷新文件系统在内存中的所有数据 。
在有其他文件系统的许多系统中,启动时要自动mount,可以在/etc/fstab 文件中定义:文件格式细节请参考fstab 的手册页 。mount特别的文件系统的特别细节依赖于许多因素,可以根据需要由每个管理员设置 。When the chapter on booting is finished, you may read all about it there.
当一个文件系统不需要再mount着,可以用umount . umount 加一个参数unmount它,参数可以是设备文件或安装点 。例如,要unmount上面例子中的目录,可以用:
$ umount /dev/hda2
$ umount /usr
$
要了解使用这个命令的更多的说明,参阅手册 。注意:记住unmount已经mount的软盘,而不能仅仅将软盘弹出软驱!由于磁盘缓冲,在你unmount软盘之前无须回写,因此过早取出软盘将导致内容不正确 。只从软盘上读还不要紧,如果写,就可能发生灾难性的损失 。
mount和umount需要超级拥护特权,即只有root 用户可以做 。原因是:如果任何用户都可以mount软盘到任何目录,那么很容易用软盘做,比如,用特洛伊木马替换/bin/sh , 或者其他常用的程序 。但是允许用户使用软盘经常又是必要的,有几种方法:
给用户root 口令,很明显这对安全不利,但是最简单的方法 。如果没有安全要求,这个方法很好,比如在非网络的、个人系统上 。
使用一个程序比如sudo 允许拥护使用mount 。这同样对安全不利,但没有直接给任何人超级用户特权 。
让用户使用mtools , 这是一个利用MSDOS文件系统的软件包,无须mount 。如果是MSDOS软盘这样做很好,否则不好 。
在/etc/fstab 中用合适的选项列出软驱设备和允许的安装点 。
最后一个选择可以在/etc/fstab 文件中加类似下面的一行来完成:
/dev/fd0 /floppy msdos user,noauto 0 0
各列分别是:要mount的设备文件,要安装到的目录,文件系统类型,选项,备份频率(用于dump ) 和fsck 次序(定义启动时文件系统被检查的次序,0表示不检查) 。
noauto选项使系统启动是不自动mount(即, it stops mount -a from mounting it) 。user允许任何用户mount这个文件系统,并且,由于安全原因,不允许执行程序(normal or setuid) and interpretation of device files from the mounted filesystem 。这样,任何用户都可以用如下命令mount一个msdos文件系统的软盘:
$ mount /floppy
$
软盘可以用相关的umount 被unmount 。
如果想提供多种软盘的存取,需要给出多个安装点 。对每个安装点的设置可以不同 。例如,提供MSDOS和ext2文件系统的存取,可以在/etc/fstab 文件中加如下行:
/dev/fd0 /dosfloppy msdos user,noauto 0 0
/dev/fd0 /ext2floppy ext2 user,noauto 0 0
对于MSDOS文件系统(不仅是软盘),可能需要用uid, gid,和umask 文件系统选项来限制存取权限,请看mount 手册页 。如果不小心,mount一个MS-DOS文件系统将给予任何用户至少是读权限,这可不是一个好主意 。

推荐阅读