UNIX文件系统安全
在UNIX领域里,所有的信息都是储存在文件里,并有一个相关的名字。文件是存储在目录中的,但UNIX仍把它看作是文件。本课的重点是UNIX文件系统是如何处理权限的。这些权限控制什么样的用户可以访问以及如何访问。文件系统已是强制UNIX系统安全的最基础的方法。
UNIX下的文件格式UNIX对于文件的读取和写入,是以像树状结构的方式维护的。很多年前,UXNI文件系统就支持长文件名和目录名。所有的文件都有i-节点或连接点;它包含一个文件所有的统计和后勤信息。一些数据包含:
?文件类型
?大小(以字节为单位)
?参考计数。如果有其它不同名字而实际上是相同的一个文件(叫做链接文件)
?拒绝地址列表指示器
?时间戳。比如文件最后一次访问的时间;文件内容最后一次被修改的时间等..
?安全相关字段:文件属主的UID及GID
?文件访问权限或位,也称做Mode bits。
Ls 命令是最常用的UNIX命令,用来查看文件和目录的权限。如下图显示
第一个命令ls ?ld .意思是:列出当.下的内容通常.是指当前的目录;在本例中,用户自动地登陆到他的主目录中,而命令中的.是作为当前目录的意思
对于命令输出的结果详细说明见下表
第二个命令ls ?la .bashrc_profile如图输出的有关用户配置文件的信息,它的组成部分见下表
第三个命令ls ?la 123列出一个普通文件的权限。此文件在这里叫123。ls命令通常都是列出其属主和其它用户对此文件有什么样的特殊权限。
第四个命令ls ?l /etc/rc.d/init.d/linuxconf主要列出了linux重要配置文件linuxconf的权限。参照表3-6
现在你已经理解了在UNIX下的文件或目录不同模式位所代表的含义,下面我们将用不同的方法来改变它们。
通常对普通文件默认的权限是666(属主、所在组及其它用户有读取和写入的权限)。每个位(八进制值)都分配给文件的三个组成部分(属主、所在组及其它用户)。对于一个可执行的程序默认的权限可能是777(对所有的用户都是有读取、写入和搜索执行的权限)。
Umask命令默认的”mask”为022,通常与文件的模式位相AND来改变,比如对一个默认权限为0666的文件作AND得到最后的模式位为0644,也就是最后文件的权限为属主有读、写权限,所在组和其它用户有只读的权限。
在一个站点中的所有的用户都期望保护他们自己的数据,默认情况下,是由其它用户来检查的,所有的用户都应该有一个UMASK值为077。如果用户需要和所在组的用户协同完成项目时,那么umask值为037是最佳的选择。
The chmod 命令
Chmod命令是用来操纵文件权限的。这个命令可以以两种方法来应用
? 绝对模式:当使用这种方法时,命令是这样的
chmod 666 filename
这里,权限的模式位已经被绝对地应用到了文件上。应用到不同组成部分上的权限(如属主,组,其它用户)取决于输出的模式位,请参考表3-4
? 符号模式:当使用这种方法时,命令是这样的
chmod a+rwx filname
这里,对于些文件所有用户的权限都是可以读取、写入及执行。因为这些符号符合利用ls命令所显示出来的描述。
下表总结了所有Chmod命令使用的符号