参数说明:node
+-= :分别为 [+ 增长] [- 减小] [= 设定] 属性的意思安全
A :当设定了 A 这个属性时,这个档案(或目录)的存取时间atime (access) 将不可被修改, 可避免例如手提式计算机容易有磁盘 I/O 错误的状况发生!bash
S :这个功能有点相似 sync 的功能!就是会将数据同步写入磁盘当中!能够有效的避免数据流失!ide
a :当设定 a 以后,这个档案将只能增长数据,而不能删除,只有 root 才能设定这个属性。日志
c :这个属性设定以后,将会自动的将此档案『压缩』,在读取的时候将会自动解压缩出来,可是在储存的时候,将会先进行压缩以后再储存(看来对于大档案彷佛蛮有用的!)rem
d :当 dump (备份)程序被执行的时候,设定 d 属性将可以使该档案(或目录)具备 dump 功效!同步
i :这个 i 可就很厉害了!他可让一个档案『不能被删除、更名、设定连结也没法写入或新增数据!对于系统安全性有至关大的帮助!it
j :当使用 ext3 这个档案系统格式时,设定 j 属性将会使档案在写入时先记录在 journal 中! 可是当 filesystem 设定参数为 data=journalled 时,因为已经设定了日志了,因此这个属性无效!io
s :当档案设定了 s 参数时,他将会被彻底的移除出这个硬盘空间。class
u :与 s 相反的,当使用 u 来设定档案时,则数据内容其实还存在磁盘中,可使用来 undeletion.
chattr示例Shell
chattr +i /etc/shadow #添加“i”隐藏属性后,就没法更动这个文件了
chattr -i /etc/shadow #解除"i"这个隐藏属性
lsattr命令的用法:lsattr [-aR]
参数说明:
-a :将隐藏文件的属性也列出来;
-R :连同子目录的数据也一并列出来!
lsattr示例Shell
chattr +i .bash_logout #添加一个隐藏的“i”属性,后面再细讲
lsattr -a #将当前目录的文件或目录下的文件全部属性(包括隐藏属性)列出
-------------- ./.
-------------- ./..
---i---------- ./.bash_logout
-------------- ./.bash_profile
-------------- ./.bashrc
例如,这是一个很正常的删除逻辑,用户是root,从常理上说,只要不是文件处于被打开状态,root能够删除任何文件:
root@compute-node:~/test# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 18 15:02 1.txt
-rw-r--r-- 1 root root 0 Jul 18 15:02 2.txt
root@compute-node:~/test# rm 1.txt
root@compute-node:~/test# ls
2.txt
root@compute-node:~/test#
小小的chattr一下,则2.txt没法被简单的删除,且lsattr发现2.txt多了一个属性:
root@compute-node:~/test# chattr +i 2.txt
root@compute-node:~/test# rm 2.txt
rm: cannot remove 2.txt: Operation not permitted
root@compute-node:~/test#
root@compute-node:~/test# lsattr 2.txt
----i--------e-- 2.txt
取消掉2.txt的i属性后,2.txt又能够删除了
root@compute-node:~/test# chattr -i 2.txt
root@compute-node:~/test# rm 2.txt
root@compute-node:~/test# ls
root@compute-node:~/test#