第八课 文件系统 (File System )
教学目的,
计算机系统中使用的大量程序和数据都以文件形
式存放在外存。操作系统中增加了文件管理功能即
构成文件系统,它负责管理在外存上的文件,并把
对文件的存取共享和保护等手段提供给操作系统和
用户,这不仅方便了用户,保证了文件的安全性,
还或的效地提高系统资源的利用率。
教学要求:
?掌握 文件和文件系统的定义,了解文件系统的类
型,文件系统模型 。
?掌握文件的逻辑结构,熟悉五种 记录文件。
?掌握文件控制块和多级目录结构,掌握 UNIX树型
带勾连的目录结构 可装卸文件系统,和 熟悉 操作
系统 ( Windows98/NT, Linux )对多种文件系
统的支持,了解 Windows98 VFAT目录结构。 熟
悉 目录查询技术,掌握内存的目录管理表,掌握
文件操作与目录管理关系。
?掌握基于索引节点的共享方式和利用符号连接的
文件 共享。
?掌握 文件的存取控制,熟悉 分级安全管理,了解
文件的转储和恢复,了解 WindowsNT安全性 。
(一) 文件系统 概述
( 1) 文件和文件系统
1。 文件:
计算机系统对系统中软件资源:无论是程序或数据、系统软
件或应用软件都以文件方式来管理。文件是存贮在某种介质
上的(如磁盘、磁带等)并具有文件名的一组有序信息的集
合。文件名是由字符和数字组成的,例如 MS-DOS中文件名由
三部分组成,格 式 如下,[<盘符 >] <文件名 > [.扩展名 ]。
格式 [ ] 中是可以省略,盘符为存放 文 件的磁盘驱动器号,
如用 A:和 C:分别 表示软盘和硬盘驱动器;文件名由 1∽8 个字
符组成。扩展名为由,,” 开始的 1-3个字符组成,如,EXE表
示可执行的浮动代码文件,.TXT表示 ASCⅡ 码文本文件,.LIB
表示库文件,.BAT表示批处理文件等。
2.与文件相关的概念
?数据项( field)
数据项是描述一个对象的某些属性的字符集,它是数据的基
本单位,一个数据项有一个值。
?记录( record)
记录是一组相关数据项的集合,用于描述一个对象某方面的
属性
?文件( file)
文件是具有文件名的一组相关记录的集合
?数据库( database)
数据库是相关数据的集合。
3。 文件系统:
文件系统是操作系统中以文件方式管理计算机软件资源的
软件和被管理的文件和数据结构(如目录和索引表等)
的集合。从系统角度来看,文件系统是对文件存储器的
存储空间进行组织、分配和回收,负责文件的存储、检
索、共享和保护。从用户角度来看,文件系统主要是实
现, 按名存取,,文件系统的用户只要知道所需文件的
文件名,就可存取文件中的信息,而无需知道这些文件
究竟存放在什么地方。
UNIX 文件系统将文件分成四类:普通文件、目录文件、
设备文件(特殊文件)和符号连接文件 (Symbolic link),
UNIX把所有 I/O设备作为特殊文件,对 I/O设备操作模仿
为对普通文件的存取,这样将文件与设备的 I/O尽可能统
一起来。 UNIX用 $ls –l 长列表显示时第一个字符表示
文件类型:, -” 表示普通文件,,d”表示目录文件,
,l”表示符号连接文件,c,b,p分别表示字符设备、块
设备和 FIFO管道的特殊文件。
(练习 )
(2)文件系统的类型
?FAT文件系统( MS-DOS文件系统,msdos)
它是 MS-DOS操作系统使用的文件系统,它也能由
Windows98/NT,linux,SCO UNIX等操作系统访问。文件地
址以 FAT表结构存放,文件目录 32B,文件名为 8个基本名加
上一个,,” 和 3个字符扩展名。
?扩展文件表系统( vfat)
它是 Windows98使用的扩展的 DOS文件系统,它在 MS-DOS文件
系统基础上增加了对长文件名(最多到 256B) 支持。
?NTFS( NT文件系统)
它是 Windows NT操作系统使用的文件系统,它具有很强的安
全特性和文件系统恢复功能,可以处理巨大的存储媒体,支
持多种文件系统。
?S51K/S52K( sysv)
它是 AT&T UNIX S V 操作系统使用的 1KB/2KB文件系统。
文件系统的类型 -1
?ext2( 二级扩展文件系统)
它是 Linux操作系统使用的高性能磁盘文件系统,它是对
Minux操作系统中使用的文件系统扩展( ext) 的扩展。它支
持 256字符的文件名,最大可支持到 4TB的文件系统大小。
?HPFS( 高性能文件系统,hpfs)
它是 OS/2操作系统使用的文件系统。
?CD-ROM文件系统 (iso9660)
它是符合 ISO9660标准的支持 CD-ROM的文件系统,它有 High
sierra CD-ROM和 Rock Ridge CD-ROM二种类型。
?UDF通用磁盘格式文件系统
UDF(Universal Disk Format)文件系统是依据光学储存技术
协会( Optical Storage Technology Association,OSTA)
的通用磁盘格式文件系统规格 1.02版所制定的。它提供了对
UDF格式媒体的只读访问(例如 DVD光盘)。 Windows98提供对
UDF文件系统支持。
(3)文件系统模型
文件系统接口
逻辑文件系统
基本 I / O 管理 程序 (文件组织模块)
基本 文件系统 (物理 I/ O 层 )
对对象操纵
和管理的 软
件 集合
I/ O 控制层 ( 设备驱动程序 )
对象及其属性说明
File System Software Architecture
Logical I/O
Pile Sequential IndexedSequential Indexed Hashed
Basic I/O Supervisor
Basic (Physical) File System
Disk Device Driver Tape Device Driver
User Program
Logical I/O
File Organization File Logical Structure
(4)文件管理的目的
?方便 的文件访问和控制:以符号名称作为文件标识,
便于用户使用;
?并发 文件访问和控制:在多道程系统中支持对文件
的并发访问和控制;
?统一 的用户接口:在不同设备上提供同样的接口,
方便用户操作和编程;
?多种文件访问 权限,在多用户系统中的不同用户对
同一文件会有不同的访问权限;
?优化性能,存储效率、检索性能、读写性能;
?差错恢复,能够验证文件的正确性,并具有一定的
差错恢复能力;
返回
(二) 文件的 逻辑结构
?文件的逻辑结构:从用户观点出发观察到的文件组织结构称
为文件的逻辑结构,逻辑结构的文件称逻辑文件。
?逻辑文件从结构上分成二种形式,一种是无结构的流式文件,
另一种是有结构的记录式文件。流式文件是指对文件内信息
不再划分单位,它是依次的一串字符流构成的文件。记录式
文件是用户把文件内的信息按逻辑上独立的含义划分信息单
位,每个单位称为一个逻辑记录(简称记录)。所有记录通
常都是描述一个实体集的,有着相同或不同数目的数据项,
记录的长度可分为定长和不定长记录两类。
?记录文件有顺序、索引、索引顺序、直接、分区和堆文件几
种。
文件的 逻辑结构 -1
?1,顺序文件 (Sequential File):顺序文件的记录定长,记
录中的数据项的类型长度与次序固定,一般还有一个可以唯
一标识记录的数据项,称为键( key),记录按键值的约定次
序组织。顺序文件常用于批处理应用,对于查询或更新某个
记录的请求的处理性能不佳。
?2,索引文件 (Indexed File):索引文件对主文件中的记录
按需要的数据项(一个或几个)建索引表。这时记录可为不
定长的,它为每个记录设置一个表项。索引文件本身是顺序
文件组织。
?3,索引顺序文件 (Indexed Sequential File):索引顺序文
件是基于键的约定次序组织的,为之建立一张索引表,为每
个不同键值的记录组的第一个记录设置一个表项,为该组的
其它记录设置了溢出区域,在溢出区域内记录按顺序文件方
式组织。它是顺序文件和索引文件的结合。索引顺序文件既
适用于交互方式应用,也适用于批处理方式应用。
文件的 逻辑结构 -2
?4.直接文件 /哈希文件 (The Direct/Hashed File):它可以
对记录在直接访问存储设备上的物理地址直接(随机)访问。
直接文件常用于需要高速访问文件而且每次访问一条记录的
应用中。
?5.分区文件:分区文件由两部分组成,一部分是顺序子文件
区,另一部分是对这些子文件索引的索引区。分区文件常用
于储函数库、软件包等。
?6.堆 (The Pile)文件 (累积文件 ):堆文件是最简单的记录文
件,它是串结构的顺序文件。数据按先来后到的次序组织,
每个记录所包含的数据项是自我标识的,数据项的长度可以
明确指定或使用界定符区分。在堆文件中访问所需要的记录
需穷尽搜索,这种文件组织不适合大多数应用。
(三)文件的目录和管理
( 1)文件控制块 FCB
为了实现, 按名存取,,系统必须为每个文件设置用于描
述和控制文件的数据结构,它至少要包括文件名和存放文件
的盘物理地址,这个数据结构称为文件控制块 FCB,文件控制
块的有序集合称为文件目录,即一个文件控制块 FCB就是一个
文件目录项。文件控制块 FCB中包含的信息有以下三类:
?1。基本信息类
,文件名:标识一个文件的符号名,在每个系统中文件必须具
有唯一的名字。
,文件的物理地址:这由于文件的物理结构不同 而 不同。对于
连续文件就是文件的起始块号和文件总块数;对于 MS- DOS是
文件的起始簇号和文件总字节数;对于 UNIX S V是文件所在
设备的设备号,13个地址项、文件长度和文件块数等。
文件控制块 FCB
?2.存取控制信息类
文件的存取权限,象 UNIX用户分成文件主、同组用户和一
般用户三类,这三类用户的读写执行( RWX) 的权限。
?3.使用信息类
文件建立日期、最后一次修改日期、最后一次访问的日期;
当前使用的信息:打开文件的进程数,在文件上的等待队列
等。
文件控制块的信息因 OS而不同,SCO UNIX文件系统 ls文件 长
列表显示 $ls –l 的 FCB信息如下:
-r-xr-xr-t 1 bin bin 43296 May 13 1997
/opt/K/SCO/Unix/5.0.4Eb/bin/ls
显示的各项信息为文件类型和存取权限、连接数、文件主、
组名、文件长度、最后一次修改日期、文件名。
( 2)目录结构--多级目录
目录结构的组织关系到文件系统的存取速度,关系到文件共
享性和安全性,因此组织好文件的目录是设计文件系统的重
要环节。
1。单级目录结构
最简单的目录结构是在整个文件系统中只建立一张目录表,
每个文件占一个表目,这称为单级目录。单级目录结构简单,
能实现目录管理的基本功能 --按名存取,但存在查找速度慢,
不允许重名和不便于实现文件共享等缺点,因此它只适用于
单用户环境。
目录结构--多级目录 -1
2。多级目录结构
? 为了解决以上问题,在多道程序设计系统中常采用多级目
录结构,MS- DOS和 UNIX等操作系统都采用多级目录结构。
这种目录结构象一棵倒置的有根树,该树根向下,每一个节
点是一个目录,最末一个结点是文件,下图为 UNIX树形多级
目录结构。在多级目录中要访问一个文件时,必须指出文件
所在的路径名,路径名从根目录开始到该文件的通路上所有
各级目录名拼起来得到,各目录名之间与文件名之间可用分
隔符隔开。在 MS-DOS中分隔符为, \”,在 UNIX中分隔符为
,/” 。例如下图中访问命令文件 man的路径名为
/usr/lib/man,这也称为文件全名。
?重名问题:在多级目录中存取一个文件需要用文件全名,这
就允许用户在自己的目录中使用与其它用户文件相同的文件
名,由于各用户使用不同的目录,虽二者使用了相同的文件
名,但它们的文件全名仍不相同,这就解决了重名问题。
Tree-Structured Directories
目录结构--多级目录 -2
bin usr mnt etc tmp devboo
t
uni
x
ls who
hd
l
moun
t
Tmp00l
tty0lspoolinclude sys bin lib
dc
h io conf
dir.h libio.
h
Tab.c
ma
n
a.out.h
目录结构--多级目录 -3
?采用多级目录结构也提高了检索目录的速度:如采用单级目录则
查找一个文件最多需查遍系统所有文件名,平均也要查一半文件
名。而多级目录查找一个文件最多只要查遍文件路径上各目录的
子目录和文件,例如上图中要查找文件 man,只要查遍 root目录、
usr目录和 lib目录所在子目录和文件就可以。
?相对路径:每访问一个文件都要使用从根目录开始搜索直到树叶
的数据文件为止,包含各中间子目录的全路径名是相当麻烦的,
同时由于一个进程运行时访问的文件大多局限在某个范围,基于
这一点,可为每个用户(或每个进程)设置一个, 当前目录,,
又称, 工作目录, 。进程对各文件的访问都相对于, 工作目录,
而设置路径,这称为 相对路径名,相应地,从根目录开始的路径
名称为 绝对路径名 (absolute path name)。 用相对路径可缩短搜
索路径,提高搜索速度。例:文件 mbox的绝对路径名为
/usr/ast/mbox,如设置一个, 当前目录, 为 /usr,则文件 mbox
的相对路径名为 ast/mbox。
(练习 )
( 3) UNIX树型带勾连的目录结构
? UNIX为了加快目录的寻找速度,UNIX将文件控制块 FCB中
文件名和文件说明分开。文件说明为索引节点,各文件索引
节点集中存放在索引节点区,索引节点按索引节点号排序。
而文件名与索引节点号构成目录,UNIX S V 操作系统的文
件名 14个字节,索引节点 2个字节,共 16个字节构成目录项。
同一级目录构成目录文件,在文件区存放。
Linux目录文件中的目录项会变长,以保证系统支持文件
名长度可变,最长达 255个字符。目录项的前三项是定长的,
包含以下信息,(1)索引节点号 (4B); (2)目录项长度 (2B);
(3)文件名长度 (2B)。 目录项最后是文件名,目录项不能跨
越二个块 。
UNIX树型带勾连的目录结构 -1
? 每个文件有一个存放在磁盘索引节点区的索引节点,称为
磁盘索引节点,它包括以下内容,(1)文件主标识符和同组用
户标识符; (2)文件类型,是普通文件、目录文件、符号连接
文件或特别文件(又分块设备文件或字符设备文件); (3)文
件主,同组用户和其它人对文件存取权限(读 R,写 W,执行
X);(4) 文件的物理地址,用于 5.2.4 UNIX直接、间接混
合寻址的 13个地址项 di_addr[13];( 5) 文件长度(字节数)
di_size;( 6) 文件链接数 di_nlink;( 7) 文件最近存取和
修改时间等。
UNIX采用文件名和文件说明分离的目录结构如下图所示:
UNIX磁盘文件卷结构
?超级块, 用于 存放文件 卷的资源管理 信息,包括整个
文件 卷的盘 块数、磁盘索引结点的 盘 块数、磁盘空闲
盘 块号栈和空闲 盘 块号栈指针、空闲 盘 块号栈锁、空
闲索引结点栈和空闲索引结点栈指针、空闲索引结点
栈锁等。
?i节点 ( inode list),存放文件说明信息,每项 64字节
?目录文件,每个目录项 16字节。文件名区分大小写。
i n o d e
T a b l e
Da t a
( F i l e & Di r e c t o r y )
Bo o t
Re c o r d
V o l um e S t r uc t ur e i n U NI X
Se c t o r # 0 1
Super
Bl o c k
Disk layout in classical UNIX systems
UNIX树型带勾连的目录结构 -2
根目录索引节点
根 目录文件
索引节点 索引节点
索引节点
目录文件 目录文件
返 8ls
I=1
bin dev unix usr mnt etc tmp dey
4 7 6 9 8 7
I=4 I=6
ls
10
dir disk ast erik jim bal
10 19 26 30 51 45
I=10
I=26
Books mbox ……
92 60 …..
I=60
mbox
(4) 文件系统 安装 -- UNIX可装卸文件系统
?文件存储器硬盘各盘区和软盘都有一个象倒置的树一样的多
级目录的文件系统,MS-DOS系统用, 盘符, 来识别它们,而
UNIX系统,只有一个安装 UNIX操作系统的根设备的文件系统
常驻系统,而硬盘其它盘区和软盘上的文件系统直至被安装
前,UNIX系统不知道它存在。系统要使用其它的文件系统,
必须先用 mount命令将其安装到系统。被安装的倒树形目录
结构的根被安装到根设备树形目录的某一节点上,通常这个
节点所对应的文件是专为安装新文件系统而创建的空文件,
如 UNIX根目录下的 mnt子目录节点,与根设备的文件系统的
树形目录结构融为一体,构成一个倒置树的多级目录结构。
?新文件系统通过安装表与根设备文件系统某节点联系起来,
在安装时也将新文件系统盘的管理块( superblock) 信息拷
贝到系统缓冲区。新文件系统必须在安装后才能进行读写,
而使用完毕后必须使用 umount拆卸文件系统命令拆卸安装上
去的文件系统,在拆卸时系统将内存系统缓冲中目录管理信
息拷贝到将拆卸文件系统的盘中,以保证盘中信息的完整性。
The UNIX File System (3)
?Separate file systems
?After mounting
(a) (b)
(a) Before mounting,(b) After mounting
(a) Existing,(b) Unmounted Partition
Mount Point
文件系统 安装 -- UNIX可装卸文件系统 -1
安装表结构:
struct mount
{int m_flags ;
dev_t m_dev ;
struct inode *m_inodp ;
struct buf *m_bufp ;
struct inode *m_mount ;
}
安装表作用图见下:
0# 1#superblcck I=1
i-inade
Filsys
子文件卷
inade
I=1
2 3 4
5 6
m-indp
m-bufp
m-mount
根设备
内存
软盘
安装表 缓冲池的缓冲区
文件系统 安装 -- UNIX可装卸文件系统 -2
?在 UNIX系统 (linux)上读写软盘上信息操作如下:
?插入软盘。
?使用安装命令安装软盘文件系统,
格式,#mount –t type device mount-point
例,#mount –t msdos /dev/fd0 /mnt
?在 /mnt目录下读写 MS-DOS格式软盘上文件。
?使用拆卸的命令卸下软盘文件系统,格式,#umount device
例,#umount /dev/fd0
or #umount /mnt
?取出软盘。
在 UNIX系统中一般将硬盘划分为几个区,即为几个文件系统,
把系统文件和用户程序分开,以保护数据正确和便于维护。
系统启动时,在安装根文件系统后,会根据 /etc/fstab逐个
安装各区文件系统,在关机前,会逐个拆卸各区文件系统,
最常用的其它文件系统为 /u,用于存储用户程序。 (练习 5)
(5)操作系统 (Windows98/NT, Linux )
对多种文件系统的支持
?WindowsNT多重文件系统
WindowsNT支持 FAT文件系统,NTFS,HPFS,CD-ROM文件系
统等多种文件系统。 Windows NT执行体内 I/O系统分成 I/O
管理程序、文件系统驱动程序和盘驱动程序三层,不同的文
件系统采用不同的文件系统驱动程序,系统用动态连接库对
这些文件系统进行装入和卸出并适宜于将来的扩展,
WindowsNT分层驱动 程序如下图所示。
WindowsNT磁盘管理器窗口显示某台微机硬盘各分区安装的
多种文件系统如下图所示,图中所示硬盘有二个分区,C盘
是 FAT文件系统,D盘是 NTFS文件系统,E盘是 CD-ROM文件系
统。
WindowsNT多重文件系统 -1
WindowsNT分层驱动 程序
I/O管理 程序
FAT
驱动 程序
NTFS
驱动 程序
HPFS
驱动 程序
软盘
驱动 程序
硬盘
驱动 程序
WindowsNT多重文件系统 -2
操作系统对多种文件系统的支持
?Linux 虚拟文件系统 VFS
Linux采用虚拟文件系统 VFS支持许多不同类型的文件系统,
VFS是物理系统与服务之间的一个接口层,它屏蔽各类文件系
统的差异,给用户和程序提供一个统一的接口。 Linux支持
ext,ext2,msdos,vfat,iso9660,hpfs等多种文件系统。
使用命令 mkfs创建 各类文件系统 。
?VFS是物理文件系统与服务之间的一个接口,它对 Linux的每
一个文件系统的所有细节进行抽象,使得不同的文件系统在
Linux内核以及系统中运行的其它进程看来都是相同的,严格
说来 VFS并不上一种实际的文件系统,它只存在于内存中,不
存在于任何外存空间,VFS在系统启动时建立,在系统关闭时
消亡。
?VSF使 Linux同时安装支持不同类型的文件系统成为可能。
Linux 虚拟文件系统 VFS-1
VFS拥有关于各种特殊文件系统的公共接口,如超级块
incde,文件操作函数入口等。特残文件系统的细节问题统一
由 VFS的公共接口来翻译,它们对系统内核和用户进程是透明
的,VFS与实际文件系统的封装关系如下:
ext2 FSMINIX FS ext FS MSDOS FS
Buffer Cache
I/O设备驱动
VFS
vfsmntlist
*mnt_next
*mnt_sb
*mnt_next
*mnt_next
vfsmnttail
vfsmount
file_systems
File_system_type
*next
*next
*next=0
first_inode
i_next
i_prov
i_next
i_sb
union {
msdos_i
}u i_prov
i_next
i_prov
i_next
i_prov
VFS
inode
struct msdos_inode_info
VFS
Super-block[]
*s-type
union {……
msdos_mb
}u
*s-covered
*s-mounted
Super-block[i]
struct msdos_sb_info
文件系统类型的注册和注销
文件系统类型的 数据结构,
static struct file_system_type *file_systems=(struct
file_system_type *) NULL;
struct file_system_type {
struct super_block *(*read_super) (struct super_block *,void
*,int); /* read_super所指的函数用于读出该文件系统在外
存的 super_block */
const char name; / 文件系统的类型名, 如 ext2 */
int requires_dev; /* 支持文件系统的设备, proc文件系统不
需要任何设备 */
struct file_system_type * next; /* 指向下一个节点 */
};
文件系统类型的注册和注销 函数,
int register_filesystem(struct file_system_type * fs);
int unregister_filesystem(struct file_system_type * fs);
文件系统的注册和注销
static struct vfsmount *vfsmntlist = (struct vfsmount ) NULL; / 头 */
static struct vfsmount *vfsmnttail = (struct vfsmount ) NULL; / 尾 */
static struct vfsmount *mru_vfsmnt = (struct vfsmount ) NULL; / 当前 */
struct vfsmount{
kdev_t mnt_dev; /* Device this applies to */
char *mnt_devname; /* 设备名, 如 /dev/had1 */
char *mnt_dirname; /* 安装目录名称 */
unsigned int mnt_flags; /* 设备标志, 如 ro */
struct semaphore mnt_sem; /* 设备 I/O操作时的信号量 */
struct super_block *mnt_sb; /* 指向超级块 */
struct file *mnt_quotas[MAXQUOTAS];/*指向配额文件的指针 */
time_t mnt_iexp[MAXQUOTAS]; /* expiretime for inodes */
time_t mnt_bexp[MAXQUOTAS]; /* expiretime for blocks */
struct vfsmount *mnt_next; /* pointer to next in linkedlist */ };
VFS 超级块
VFS描述系统文件使用 superblock和 inode的方式 。 在系统初起
时, 所有被初始化的文件系统 ( file_system_type) 都要向
VFS(file_systems)登记 。 每种文件系统类型的读超级块子例
程 (read_super)必须识别该文件系统的结构并且将其信息映
射到一个 VFS的超级块数据结构上 。
struct super_block {
kdev_t s_dev; /* 包含该文件系统的块设备号, 如 0x0301代
表设备 /dev/hda1 */
unsigned long s_blocksize; /* 文件系统的块大小, 以字节为
单位 */
unsigned char s_blocksize_bits; /* 以 2的次幂表示块的大小 */
unsigned char s_lock;
unsigned char s_rd_only;
unsigned char s_dirt; /* 已修改标志 */
struct file_system_type *s_type;
/* 指向对应的 file_system_type结构 */
VFS 超级块 -1
struct super_operations *s_op;
/* 指向一组操作该文件系统的函数 */
struct dquot_operations *dq_op;
unsigned long s_flags;
unsigned long s_magic;
unsigned long s_time;
struct inode *s_covered; /* 指向安装点目录项的 inode节点,
*/
struct inode *s_mounted; /* 指向被安装文件系统的第一个
inode节点 */
struct wait_queue * s_wait; /* 在该超级块上的等待队列 */
union { …… /* 各类文件系统的特定信息 */
struct ext2_sb_info ext2_sb; /* ext2文件系统的超级块 */
struct msdos_sb_info msdos_sb; }u;
};
VFS inode
文件系统由子目录和文件构成 。 每个子目录或文件只能由唯一
的 inode描述 。 inode 是 LINUX管理文件系统的最基本单位,
也是文件系统连接任何子目录, 任何文件的桥梁 。
struct inode {
kdev_t i_dev; /*文件所在的设备号, 第一个 IDE硬盘为
0x0301 */
unsigned long i_ino; /* 外存 inode的节点号, */
/* (i_dev,i_ino)在 VFS中是唯一的 */
umode_t i_mode; /* 表示文件类型以及存取权限 */
nlink_t i_nlink; /* 连接到该文件的 link数 */
uid_t i_uid; /* 用户标识号 */
gid_t i_gid; /* 用户组标识号 */
kdev_t i_rdev; /* 根设备的设备号 */
off_t i_size; /* 文件长度 */
time_t i_atime; /* 文件访问时间 */
time_t i_mtime; /* 文件修改时间 */
VFS inode -1
time_t i_ctime; /* 文件创建时间 */
unsigned long i_blksize;/*以字节为单位的块大小, 一般为 1024B */
unsigned long i_blocks; /*文件块数 */
unsigned long i_version;
unsigned long i_nrpages;/* 文件在内存中所占页数 */
struct semaphore i_sem; /* 信号量 */
struct inode_operations*i_op;/*指向一组针对该文件的操作函数 */
struct super_block *i_sb; /* 指向内存中 VFS的超级块 */
struct wait_queue *i_wait; /* 在该文件上的等待队列 */
struct file_lock *i_flock;
struct vm_area_struct *i_mmap;
struct page *i_pages; /* 由文件占用页面构成的单向链, */
/* 通过它可访问内存中的文件数据 */
struct dquot *i_dquot[MAXQUOTAS];
struct inode *i_next,*i_prev;/*inode资源管理中使用的链表指针 */
struct inode *i_hash_next,*i_hash_prev; /* inode cache的链表指针 */
VFS inode -2
struct inode *i_bound_to,*i_bound_by;
struct inode *i_mount;/*指向下挂文件系统的 inode的根目录 */
unsigned long i_count; /* 引用记数, 0表示是空闲 inode */
unsigned short i_flags;
unsigned short i_writecount;
unsigned char i_lock; /* 对 inode加锁标志 */
unsigned char i_dirt;
unsigned char i_pipe;
unsigned char i_sock;
unsigned char i_seek;
unsigned char i_update;
unsigned char i_condemned;
union { …… /* 各类文件系统 inode的特定信息 */
struct ext2_inode_info ext2_i ;
struct msdos_inode_info msdos_i ; }u;
};
(6) Windows98 VFAT目录结构
Windows98长文件名的目录项由几个 MS- DOS的 32B目录组
成。它用一个表项存放短文件名和这个文件或子目录的其它
信息(包括 MS- DOS FCB原有的簇号、文件大小,最后修改
时间和最后修改日期,还有 Windows98增加的创建时间、创建
日期和最后存取日期),短文件名的属性是 0× 20。另外用连
续若干个表项存放长文件名,每个表项存放 13个字符(使用
Unicode编码,不论西文和汉字,每个字符一律占用 2个字节。
对西文第一个字节存 ASCII码,第二个字节存 0× 00。)长文
件名的表项首字节的二进制数低 5位值,分别为 00001B,
00010B, 00011B, ……, 表示它们的次序,左起第 2位
为 1(也就是在低 5位基础上加 40H) 表示该表项是最后一项。
最后项存放 13个字符位置多余时,先用 2个字节 0表示结束,
再用 FFH填充。长文件名的属性是 OFH。 长文件名项的第 13、
27,28字节为 0× 00,第 14字节为短文件名检验和。长文件名
The quick brown.fox( 短文件名为 THEQUI~1.FOX) 目录项格
式如下:
Windows98 VFAT目录结构 -1
42 w
77 00
n
6E 00 2E 00
f
66 00
o
6F 00
属性
0F 00
检验和
07
X
78 00
00 00 FF FF FF FF FF FF FF FF
00 00
FF FF FF FF
01 T
54 00
h
68 00
e
65 00
20 00
q
71 00
属性
0F
00 检验和
07
U
75 00
i
69 00
c
63 00
k
6B 00 00
b
62 00
00 00 r
72 00
O
6F 00
短 文 件 名
T H E Q U I ~ 1
扩展名
F O X
属性
20
NT Sec 创建
时间
创建
日期
最后存
取日期
第一簇
高 16 位
最后修
改时间
最后修
改日期
第一簇号
低 16 位
文 件 大 小
Windows98 VFAT目录结构 -2
 用 Debug工具查根目录区找出其目录项显示如下:
