Linux 系统文件权限隐藏的细节深入分析
linux 是一个安全的操作系统,是以文件为基础而设计的,其文件权限是比较复杂的,
可以用 stat 命令以及 lsattr 命令来显示某个文件的详细信息:
可 以看到,文件权限的含义是比较广的,先来看-rwxr-xr-x,第一位是文件的类型,
它定义了用户只能某种方式来操作文件,后面九位是文件的存取控制信 息,linux 的文件
许可机制将用户分为三类:文件属主 u(user)、文件属组 g(group)和其它用户
o(other)。三类不同的用户可以对文件 拥有三种不同级别的权限:读 r(read)、写
w(write)和运行 x(execute)。于是形成了九位的权限信息,分为三组,分别对应 u,g,
o。除此之外,用户还可以设置 setuid 与 setgid 位来改变程序的执行身份。用 lsattr 命
令则可以看到文件的属性,控制位包括 asacddiijsttu,这些也是能控制文件的存取的。
$ stat le1 le: `le1'
size: 11904 blocks: 24 io block: 4096 regular
le
device: 301h/769d inode: 355982 links: 1
access: (0755/-rwxr-xr-x) uid: ( 503/ jack) gid:
( 503/ general)
access: 2003-10-19 09:14:12.000000000
+0800
modify: 2003-10-14 20:41:21.000000000
+0800
change: 2003-10-19 18:56:25.000000000
+0800
$ lsattr le ----i--a----- le
由于篇幅有限,不可能就这些一一进行分析,本文着力分析文件权限中 w(write)的
真正含义,挖出其背后隐藏的细节,力图使读者能正确用好这个关键的权限位,不至于在
系统管理中出现差漏。
为了能更直观的说明问题,本文采用实验操作的方式,一步一步的进行分析。为了简
化操作,我们用 o(other)这组权限来做实验。实验中用到的权限位均属于 o(other), 进行操
作的用户均非 root 用户,属于 o(other)。
在 实验之前,必须澄清一个概念,目录也是一种文件,它主要包括了两方面的信息,
该目录下文件的文件名称与文件 inode 编号,它们之间有一一对应的关系。不 过目录文件