该功能的属性设置命令是 chattr,要查看该属性要使用 lsattr
1. chattr 的使用方法。 使用 --help查看
Usage: chattr [-pRVf] [-+=aAcCdDeijPsStTu] [-v version] files...
2. 参数介绍:
2.1 [-pRVf] 控制性参数,
R:递归,对文件夹和文件夹内的文档、子文件夹等所有内容进行相同的处理
V:显示执行过程
f:禁止大多数错误消息
2.2 [-+=aAcCdDeijPsStTu] 功能性参数
通过 - + = 进行取消、增加、替换 后面的字母所表示的 功能
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文 件安全,只有root才能设定这个属性。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
C:写入时无复制
d:即no dump,设定文件不能成为dump程序的备份目标。
D:同步更新目录
e:范围格式 (extent format)
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
P:项目层次结构(project hierarchy)
s:保密性地删除文件或目录,即硬盘空间被全部收回。
S:硬盘I/O同步选项,功能类似sync。
t:无尾合并(no tail-merging)
T:目录层次结构顶部(top of directory hierarchy)
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion.
注:最常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。i 则是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。
3. lsattr 的使用
Usage: lsattr [-RVadlpv] [files...]
-a 显示文件夹和文件夹内各个子内容的属性
-d 若files是文件夹,仅显示文件夹本身的属性,不显示其中的子内容属性
例: lsattr /etc/passwd
4. 实例应用测试
4.1 文件准备
新建了一个 test 文件夹,并在其中编辑了一个 test.file 文档
4.2 查看属性, 使用lsattr命令
lsattr -a test lsattr -d test lsattr test
4.3 增加a 或者 i 属性
4.3.1 chattr +a test
可以看到, 没有使用 -R, 效果是仅对文件夹进行了属性增加,其中的文档属性并没有改变
4.3.2 chattr -R +i test
可以看到,test 和 其中的 test.file 的属性中都增加了i ,并且 test这个文件夹还具有a这个属性
4.3.3 chattr =i test chattr =a test
可以看到,chattr =i test 这个命令没有被执行,使用 chattr =a test 则可以, test这个文件夹的属性变成了单独的 a
4.3.4 chattr -R +ai test
可以看到,采用递归同时增加 a和i的属性,提示 test之下的test.file文档不能增加a属性。下面测试一下是否是因为i 属性的原因
4.3.5 i 和a 属性的比较测试
可以看到,去除文件的i属性后,就可以增加a属性了,再试一下去除文件夹test的a属性,仅保留i,是否能再增加上去
可以看到,当文件和文件都有i 属性的时候,不能对其进行其他属性的增减,也就是完全不能修改,也就是说, i 的属性的限制的严格程度,高于a。当两者同时存在时,体现的属性是 i 。