Linux文件、目录的属性理解及配置
本人最近在复习linux文件及目录属性这一块内容时发现,网络上的很大一部分文档都是很零散的内容,比较着重介绍一个点,要么就是太官方,不容易理解。但是这块内容如果不是全面去理解,全面去掌握,很难理解开发者的对系统文件、目录权限管理的一个系统的思想。本文章主要针对零散的文档,加上我自己的理解做了一个全面的整理,欢迎大家交流、讨论。
Linux文件及目录的属性(下文提到的属性皆指文件及目录的属性)分为两种,一种叫基本属性,另外一种叫扩展属性,他们之间没有附属关系,都可单独配置使用。
基本属性:
d、r、w、x、s、t
属性及其对应图表如下
类型位
u位(属主)
g位(属组)
o位(其他)
属性位置
1
2
3
4
5
6
7
8
9
10
属性1
-
-
-
-
-
-
-
-
-
-
意义
文件
不可读
不可写
不可执行
不可读
不可写
不可执行
不可读
不可写
不可执行
代表值
0
0
0
0
0
0
0
0
0
属性2
d
r
w
x
r
w
x
r
w
x
意义
目录
读取
写入
执行
读取
写入
执行
读取
写入
执行
代表值
0400
0200
0100
0040
0020
0010
0004
0002
0001
属性3
s
s
t
意义
suid
guid
保护位
代表值
4000
2000
1000
d代表目录和文件的区分标志,r,w,x读、写、执行都很好理解,不用多讲,重点介绍一下s和t属性的意义。
s属性的意义:首先必须明确,s是建立在x之上的属性,也就是必须是在执行过程中才有其实际意义,那么如果本身没有x权限,那么配置了s属性也是没有任何意义的。s属性可以附值到两个位置,一个位置是u位,即suid,它的意义是凡是有执行权限的用户在执行过程中都将获得所有者的所有权限,例如/usr/bin/passwd这个命令,这样用户可以给自己修改密码。另外一位置是g位,即guid,意义差不多,不过获得的是所属组的所有权限。这个属性的作用类似于windows的委派,有权限下放的意思。
t属性的意义:当文件或目录被赋予t属性时,就算该用户有写入的权限,但也不能被删除。
配置方法:
配置方法有两种,这里介绍简单容易理解的附值法,如上表每一个属性都有其代表值,相加即可,相加时不会进位,最大为7777,熟练后非常容易配置。
命令如下:
查询属性ls –l
修改属性chmod [值] [filename]
例chmod 0651 wenjian #前面如果有0,可省略。等同于chmod 651 wenjian,命令不做详细说明,都是常用命令。
扩展属性
a、b、c、d、i、s、S、u
意义:
a:当文件或目录赋予a属性后,文件或目录只能被追加内容,不能修改其原来的内容。
b:当文件或目录赋予b属性后,文件或目录的最后存取时间将不能被更新,保持修改属性时的时间。
c:当文件或目录赋予c属性后,文件或目录被置于压缩状态,你读取它的数据的时候,它自行先解压,你写入数据后,它将自行压缩存放。
d:当文件或目录赋予d属性后,在执行dump备份文件系统时会忽略掉这个文件或目录,意思就是这个文件不重要,或者有特殊意义,不需要或者不能备份。
i:当文件或目录赋予i属性后,该文件或目录将不能以任何用户任何形式的修改。如果要做改动,必须先去掉i属性。
s:当文件或目录赋予s属性后,该文件或目录被删除后,将其留在磁盘中痕迹位置以全0代替,其用意自然是此文件无法恢复了,保密地删除了文件。
S:当文件或目录赋予S属性后,文件或目录将及时更新存储,不需要手动执行类似 :w 等写入命令。
u:当文件或目录赋予u属性后,文件或目录如果被删除,系统会保留其数据块,则可以通过执行undelete软件恢复该文件。
查询命令 lsattr [filename]
配置命令 chattr [+ - =abcdisSu] [filename] #+增加属性,-去掉属性,=赋予属性;
举例 chattr +i wenjian