linux隐藏属性chattr, lsattr
隐藏属性:
什么?档案还有隐藏属性?光是那九个权限就快要疯掉了,竟然还有隐藏属性,真是要命~ 但是没办法,就是有档案的隐藏属性存在啊!不过,这些隐藏的属性确实对于系统有很大的帮助的~ 尤其是在系统安全 (Security) 上面,重要的紧呢!不过要先强调的是,底下的chattr指令只能在Ext2/Ext3的档案系统上面生效, 其他的档案系统可能就无法支援这个指令了。底下我们就来谈一谈如何设定与检查这些隐藏的属性吧!
- chattr (设定档案隐藏属性)
[[email protected] ~]# chattr [+-=][ASacdistu] 档案或目录名称 选项与参数: + :增加某一个特殊参数,其他原本存在参数则不动。 - :移除某一个特殊参数,其他原本存在参数则不动。 = :设定一定,且仅有后面接的参数 A :当设定了 A 这个属性时,若你有存取此档案(或目录)时,他的存取时间 atime 将不会被修改,可避免I/O较慢的机器过度的存取磁碟。这对速度较慢的电脑有帮助 S :一般档案是非同步写入磁碟的(原理请参考第五章sync的说明),如果加上 S 这个 属性时,当你进行任何档案的修改,该更动会‘同步’写入磁碟中。 a :当设定 a 之后,这个档案将只能增加资料,而不能删除也不能修改资料,只有root 才能设定这个属性。 c :这个属性设定之后,将会自动的将此档案‘压缩’,在读取的时候将会自动解压缩, 但是在储存的时候,将会先进行压缩后再储存(看来对于大档案似乎蛮有用的!) d :当 dump 程序被执行的时候,设定 d 属性将可使该档案(或目录)不会被 dump 备份 i :这个 i 可就很厉害了!他可以让一个档案‘不能被删除、改名、设定连结也无法 写入或新增资料!’对于系统安全性有相当大的助益!只有 root 能设定此属性 s :当档案设定了 s 属性时,如果这个档案被删除,他将会被完全的移除出这个硬碟 空间,所以如果误删了,完全无法救回来了喔! u :与 s 相反的,当使用 u 来设定档案时,如果该档案被删除了,则资料内容其实还 存在磁碟中,可以使用来救援该档案喔! 注意:属性设定常见的是 a 与 i 的设定值,而且很多设定值必须要身为 root 才能设定 范例:请尝试到/tmp底下建立档案,并加入 i 的参数,尝试删除看看。 [[email protected] ~]# cd /tmp [[email protected] tmp]# touch attrtest ==建立一个空档案 [[email protected] tmp]# chattr +i attrtest ==给予 i 的属性 [[email protected] tmp]# rm attrtest ==尝试删除看看 rm: remove write-protected regular empty file `attrtest'? y rm: cannot remove `attrtest': Operation not permitted ==操作不许可 # 看到了吗?呼呼!连 root 也没有办法将这个档案删除呢!赶紧解除设定! <span class="term_hd">范例:请将该档案的 i 属性取消!</span> [[email protected] tmp]# chattr -i attrtest |
这个指令是很重要的,尤其是在系统的资料安全上面!由于这些属性是隐藏的性质,所以需要以lsattr 才能看到该属性呦!其中,个人认为最重要的当属 +i 与 +a 这个属性了。+i 可以让一个档案无法被更动,对于需要强烈的系统安全的人来说, 真是相当的重要的!里头还有相当多的属性是需要 root 才能设定的呢!
此外,如果是 log file 这种的登录档,就更需要 +a 这个可以增加,但是不能修改旧有的资料与删除的参数了!
- lsattr (显示档案隐藏属性)命令是显示chattr命令设置的文件属性。
[[email protected] ~]# lsattr [-adR] 档案或目录 选项与参数: -a :将隐藏档的属性也秀出来; -d :如果接的是目录,仅列出目录本身的属性而非目录内的档名; -R :连同子目录的资料也一并列出来! [[email protected] tmp]# chattr +aij attrtest [[email protected] tmp]# lsattr attrtest ----ia---j--- attrtest |
使用 chattr 设定后,可以利用 lsattr 来查阅隐藏的属性。不过, 这两个指令在使用上必须要特别小心,否则会造成很大的困扰。例如:某天你心情好,突然将 /etc/shadow 这个重要的密码记录档案给他设定成为具有 i 的属性,那么过了若干天之后, 你突然要新增使用者,却一直无法新增!别怀疑,赶快去将 i 的属性拿掉吧!