Linux支持的文件系统种类繁多,他们为用户的数据存储和管理提供了良好的操作和使用界面。在文件系统中,存在着文件/目录访问权限管理和控制、加密文件系统等的安全机制和问题需要考虑,本文将详细介绍保证Linux文件系统安全的技术和方法。
Linux中的文件系统类型
随着Linux的不断发展,其所能支持的文件格式系统也在迅速扩充。特别是Linux2.6内核正式推出后,出现了大量新的文件系统,其中包括日志文件系统Ext4、Ext3、ReiserFS、XFS、JFS和其他文件系统。Linux系统核心可以支持十多种文件系统类型:JFS、ReiserFS、Ext、Ext2、Ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。
文件系统安全性对比
从自动修复损坏的文件系统来看,ext2、ext3都能自动修复损坏的文件系统,也都是在开机时进行。ext2和ext3文件系统在默认的情况下是“每间隔21次挂载文件系统或每180天,就要自动检测一次。通过实践来看ext2和ext3在自动检测上是存在风险,有时文件系统开机后就进入单用户模式,并且把整个系统“扔”进lost+found目录,如果要恢复系统,就得用fsck来进行修复;当然fsck也同样存在风险;所以对ext2和ext3文件系统的使用,对新手来说的确需要心里准备;毕竟修复已经损坏的ext2和ext3文件系统是有困难的;另外ext2和ext3文件系统对于意外关机和断电,也可能导致文件系统损坏,所以我们在使用过程中,必须是合法关机;比如执行poweroff指令来关掉机器。
从文件系统的反删除来看,ext2支持反删除,对于一般使用者来说应该是安全的,但对于保密单位来说可能意味着不安全。从反删除角度来说明文件系统的安全性,也是有两方面。如果用户的工作是从事比较机密的,用ext3比较好,因为ext3一旦删除文件,是不可恢复的,因为反删除能恢复相应的绝秘资料的泄秘,所以ext3可能更适合从事机密工作的用户。
新型的Ext4文件系统
Ext4是Linux内核版本2.6.28的重要部分。它是Linux文件系统的一次革命。在很多方面,Ext4相对于Ext3的进步要远超过Ext3相对于Ext2的进步。Ext3相对于Ext2的改进主要在于日志方面,但是Ext4相对于Ext3的的改进是更深层次的,是文件系统数据结构方面的优化。一个高效的、优秀的、可靠的和极具特点的文件系统就此诞生。目前,该文件系统并未在所有的Linux发行套件中完全普及使用,还处于初期的测试阶段。
安全设定文件/目录访问权限
Linux系统中的每个文件和目录都有访问许可权限,通过其确定谁可以通过何种方式对文件和目录进行访问和操作。下面将对文件/目录访问的方法和命令进行介绍。
文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作;只写权限允许对文件进行任何的修改操作;可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。它可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中的每一位用户都能访问该用户拥有的文件或目录。
每一个文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限(如图1所示)。当用ls-l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:
横线代表空许可(即表示不具有该权限)。r代表只读,w代表写,x代表可执行。注意:这里共有10个位置。第1个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第1个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。后面的9个字符每三个构成一组,依次表示文件主、组用户、其他用户对该文件的访问权限。
例如:
表示文件sobsrc.tgz的访问权限,说明sobsrc.tgz是一个普通文件;sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限。
确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。
▲图1.文件/目录访问权限示意图
1、改变文件/目录的访问权限
chmod命令用于改变文件或目录的访问权限,它是一条非常重要的系统命令。用户可用其控制文件或目录的访问权限。
该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
文字设定法
文字设定法的一般使用形式为:chmod[who][+|-|=][mode]文件名。其中,操作对像who可以是下述字母中的任一个或者为各字母的组合:
表示“用户(user)”,即文件或目录的所有者。
表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
表示“其他(others)用户”。
表示“所有(all)用户”。其为系统默认值。
操作符号可以是:
添加某个权限。
取消某个权限。
赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
可读。
可写。
可执行。只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。
在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
将程序的文本保存到交换设备上。
与文件属主拥有一样的权限。
与和文件属主同组的用户拥有一样的权限。
与其他用户拥有一样的权限。
如果在一个命令行中可给出多个权限方式,其间用逗号隔开。图2给出了使用该设定法的例子:
▲图2.chmod命令文字设定法使用示例
首先,设定文件test1的属性为:文件属主(u)增加执行权限;与文件属主同组用户(g)增加执行权限;其他用户(o)增加执行权限,其命令为:
接着,设定文件test2的属性为:文件属主(u)增加写权限;与文件属主同组用户(g)增加写权限;其他用户(o)删除执行权限,其命令为:
最后,对可执行文件test3添加s权限,使得执行该文件的用户暂时具有该文件拥有者的权限: