隐藏文件的属性对于文件系统的有很大的帮助,尤其是在系统安全上面,很关键。不过强调的是,下面的chattr命令只能在Ext2/Ext3的文件系统上面生效,其他系统可能无法支持这个命令,下面讨论怎么设置与检查这些隐藏属性。
[root@www ~]# chattr [+-=] [ASacdistu] 文件或目录名称
参数:
+ :增加某一个特殊参数,其他原本存在的参数则不动。
- :删除某一个特定参数,其他原本存在的参数则不动。
= :仅有后面接的参数。
A :当设置了A这个属性时,若你有访问此文件(或目录)时,他访问时间atime将不会被修改,可避免I/O较慢的机器过度访问磁盘。这对速度较慢的计算机有帮助。
S :一般文件是异步写入磁盘的,如果加上S这个属性时,当你进入任何文件修改,改动会同步写入磁盘。
a :当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性。
c :这个属性设置后,将自动将此文件压缩,在读取的时候将会自动解压缩,但是在存储的时候,将会先进行压缩后再存储(对于大文件还是挺有用的)。
d :当dump程序被执行的时候,设置d属性将可以使该文件或者目录不会被dump备份。
i :这个i可就厉害了。它可以让一个文件不能被删除、改名、设置连接也无法写入或添加数据。对与系统安全性有相当大的帮助。只要有root权限。
s :当设置了s属性时,如果这个文件被删除,它将会完全从这个硬盘空间中删除。
u :与s相反,当使用u来配置文件时,如果该文件被删除了,则数据内容其实还存在磁盘中,可以使用来找回该文件。
注意:属性设置常见的是a与i的设置值,而且很多设置值必须要身为root才能设置。
例:
[root@www ~]#cd /tmp
[root@www tmp]#touch attrtest
[root@www tmp]#chattr +i attrtest
[root@www tmp]#rm attrtest
rm: remove write-protected regular empty file 'attrtest;?y
rm: cannt remove 'attrtest':Operation not permitted <==操作不许可
#看到了吗?连root也没有办法将这个文件删除呢!赶紧解除设置!
范例:请将该文件的i属性取消
[root@www tmp]#chattr -i attrtest
这个命令是很重要的,尤其是在系统的数据安全上面!由于这些属性都是隐藏的性质,所以需要以lsattr才能看到该属性。其中,个人认为最重要的当属+i与+a这个属性了。+i可以让一个文件无法被改动,对与需要强烈的系统安全的人来说,真是相当重要的。里头还有相当多的属性需要root才能设置。
此外,如果是log file这种的登录文件就更需要+a这个可以增加但是不能修改旧有的数据与删除的参数了。
lsttr [显示文件隐藏属性]
参数:
-a :将隐藏文件的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名
-R :连同子目录的数据一并列出来!
使用chattr 设置后,可以利用lsattr来查看隐藏的属性。不过,这两个命令在使用上必须要特别小心,否则会造成很大的困扰。例如:某天心情好,突然将/etc/shadoe这个重要的密码记录文件设置成为具有i的属性,那么过了若干天后,你突然要新增一个用户,却一直无法添加,赶快将i的属性去掉。