Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

文件系统安全

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

1.基础知识

  文件系统是unix系统安全的核心。在unix中,所有的事物都是文件。Unix中的基本文 件类型有正规文件、目录、特殊文件、链接、Sockets等等。这些不同类型的文件以一个分层的树结构进行组织,以一个叫"root"的目录为起始位置("/")。整个就是一个文件系统。每个文件对应一个"i节点", "i节点"包括UID(文件拥有者)、GID(文件所在组)、模式(文件的权限)、文件大小、文件类型、ctime("i节点"上次修改时间)、mtime(文件上次修改时间)、atime(文件上次访问时间)、nlink(链接数)。它表示了文件的基本属性。 

  大家注意到,"/"下有很多的目录,那么这些目录是干什么的呢?我简要介绍一下目录结构。如下:

  /bin  用户命令的可执行文件 
  /dev  特殊设备文件 
  /etc  系统执行文件、配置文件、管理文件,主要是配置文件 
  /home  用户起始目录 
  /lib  引导系统以及在root文件系统中运行命令所需的共享库文件 
  /lost+found 与特定文件系统断开连结的丢失文件 
  /mnt  临时安装的文件系统(如光驱、软驱) 
  /proc  一个伪文件系统,用来作为到内核数据结构或正在运行的进程的接口(用于调试) 
  /sbin  只有root使用的可执行文件和只需要引导或安装/usr的文件 
  /tmp  临时文件 
  /usr  为用户和系统命令使用的可执行文件、
    头文件、共享库、帮助文件、本地程序(在/usr/local中) 
  /var  用于电子邮件、打印、cron等的文件,统计文件,日志文件 

  文件系统有多种类型,linux内核支持如下文件系统:

  ext2  固定和可移动磁盘都支持的一种高性能文件系统,用于linux 
  msdos  由MS-DOS和Windows使用 
  umsdos  Linux使用的一种扩充的DOS文件系统,支持长文件名、权限设置 
  iso9660  遵从ISO9660标准的CD-ROM文件系统 
  hpfs High Performance Filesystem 高性能文件系统,OS/2使用 
  minix  在Minux OS中使用,最早的Linux文件系统 
  nfs   用来访问远程计算机中磁盘的网络文件系统 
  swap  用作交换的磁盘分区 

2.文件权限

  文件权限是unix文件系统安全的关键。Unix中的每个用户有一个唯一的用户名和UID(用户ID号),每个用户属于一个或多个组。基本分组成员在/etc/passwd中定义,附加的分组成员在/etc/group中定义。例如,用户tiger的UID为225,分组为11(students),此外,他还是分组185(postgraduates)的成员。每个文件和目录有三组权限,一组是文件的拥有者、一组是文件所属组的成员、一组是其他所有用户。"r"表示可读,"w"表示可写,"x"表示可执行。一共9位(每组3位),合起来称为模式位(mode bits)。

  模式位通常由一列10个字符来表示,每个字符表示一个模式设置,第一个指明文件类型,如(d表示目录,-表示普通文件,l表示链接文件等等)。例如,用ls -l 命令显示如下:

  drwxr-xr-x 2 root root   1024   Aug 13 09:22 backup/ 
  -rw-r--r-- 1 root root   1824   Apr 21 18:45 client.c 
  -rw------- 1 root root   65536  Apr 22 17:56 core 
  -rw-r----- 1 root root   2351   Apr 22 14:01 cry1.bak 
  -rwxr-xr-x 1 root root   27492  Apr 21 18:47 crypt* 
  -rw-r----- 1 tiger tiger 2450   Apr 22 15:16 cryption_server.c 
  -rw-r----- 1 tiger tiger 1544   Apr 22 15:02 myinclude.h 
  -rwxr-xr-x 1 root root   8280   May 3 10:35 test* 

  例如最后一行以"-"开始,表示test使一个普通文件,文件拥有者可以读写执行、本组其他成员可以读执行、其他用户可以读执行。我们可以用chmod和umask命令来改变权限,这很简单,察看相应的帮助就知道怎么修改权限。

3.SUID/SGID

  为什么我要单独把他们从文件权限中分出来讲呢?因为,这是网络入侵者非常爱用的入 侵入口。SUID表示"设置用户ID",SGID表示"设置组ID"。当用户执行一个SUID文件时,用户ID在程序运行过程中被置为文件拥有者的用户ID。如果文件属于root,那用户就成为超级用户。同样,当一个用户执行SGID文件时,用户的组被置为文件的组。例如,PS命令以SUID root运行,他从系统内存中读取,这是一般用户不能做的。SUID程序代表了重要的安全漏洞,特别是SUID设为root的程序。 

  Unix实际上有两种类型的用户ID。"real user ID"是在登录过程中建立的用户ID。 "effective user ID"是在登录后的会话过程中通过SUID和SGID位来修改。当一个用户运行一条命令时,进程继承了用户登录Shell的权限,这时"real user ID"和"effective user ID"是相同的。当SUID位被设置时,进程继承了命令拥有者的权限。例如普通用户运行passwd命令时,他能够修改/etc/passwd文件,尽管文件是属于root的。这成为可能是因为passwd命令以root的SUID权限运行。那么如何识别SUID程序呢?我们检查文件的权限模式,在它的第四位如果不是"x",而是"s",就是一个SUID程序。例如,ls -l /bin/su命令显示: 

  -rwsr-xr-x 1 root root 14888 Aug 15 1999 /bin/su* 


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:用SYN包特性增强网络安全   下一篇:帐号安全

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号