2171:29A0 42 77 00 6E 00 2E 00 66-00 6F 00 0F 00 07 78 00
Bw.n...f.o....x.
2171:29B0 00 00 FF FF FF FF FF FF-FF FF 00 00 FF FF FF
FF,...............
2171:29C0 01 54 00 68 00 65 00 20-00 71 00 0F 00 07 75
00,T.h.e.,q....u.
2171:29D0 69 00 63 00 6B 00 20 00-62 00 00 00 72 00 6F 00
i.c.k.,b...r.o.
2171:29E0 54 48 45 51 55 49 7E 31-46 4F 58 20 00 3C C1 7B
THEQUI~1FOX,<.{
2171:29F0 6E 26 7B 27 00 00 23 51-63 26 F4 09 00 6A 02 00
n&{'..#Qc&...j..
( 7) 目录管理
1,目录查询技术
? 为了实现用户对文件的按名存取,系统必须首先利用用户
提供的文件名,对文件目录进行查询,找出该文件的文件控
制块 FCB,对 UNIX系统即要找出该文件的索引节点。然后根据
找到的 FCB中所记录的文件物理地址,(对 UNIX系统即是索引
节点中的用于 UNIX直接、间接混合寻址的 13个地址项 di-
addr[13]),并根据文件物理组织方式找出文件的盘块号,
进而换算出文件在磁盘上的物理位置(柱面号、磁头号、扇
区号),最后启动磁盘驱动程序,将所需文件读入内存。
? 对目录查询的技术有两种:线性检索法和 Hash法。这里
介绍 UNIX中使用的线性检索法,又称为顺序检索法。
目录查询技术
?下面以在上图所示 UNIX树型目录中查找文件 /bin/ls为例介
绍线性检索法。
首先系统读入根索引节点(其索引节点号为 1),从文件
地址项查找根目录文件所在物理块号读入内存。同时从用户
提供的文件名中读入根目录下第一个文件分量 bin,用它与
根目录文件中各个目录项的文件名顺序地进行比较,从中找
到匹配号,得到匹配项的索引节点号为 2。
然后将磁盘第 2个索引节点读入内存,从中找出 bin目录文
件所在物理块号,并将它读入内存。同时从用户提供的文件
名中读入第二个文件分量 ls,用它与 bin目录文件中目录项
的文件名顺序地进行比较,从中找出匹配号,得到匹配项的
索引号为 10。尔后,将磁盘第 10号节点读入内存,从中判断
ls文件所在的物理块号。目录查询操作到此结束,如果顺序
查找过程中发现一个文件分量名未能找到,则仃止查找并送
回, 文件未找到, 信息。 (练习 4)
目录查询技术
The steps in looking up /usr/ast/mbox
目录管理
2。内存的目录管理表
? 目录查询必须通过在磁盘上反复搜索来完成,这
要化费不少次的盘块 I/O,这样大大浪费了 CPU处理
时间,降低了处理速度。为了减轻盘 I/O负担,采用
把当前使用的文件目录表目复制到内存,这样只要
第一次使用某个目录表目时需要盘 I/O来完成读入内
存,以后使用该目录表目只要在内存中进行,不需
再进行盘块 I/O,提高了处理速度,由于只把正在使
用的目录复制到内存而不是全部目录读入内存,所
以内存目录所占容量也不大。
内存的目录管理表
?UNIX磁盘上的目录分成索引节点和目录文件,在内存中建立
活动索引节点表(或称内存索引节点表)和系统打开文件表,
分别保存已打开文件的索引节点和文件名内容,同时在每个
进程控制块的 User区中设置一张用户文件描述表(又称用户
进程打开文件表),每个打开文件在相应的用户文件描述表
目中存储一个指向在系统打开文件表中相应表目位置偏移的
指针 fp。 系统打开文件表用来存放已打开文件信息,包括活
动索引节点表指针 f_inode,文件读写标志 f_flag,文件读写
指针* f_offset[2]和访问计数 f_count等。在系统打开文件
表该表目中有一项参数 f_inode指向内存索引节点表的相应表
目,内存索引节点表该表目称为内存索引节点,它是相应磁盘
索引节点在内存驻留,同时增加了些信息:索引节点号
i_number,当前正在访问该索引节点的引用计数 i_count,文
件所属文件系统逻辑设备号 i_dev,链接的前向指针 i_forw和
后向指针 i_back等。用户打开文件表、系统打开文件表和活
动索引节点表之间关系如下图所示。
内存的目录管理表 -1
内存目录表管理关系
.
.
.
用户文件描
述表
fP
.
.
.
.
.
.
.
.
.
.
.
.
.
.
f_inode
f_count
f_offset
f_flag
.
.
.
.
.
.
.
.
.
.
.
.
.
i-count
i_addr[o]
i_addr[1]
.
.
.
i_addr[12]
.
.
.
.
.
.
.
.
.
.
.
.
进程控制块 PCB 系统打开文件表 内存索引节点表 磁盘文件区
内存的目录管理表 -2
The relation between the file descriptor table,the
open file description
i-count=2
f-count=1
i-count=1
f-count=2
目录管理
3。文件操作与目录管理关系
为了让用户灵活方便和有效地使用文件,文件系统提供许多
有关文件的系统调用,即文件操作供用户使用。文件系统提
供的常用系统调用有, 建立, ( create) 文件,,打开,
( open),“写, ( write) 文件,,读, ( read) 文件、
,关闭, ( close) 文件,,删除, ( delete) 文件等。这
些操作与目录管理的数据结构关系密切,下面以 UNIX为例说
明。
?建立文件
当用户提出在某个路径或目录下建立文件时,系统首先检
查在该目录下有否相同名的文件,如没有的话则在磁盘目录
中登记此文件,对 UNIX系统则需给它分配索引节点,以保存
文件存放的盘块号,同时在该目录文件中增加一个表目,记
录文件名和相应的索引节点号。
文件操作与目录管理关系
?打开文件
用户使用文件前必须使用, 打开, 命令打开文件,,打开,
命令的任务是磁盘目录中找到该文件的 FCB,对 UNIX系统是找
到它所在的目录文件的表目和磁盘索引节点,然后将此文件
的目录文件表目和磁盘索引节点拷贝到内存,建立系统打开
文件表和活动索引节点表有关表目,同时在 PCB的用户打开文
件表中增加表目,并建立如前图一样的三个表间的联系。
?读/写文件
用户(或进程)要读写文件时,利用 PCB中用户打开文件表
的 fP指针可以从三表关系中找到所需读/写的文件所的盘块,
在系统打开文件表的表目中设置读写指针 f_offset[2]分别记
录了进程读/写文件的位置。如在写文件时增加或减少文件
所用的磁盘块数,则要修改活动索引节点表的表目中的 13个
地址项 i_addr[13].
文件操作与目录管理关系 -1
?关闭文件
当对文件操作完成后,或暂时不用,均需及时使用, 关闭,
命令关闭文件,将已修改的文件目录信息及时写回到磁盘中,
并释放文件供其它进程使用。对 UNIX子系统,关闭文件,将
文件在系统打开文件表和活动索引表的表目内容分别写回到
磁盘的相应目录文件和索引节点表区,并删除相应表目供它
用,同时进程打开文件表中相应表目也删除,以免进程打开
文件数超过定值。如用户打开文件并进行读写后未关闭文件
就退出,或者发生断电情况,这样都可能会造成这次读写修
改信息的丢失。
?删除文件
如文件不需要则要用, 删除, 命令删除文件,根据用户提
出的在某目录下的文件名,命令将该文件在目录文件中的表
项和相应的索引节点内容删除,释放供它用。
文件操作与目录管理关系 -2
文件操作命令和目录管理数据结构的关系见下图:
,建立,, 打开,
,删除,, 关闭,
磁盘 内存
(练习 6)
目录文件
磁盘索引节点
PCB中 用户文件描述

系统打开文件表
内存 索引节点表


(四) 文件共享( 文件别名的实现 )
( 1)一般共享目录结构的缺点
文件共享是指不同的用户共同使同一文件。
在用一般共享目录结构时,一用户增加文件的内容,只改变
自己的文件目录,其它用户不知改变。
文件共享
( 2)基于索引节点的共享方式
采用文件名和文件说明分离的目录结构有利于实现文件共享,
如 上图 所示。列出当前目录的子目录和文件命令 ls 是放在
/bin子目录下,而 /usr/bin子目录下可设置一个 DOS兼容的
命令 dir,这增加的命令实为执行 ls命令。为了共享文件,只
是在二个不同子目录下取了不同的文件名 ls和 dir,但它们具
有相同的索引节点。 UNIX这种文件的结构称为树形带勾连的
目录结构。在文件的索引节点中有一个量 di_nlink表示连接
到该索引节点上的连接数;在用命令, ls -l”长列表显示时,
文件的第 2项数据项表示链接数;使用命令, ln”可给一已存
在文件增加一个新文件名,即文件链接数增加 1,此种链接不
能跨越文件系统。用硬连接格式如下:
$ln /opt/k/sco/unix/5.0.4Eb/bin/ls /usr/lx20/dir
$ls –l dir
-r-xr-xr-t 2 bin bin 43296 May 13 1997 dir
1
内部名
ID
其它信息 地址
2
3
4
5
6
7
8
9
10
11
基本文件目录( I D 1 )
ID4
ID5
ID7
ID9
ID10
ID11
文件名 ID
3Tu-Lide
8Tu-Qi
根目录( I D 2 )
文件名 ID
7Products
5Rooms
Tu-Lide的 目录(ID3)
4Software
6Tools
文件名 ID
T o o l s 的目录( I D 6 )
11SA-SD
10Univer
文件名 ID
10Univer
5Classroom
Tu-Lide的 目录(ID3)
9Tools
基本文件目录
Tu-Lide的 目录(ID3)
Products RoomsSoftware Tools
根目录( I D 2 )
Tu-Lide Tu-Qi
Tu-Lide的 目录(ID8)
Univer ClassroomTools
T o o l s 的目录( I D 6 )
SA-SDUniverID4 ID5ID7 ID9
ID10ID11
符号文件目录的层次结构
文件共享
( 3)利用符号连接
?采用二个文件目录表目指向同一个索引节点的连接称为文
件硬连接,文件硬连接不利于文件主删除它拥有的文件,
因为文件主要删除它拥有的共享文件,必须首先删除(关
闭)所有的硬连接,否则就会造成共享该文件的用户的目
录表目指针悬空。为此又提出另一种连接方法--符号连
接。系统为共享的用户创建一个 link类型的新文件,将这
新文件登录在该用户共享目录项中,这个 link型文件包含
连接文件的路径名。该类文件在用 ls命令长列表显示时,
文件类型为 l。
?当用户要访问共享文件且正要读 link型新文件时,操作系
统根据 link文件类型性质将文件读出的内容作为路径名去
访问真正的共享文件。在 UNIX中也是使用 ln来建立符号连
接的共享文件,这时命令为 ln -s。
利用符号连接
如用符号连接格式如下:
$ln -s /opt/k/sco/unix/5.0.4Eb/bin/ls
/usr/lx20/dir
$ls –l dir
lrwxrwxrwx 1 lx20 group 30 Dec 27 13:34 dir ->
/opt/K/SCO/Unix/5/0/4Eb/bin/ls
?采用符号连接可以跨越文件系统,甚至可以通过计算机网络
连接到世界上任何地方的机器中的文件,此时只需提供该文
件所在的地址,以及在该机器中的文件路径。
?符号连接的缺点:其它用户读取符号连接的共享文件比读取
硬连接的共享文件需要增多读盘操作。因为其它用户去读符
号连接的共享文件时,系统中根据给定的文件路径名,逐个
分量地去查找目录,通过多次读盘操作才能找到该文件的索
引节点,而用硬连接的共享文件的目录文件表目中已包括了
共享文件的索引节点号。 (练习 7)
利用符号连接 -1
SCO UNIX例:在 SCO UNIX中 ls文件实际存放的目录为
/opt/k/sco/unix/5.0.4Eb/bin列表显示如下:
$ls -l /opt/k/sco/unix/5.0.4Eb/bin/ls
-r-xr-xr-t 1 bin bin 43296 May 13 1997
/opt/K/SCO/Unix/5.0.4Eb/bin/ls
在标准 UNIX中 ls命令在 /bin子目录下,SCO UNIX采用符号连
接在 /bin子目录下建立 ls文件,该 ls是个 link类型的文件,
它不能用编辑文件显示,但用 ls长列表显示时可看出它的符
号连接的路径名,可从下列表显示可见
$ls –l /bin/ls
lrwxrwxrwx 1 root root 30 Nov 24 1998 /bin/ls ->
/opt/K/SCO/Unix/5.0.4Eb/bin/ls
长列表显示最后一列数据是文件名和它连接文件的路径名。
(五)文件的保护和安全
( 1)文件的存取控制
文件系统对文件的保护常采用存取控制方式进行,所谓存取
控制就是不同的用户对文件的访问规定不同的权限,以防止
文件被未经文件主同意的用户访问。
1。存取控制矩阵
理论上存取控制方法可用存取控制矩阵,它是一个二维矩阵,
一维列出计算机的全部用户,另一维列出系统中的全部文件,
矩阵中每个元素 Aij是表示第 i个用户对第 j个文件的存取权
限。通常存取权限有可读、可写、可执行以及它们的组合如
下表所示。
文件的存取控制
文件
用户
A L P H A B E T A R E P O R T S Q R T
张三 R W X - - - R - X - - -
李四 R - X - - - R W X R - X …
王五 - - - R W X R - X R - X
赵六 - - - - - - - - - R W X
,,
存取控制矩阵
存取控制矩阵在概念上是简单清楚的,但实现上却
有困难。当一个系统用户数和文件数很大时,二维
矩阵要占很大的存储空间,验证过程也费时。
文件的存取控制 -1
2。存取控制表
存取控制矩阵由于太大而往往无法实现。一个改进的办法
是按用户对文件的访问权力的差别对用户进行分类,由于某
一文件往往只与少数几个用户有关,所以这种分类方法可使
存取控制表大为简化。 UNIX系统就是使用这种存取控制表方
法。它把用户分成三类:文件主、同组用户和其它用户,每
类用户的存取权限为可读、可写、可执行以及它们的组合。
在用 ls长列表显示时每组存取权限用三个字母 RWX表示,如
读、写和执行中那一样存取不允许则用, -” 字符表示,用
ls-l长列表显示 ls文件如下:
?-r-xr-xr-t 1 bin bin 43296 May 13 1997
/opt/K/SCO/Unix/5.0.4Eb/bin/ls
?显示前 2-10共 9个字符表示文件的存取权限,每 3个字符为一
组,分别表示文件主、同组用户和其它用户的存取权限。
文件的存取控制 -2
?由于存取控制表对每个文件将用户分类,所以该存取控制表
可存放在每个文件的文件控制块 (即目录表目)中,对 UNIX
它只需 9位二进制来表示三类用户对文件的存取权限,它存
在文件索引节点的 di_mode中。
3.用户权限表
改进存取控制矩阵的另一种方法是以用户或用户组为单位
将用户可存取的文件各集中起来存入一表,这称为用户权限
表,表中每个表目表示该用户对应文件的存取权限,如下表
所示。这相当于存取控制矩阵一行的简化 。
文件
用户 ALPHA REPORT
张三 RWX R-X
4.实验,Linux改变文件或目录存取控制权限命令 chmod
使用命令 chmod可改变文件或目录的存取控制权限,linux把用
户分成三组。用户主( u),同组用户( g) 和其它用户( o),
而 a代表所有用户。每组用户的存取控制权限有三种,读( r)、
写( w) 和执行( x)。 改变存取控制权限的操作有增加某些权
限( +),去掉某些权限(-)和绝对地赋予某些权限(=)。
利用 chmod提供的功能我们可以将文件存取控制权限设置为
以下三种类型,
①文件为所有用户共享
$ chmod a= rwx filename1
或 $ chmod 777 filename1
②文件对同组用户和其它用户存取权限加以限制
$ chmod go= x filename2
或 $ chmod 711 filename2
实验- 1
③文件对同组用户和其它用户保密
可将文件 filename3建立用户的主目录的子目录 dir1之
下,对子目录 dir1存取权限设置为 $ chmod 700 dir1
对文件 filename3存取权限设置为 $ chmod 700 filename3
这样同组和其它用户无法感知该文件 filename3的存在。
要求在 linux环境下,设置二个普通用户 aaa和 bbb,由
aaa用户对上述三个文件进行设置文件 filename1、
filename2和子目录 dir1在子目录 aaa下,而由 bbb用户来
观察该三文件。
( 2)分级安全管理
随着计算机应用范围扩大,在所有稍具规模的系统中,
都从多个级别上来保证系统的安全性。
1。系统级安全管理
系统级安全管理的主要任务是不允许未经核准的用户进入
系统,从而也防止了他人非法使用系统中各类资源(包括文
件)。系统级管理的主要措施有:
?注册
注册的主要目的是使系统管理员能够掌握要使用的各用户
的情况,并保证用户在系统中的唯一性。例如 linux操作系
统中 Passwd文件为系统的每一个帐号保存一行记录,这条记
录给出了每个账号的一些属性,如用户真实名字、口令等,
Passwd是 ASCII文件,普通用户可读,只有 root 可写,为使
口令保密,使用 shadow口令可使 Passwd文件中存放口令的地
方放上一个, ×, 。
系统级安全管理 -1
而加密口令和口令有效期信息存放在 Shodow文件中,只有
root才能读取。任何一个新用户在使用系统前,必须先向系
统管理员申请,由系统管理员 root使用 adduser命令创建用户
帐号。当用户不再使用系统时,由 root帐号使用 userdel命令
删除一个帐号和帐号的主目录。
?登录
用户经注册后就成为该系统用户,但在上机时还必须进行
登录。登录的主要目的是通过核实该用户的注册名及口令来
检查该用户使用系统的合法性。 WindowsNT需用户同时按下
Ctrl+Alt+Del键来启动登录界面,提示输入用户名和口令。
在用户输入后系统调用身份验证包来接收登录信息,并与安
全帐号管理库中存放的用户名和口令进行对比,如果找到匹
配,则登录成功,于是允许用户进入系统。为了防止非法用
户窃取口令,在用户键入口令时,系统将不在屏幕上给予回
显,凡未通过用户名及口令检查的用户,将不能进入系统。
分级安全管理 -2
为了进一步保证系统及安全性,防止有恶意者通过多次
尝试猜口令方式而打入系统,SCO UNIX可设置访问注册
限制次数,当不成功注册次数超过这个限度后,帐号和
终端就被封锁,这称为凶兆监视( threat monitoring)。
系统还可设置参数控制口令有效时间,当一口令到了退
役时间,口令死亡,该用户帐号也封闭。 WindowsNT采用
Ctrl+Alt+Del键来启动登录界面也是为了防止非法程序
模拟登录界面扮作操作系统来窃取用户名和口令。
2.用户级安全管理
用户级安全管理是通过对不同的用户对不同文件设置不
同的存取权限来实现。
分级安全管理 -3
3.目录级安全管理
目录级安全管理,是为了保护系统中各种目录而设计的,它
与用户权限无关。为保证目录的安全规定只有系统核心才具
有写目录的权利。
用户对目录的读、写和执行与一般文件的读、写和执行的含
义有所不同,对于目录的读权限意味着允许打开并读该目录
的信息,例如 UNIX系统使用 ls命令可列出该目录的子目录和
文件名。对于目录的写权限意味着可以在此目录中创建或删
除文件,禁止对于某个目录的写权限并不意味着在该目录中
的文件不能修改,只有在一个文件上的写权限才真正地控制
修改文件的能力。对于一个目录的执行权限意味着系统在分
析一个文件时可检索此目录。禁止一个目录的执行权限可真
正地防止用户使用该目录中的文件,用户不能使用 cd命令来
进入此目录。
分级安全管理 -4
4.文件级安全管理
文件级安全管理,是通过系统管理员或文件主对文件属性
的设置来控制用户对文件的访问。通常可设置以下几种属性:
?只执行 ―― 只允许用户执行该文件,主要针对,exe和,com文
件。
?隐含 ―― 指示该文件为隐含属性文件。
?索引 ―― 指示该文件是索引文件。
?修改 ―― 指示该文件自上次备份后是否还被修改。
?只读 ―― 只允许用户对读该文件。
?读/写 ―― 允许用户对文件进行读和写。
 共享 ―― 指示该文件是可读共享的文件。
 系统 ―― 指示该系统是系统文件。
文件级安全管理 -5
用户对文件的访问,将由用户访问权、目录访问权限及文
件属性三者的权限所确定。或者说是有效权限和文件属性的
交集。例如对于只读文件,尽管用户的有效权限是读/写,
但都不能对只读文件进行修改、更名和删除。对于一个非共
享文件,将禁止在同一时间内由多个用户对它们进行访问。
通过上述四级文件保护措施,可有效地对文件的保护。
(3) 文件的转储和恢复 ―― UNIX分级备份
文件系统中不论硬件和软件都会因电源中断和变化,用户
粗野和不慎的操作而发生损坏和错误,所以为使至关重要的
文件系统万无一失,应对保存在辅存中的文件采取一些保险
措施,这些措施中最简便方法是, 定期转储,,使一些重要
的文件有多个副本。
1.分级备份
为了使备份更有效,UNIX将备份分为几个等级,0级是最低
级备份级,它是全量转储,它将文件存储器中所有文件都保
存起来,由于全量转储的信息量大,对大系统要费时数小时,
转储时系统必须仃止向用户开放,所以全量转储的时间间隔
相对较长。
分级备份
为了防止在二次全量转储之间信息丢失,在二次全量转储间
又要排了增量转储,增量转储是将前一段时间内修改过的文
件和新文件保存起来。为此又设立 1- 3级备份,1级备份备
份上次 0级备份之后所修改的文件,2级备份备份上次 1级备
份之后修改的文件 ……,级数值越大,备份时间间隔越短。
系统管理员应对系统例行备份进行计划安排,SCO UNIX系统
管理程序 Sysadmsh中有 Schedule调度文件帮助管理员建立一
个备份安排表,下表是一系统备份安排表例,
序号 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
╲ 星期
系统 ╲ M T W T F M T W T F M T W T F M T W T F
/ dev/rroot 0 × 3 × 3 2 × 3 × 3 1 × 3 × 3 2 × 3 × 3
/dev/ru 3 0 3 3 3 3 2 3 3 3 3 1 3 3 3 3 2 3 3 3
文件的转储和恢复 ―― UNIX分级备份
从备份安排表中看出对根文件系统,20天做一次 0级全量备
份,10天作一次 1级增量备份,5天做 1次 2级增量备份,隔天
作一次 3级增量备份,而 /u用户文件系统,由于它比根文件
系统变化频繁,0,1,2级备份时间相同,而第 3级备份每天
进行。
2.恢复
文件系统分级备份后,当系统出现故障就可以用分级装入
备份文件来恢复系统,分级恢复的次序是:首先恢复 0级,
跟着依次恢复最近所做的 1级,2级和 3级备份,
3.转储和恢复的设备和命令
系统备份一般采用磁带,由于磁带容量大,适合作全量转
储。增量转储也可用软盘。转储和恢复的工具最常用是
BACKUP命令,增量转储时间可使用 cpio和 tar命令。
(4) WindowsNT安全性
WindowsNT提供了一组全面的、可配置的安全性服务,这些
服务达到了美国政府用于受托操作系统的国防部 C2级要求。
1,WindowsNT安全性服务
WindowsNT的安全性服务及其基本特征如下:
? 登录服务:要求在允许用户访问系统之前,输入唯一的登录
标识符和密码来标识自已。
? 谨慎访问控制:允许资源的所有者决定哪些用户可以访问资
源和它们可以处理这些资源。属主可以授权给某个用户或用
户组,允许他们进行访问。
? 安全审核:提供检测和记录与安全有关的任何创建、访问或
删除系统资源的事件或尝试的能力。登录标识符记录所有用
户的身份,这们便于跟踪任何非法操作的用户。
?内存保护:防止非法进程访问其它进程专用虚拟内存。它保
证当物理内存页面分配给某个用户进程前被重新初始化,保
证这一页绝对不含有其它进程的脏数据。
WindowsNT安全性 -1
2.存取控制
NT利用面向对象的概念提供了一个强大而灵活的存取
控制能力,NT提供一个统一的存取控制机制应用到
进程,线程、文件、信号量窗口和其它对象。存取
控制是由二个实体来管理,与每个进程相关的存取
令牌和使进程存取可能的每个对象相关的安全描述
体。
 存取令牌( access token)
存取令牌的一般结构包括以下参数:
在网络所有机器中唯一标识一个用户的安全标识符
SID,它相应于一个用户的登录名。
用户归属组的安全标识符组 SID。
WindowsNT安全性 -2
一个安全性敏感系统服务于这个用户可能用和禁止用
的特权列表。
缺省的拥存者。缺省的存取控制表 ACL。
 安全描述体( security descriptor) 参数:
定义一个安全描述体的类型和内容标志。
对象的拥有者,它能在对象上完成任何操作。
系统存取控制列表( SACL),它确定在对象上那类
操作应该产生审查信息。
描述体存取控制表( DACL),它决定那个用户和组
能用那种操作来存取这个对象,它是由一个存取控
制实体( ACE) 的列表。
WindowsNT安全性 -2
3。存取控制方式
当一个用户在 NT登录接受后,NT为用户产生了一个进程
和一个进程相连的存取令牌,存取令牌保持所有所需安
全信息。而与每个对象相连的是安全描述体,安全描述
体有一个存取控制表,它确定不同的用户和用户组对这
个对象的存取权。当一个用户相连的进程试图存取一个
对象时,NT的安全子系统把进程的安全标识符 SID与对
象的存取控制表进行查对,以决定存取是否允许。
从结构图中可以看出进程和线程都有安全描述体,如图
中 ①和②。每个进程都从它的创建进程继承了一个首选
的存取令牌,如图中⑤。服务器进程的单个线程在模拟
,客户, 时,也可以有自己的存取令牌,它使得该线程
具有不同于进程的访问令牌,如图⑥,存取令牌自身也
具有安全描述体,如图中③和④。
NT进程及线程安全结构图
① 安全描述体
进程 ⑤ 存取令牌
③ 安全描述体
安全描述体
线程 1
② 安全描述 体
线程 2
⑥ 存取令牌
④ 安全描述体
习题
1,下列哪一项不是文件系统的功能? ﹎﹎ A﹎﹎
A,( 1) 文件系统实现对文件的按名存取
( 2) 负责实现数据的逻辑结构到物理结构的转换
( 3) 提高磁盘的读写速度
( 4) 提供对文件的存取方法和对文件的操作 (解 )
2,(1)按逻辑结构划分, 文件主要有两类:﹎﹎ A﹎﹎ 和﹎﹎ B
﹎﹎ 。 UNIX中的文件系统采用﹎﹎ B﹎﹎ 。
(2)文件系统的主要目的是﹎﹎ C﹎﹎ 。
(3)文件系统中用﹎﹎ D﹎﹎ 管理文件 。
(4)为了允许不同用户的文件具有相同的文件名, 通常在文件系
统中采用﹎﹎ E﹎﹎ 。
A,B,(1)网状文件; (2)只读文件; (3)读写文件; ⑷ 记录式
文件; ⑸ 索引文件; ⑹ 流式文件;
C,(1)实现对文件的按名存取; (2)实现虚拟存贮器; (3)提高
外围设备的输入输出速度; (4)用于存贮系统文档 。
D,(1)堆栈结构; (2)指针; (3)目录; (4)页表 。
E,(1)重名翻译; (2)多级目录; (3)约定; (4)路径 。 (解 )
习题 -1
3,一个树型结构的文件系统如下图, 图中 ┌───┐ 表示目
录,表示文件 。 └───┘
A,可否进行下列操作 。
(1) ﹎﹎ A﹎﹎ 进行以下操作:在目录 D中建立一个文件,取名
为 A。
(2) ﹎﹎ B﹎﹎ 进行以下操作:将目录 C改名为 A。
B,若 E和 G是两个用户各自的目录
(1)用户 E欲共享文件 Q,应有条件是﹎﹎ C﹎﹎, 操作是﹎﹎ D
﹎﹎ 。
(2)在一段时间内,用户 G主要使用文件 S和 T,为简便操作和提
高速度, 处置方法为﹎﹎ E﹎﹎ 。
(3)用户 E欲对文件 I加以保护, 不许别人使用, 实现方法为﹎
﹎ F﹎﹎ 。
习题 -2
┌━───┐
│ 根目录 │
└────┘
_____________________|_________________
┌─┴┐ ┌─┴┐┌─┴┐ ┌─┴┐
│ A │ │ B ││ C │,.,│ D │
└──┘ └──┘└──┘ └──┘
____|__________ ____|________
┌┴─┐ | ┌┴─┐ ┌┴─┐
│ E │,.,F │ G │,,│ H │
└──┘ └──┘ └──┘
____|______ _______|___ ___|_____
| | ┌┴─┐ | | |
I,,J, │ K │,.,L M,.,N
└──┘
_______|______
┌┴─┐ ┌┴─┐
│ O │, │ P │
└──┘ └──┘
______|___ ____|___
| | | |
Q R S T
习题 -3
A,B,(1)可以 (2)不可以
C,(1) 文件 Q访问 权限 设置为 允许其他 用户访问或共享 SHA;
(2) (3)
D,(1) 用户 E对共享文件 Q进行连接 (2) (3)
E,(1) 设置当前目录为 \D\G\K\P; (2) (3)
F,(1) 文件 I访问 权限 设置为 不允许其他 用户访问 (2) (3)
4,试述 UNIX (Linux) 树型带勾连的目录结构和查询方法。 (解 4)
5,用户在使用配置 UNIX OS的计算机时不能将用户软盘随便插
进和拿出, 试从 UNIX子文件系统的使用原理说明它需要一定
的操作的依据和操作的步骤 。 (解 5)
6,在某些系统中有这样的情况,假如某用户打开文件, 向该文件
中增加了若干新记录之后没有关闭文件就关机了, 当他下次
开机再打开文件时却无法读出所增加的新记录 。 试从打开文
件和关闭文件的作用出发, 分析产生这种现象的原因 。 (解 6)
7.什么是文件共享? 试述 UNIX系统中文件共享的实现方法?
(解 7)