文件安全系统(文件的共享和文件系统的安全性)
(一)文件的链接
文件共享是指系统允许多个用户(进程)共同使用某个或某些文件。利用文件共享功能,可以节省大量外存空间和内存空间,因为系统中只需保存共享文件的一个副本,从而减少了输入输出操作,同时为用户应用带来很大方便。随着计算机技术的发展,文件共享已不限于单机系统,如今在计算机网络系统中得到广泛应用。通常,文件共享方式主要有两种:路由共享和链接共享。
1.路由共享
用户登录后,系统自动为其确定当前工作目录(按照建立该用户账号时的设置)。该用户访问的所有文件都相对于工作目录。当所访问的文件不在工作目录之下时,授权用户可以从工作目录出发,沿目录树的路径(向上或向下)找到所需文件,然后执行允许的操作。
这种文件共享方式往往用于对系统文件的共享。如UNIX/Linux系统中,所有用户可以查看系统目录的内容和执行系统命令等。但是,要实现各用户文件的有选择的共享就存在困难,而且当文件主删除文件后,其他用户就无法看到该文件。因而,这种共享是临时的。
2.链接共享
如前所述,UNIX/Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。对于某个文件的各链接文件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全性。文件链接有两种形式,即硬链接和符号链接。
· 硬链接
建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中。如图5-21所示的m2.c文件就在目录mub1和liu中都建立了目录项。
图5-21 文件链接
创建硬链接后,已经存在的文件的I节点号(Inode)会被多个目录文件项使用。
利用命令ls –l可以以长列表格式显示给定目录中文件的详细信息。一个文件的硬链接数可以在所显示信息的第2个字段中看到。例如:
-rw- r-- r-- 2 mengqc group 198 Jul 23 2014 m2.c
表示文件m2.c的硬链接数为2。
无额外链接的文件的链接数为1。在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。一个文件除非链接数为0,否则不会从文件系统中被物理地删除。
对硬链接有如下限制:
① 不能对目录文件做硬链接。
② 不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中。
· 符号链接
符号链接也称为软链接,是将一个路径名链接到一个文件。符号链接是一种特别类型的文件。事实上,它只是一个文本文件(如图5-21中的abc文件),其中包含它提供链接的另一个文件的路径名,如图5-21中虚线箭头所示。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。
与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。
符号链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做符号链接。用ln -s命令建立符号链接时,源文件最好用绝对路径名。这样可以在任何工作目录下进行符号链接。而当源文件用相对路径时,如果当前的工作路径与要创建的符号链接文件所在路径不同,就不能进行链接。
符号链接的特点如下:
① 删除源文件或目录时,只删除了该数据文件,不会删除相关链接。一旦以同样文件名创建了源文件,该链接将继续指向该文件的新数据。
② 在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是l。
③ 符号链接的大小是其链接文件的路径名中的字节数。
④ 当用ls -l 命令列出文件时,可以看到符号链接名后有一个箭头指向源文件或目录,例如:
lrwxrwxrwx … 14 Jul 20 10:20 /etc/motd->/original_file
其中,表示“文件大小”的数字“14”说明源文件名“/original_file”由14个字符构成。
当然,符号链接也带来需要额外开销的问题。因为读取包含路径的文件需要多次额外的磁盘存取。另外,每个符号链接都需要额外的I节点和存放相应文件的盘空间。
(二)文件的保护和保密
计算机系统中的文件既存在保护问题,又存在保密问题。所谓文件保护是指文件免遭文件主或其他用户由于错误的操作而使文件受到破坏。而文件保密是指未经文件主授权的用户不得访问该文件。这二者都涉及用户对文件的访问权限问题。
· 命名
有些系统采用的保密方式是不允许用户存取别人建立的文件。就是说,系统不提供诸如利用通配符来查找文件一类的机制,用户也不能随意搜索目录。这样,一个用户就不能轻而易举地获取其他用户的文件名。因为文件名是由文件主为记忆而独自选择的。用户不知道文件的名称,也就无法打开使用。
· 口令
另外一种方式是让每个文件都带有口令。存取文件时要先对口令,口令对上了,才允许用户对它进一步操作。这就像用户进入系统登录时要验证口令一样。如果文件主对口令随机选择并经常改变,那么这种方式在限制文件存取方面是相当有效的。只有那些知道口令的人才能对文件进行存取。
一般说来,每个文件仅有一个口令。因而,用户一旦获取了口令,就可以与文件主一样使用文件,而没有进一步区分使用等级。为使保护层分得更细,可以使用多次口令。
· 存取控制
这种方式是根据不同的用户身份,对每个文件为他们规定不同的存取控制权限。各个用户对一个文件或目录可能需要不同类型的存取方式。可以对每个文件或目录设一个存取表,说明用户名称和允许他进行存取的类型。当用户请求一个特定文件时,操作系统查访存取控制表。如果该用户列在表中,那么就允许他进行相应的存取;否则出现保护违约,该用户对文件的操作就被中止。
在存取控制表中要列出具有同一存取权限的全部用户的名称,不仅使表目很长,而且往往难于实现,因为系统中用户的数目是可变的。为了缩短存取控制表的长度,提高操作效率,很多系统按照用户间的关系,把他们分为3类对象:文件主、同组用户和其他用户。每个文件都有一个文件主,由他创建这个文件。此外,某些用户可能和文件主关系密切,同属一个用户组,可以共享该文件,具有类似的存取权限。例如,在程序设计期间的各个成员,一个班级或者一个部门的成员可定义为一个用户组。除上述两种身份之外的所有用户都属于其他用户,可根据需要为他们规定某些存取权限。
例如,在UNIX/Linux系统中,因为文件的使用环境是比较开放的,所以对文件存取权限的规定比较简单,用9个二进制位表示,分成3个域,每个域3位,它们是:rwx,分别控制读、写和执行操作。3个域分别表示文件主、同组用户和其他用户所具有的权限。例如:
-rw- r-- r-- 2 mengqc group 198 Jul 23 2014 m2.c
表示对文件m2.c,文件主可以读写(rw),同组用户和其他用户只可以读,但都不可执行。
文件保护既与文件本身有关,又和文件的路径有关,可以在文件的路径上提供保护。因而,若一个用户想存取由路径名指定的文件,必须对涉及到的目录和文件都有存取权。在对文件有连续共享的情况下,由于检索文件的路径名不同,就可能出现一个用户对同一文件有不同的存取权限。
· 加密
为了防止破坏或泄密,对一些重要的文件信息还可采用密码方法存储。就像发密码电报那样,信息在其存储之前进行加密,在特定用户读取后经过解密再进行相应处理。这样,即使加密后的文件信息被其他用户不正当地获取了,由于他们不知道怎样去解密(很难猜测出加密方法),就无法知道信息的真实内容,从而达到对文件的保密。
在密码方式中,由系统负责文件写入时的加密工作及读出时的解密工作,其中一项关键技术是密钥机制。密钥就类似打开锁的钥匙,一把钥匙开一把锁。我们考虑最简单的加密方式——写入文件时,先对每个字符的编码值加上一个数值(即密钥,例如10);那么,在读出文件时,从读取的每个代码值减去10,就得到原始的信息。例如,在ASCII码中,字母a的值是97,字母b的值是98,依次类推。假设原始信息是apple,其编码值依次为97,112,112,108和101。加密后得到的编码值依次为107,122,122,118和111。如果直接读出的话,则对应字符串是kzzvo。很显然,如果不利用密钥去解密,就无法知道密文的原意。由于密钥仅由享有存取权的特定用户掌握,所以其他用户就不能简单破译截获的密文。
上述示例仅仅是对密钥的简单解释。通常是利用密钥生成一串相继随机数的起始码。编码时把生成的随机数顺序地加到文件的字节串上;译码时再从读出的文件代码中依次减去对应的随机数,从而恢复信息的本来面貌。现在,密码学已经是信息安全领域中一门重要的学科。
密码技术保密性强,但是编码和译码要花费很多时间,增加了系统开销。
随着计算机应用的普及,各种软件越来越丰富。随之而来的一个重要问题就是如何保护软件产品的版权,其关键是防止对文件的随意复制。
上述通过编制一段保护程序、控制用户对文件操作的方式等,往往被称为软保护方式,另外常用的一种方式是利用附加的硬件(如固化模块)来实现保护,称之为硬保护。例如,凡涉及到文件读、写、复制、转储等功能的命令,在实施相应操作之前,先通过一个硬件模块检查其合法性,当发现有侵权行为(如想把系统文件拷贝出去),则系统拒绝执行。硬保护方式具有保密性好和速度快的优点,但相应增加了硬件成本。
(三)文件的备份和恢复
不论是硬件还是软件都有可能出现故障。例如,系统运行过程中由于电源突然掉电、火灾或地震等自然灾害、以及用户或管理员的不慎操作等原因,均会使文件和文件系统受到损害以及数据丢失。为此,文件系统必须采取某些安全措施,避免因故障而造成信息被破坏的无法挽回的结局,以保证文件的可靠性。
备份就是把硬盘上的文件在其它外部的存储介质(如磁带或软盘上)做一个副本。类似地,文件系统的备份就是文件系统上所有文件的副本。
1.备份策略
按照备份时将磁盘上的数据拷贝到备份设备所涉及数据的范围,可采用下述3种方法:
· 完全备份
完全备份也称为简单备份,即每隔一定时间就对系统做一次全面的备份,这样在备份间隔期间出现了数据丢失或破坏,可以使用上一次备份数据将系统恢复到此前的状态。
这也是最基本的系统备份方式。但是,每次都需要备份所有的系统数据,这样每次备份的工作量相当大,需要很大的存储介质空间。因此,不可能太频繁地进行这种系统备份,只能每隔一段时间(如一个月)才进行一次完全备份。然而,在这段相对较长的时间间隔内(整个月)一旦发生数据丢失现象,则所有更新的系统数据都无法被恢复。
· 增量备份
在这种备份策略中,首先进行一次完全备份,然后每隔一个较短的时间段进行一次备份,但仅仅备份在这段时间间隔内修改过的数据。然后,当经过一段较长的时间后,再重新进行一次完全备份……依照这样的周期反复执行。
由于只在每个备份周期的第一次备份时才进行完全备份,其他备份只对修改过的文件做备份,因此工作量较小,也能够进行较为频繁的备份。例如,可以以一个月为备份周期,每个月进行一次完全备份,每天下班后或是业务量较小时进行当天的增量数据备份。这样,一旦发生数据丢失或损坏,首先恢复前一个完全备份,然后按照日期依次恢复每天的备份,一直恢复到前一天的状态为止。所以,这种备份方法比较经济,也较为高效。
· 更新备份
这种备份方法与增量备份相似。首先每隔一段时间进行一次完全备份,然后每天进行一次更新数据的备份。但不同的是,增量备份是备份当天更改的数据,而更新备份是备份从上次进行完全备份后至今更改的全部数据文件。一旦发生数据丢失,首先可以恢复前一个完全备份,然后再使用前一个更新备份恢复到前一天的状态。
更新备份的缺点是,每次做小备份工作的任务比增量备份的工作量要大。但是,其好处在于,增量备份每天都保存当天的备份数据,需要过多的存储量;而更新备份只需要保存一个完全备份和一个更新备份就行了。另外在进行恢复工作的时候,增量备份要顺序进行多次备份的恢复,而更新备份只需要恢复两次。因此,更新备份的恢复工作相对较为简单。
增量备份和更新备份都能够以比较经济的方式对系统进行完全备份。二者的策略不同,在它们之间进行选择不但与系统数据更新的方式有关,也与管理员的习惯相关。通常,如果系统数据更新不是太频繁的话,可以选择更新备份的方式。但是,如果系统数据更新太快的话,就备份时间而言,使用更新备份就不太经济了,这时可以考虑增量备份,以便缩短备份周期;或者视系统数据更新频度,混合使用更新备份和增量备份两种方式。
2.备份时机
按备份进行的时间来分,有“定期备份”和“不定期备份”。
· 定期备份
定期备份是根据预先安排的时间表执行正规的备份。备份时间表确定执行备份的日期以及备份的级别等等。当利用备份时间表进行备份时,不需要每次都保留整个文件系统。实际操作中有效的备份方法是把备份工作分成若干各级别。比如分成0,1,2和3,共4级。0级是最低级的备份,采用完全备份方法,把整个文件系统的全部内容进行拷贝。而1、2、3级备份采用增量备份或更新备份方法,分别把较低一级的最后一次备份以来做过修改的文件和新创建的文件进行备份。整个备份的内容是金字塔形。
如果系统中有很多的用户和大量的每天都做修改的文件,就应建立一个备份时间表,执行正规的定期备份。通常,应该选择在系统比较空闲时进行,以免影响系统的正常工作,并且此时系统中的数据更新频度较低。可以选择在半夜零点之后进行备份。
· 不定期备份
不定期备份是对文件系统或目录进行的完整的无规律的备份。不定期备份不是仅拷贝修改过的文件,而是拷贝整个文件系统或目录。这样一来,就会需要更多的存储介质。
不定期备份不使用备份时间表,可以根据系统中数据进入和修改的情况,随时进行备份。
3.备份文件的恢复
如果由于某种原因造成系统中文件或文件系统的损坏,那么就可以利用此前做的文件备份,从中恢复原先保存的文件或文件系统。首先,必须确定待恢复的文件所在的位置,然后执行数据I/O命令,如UNIX/Linux系统的tar -xp或cpio -im命令。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com