【linux命令】【重要】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 的属性拿掉吧!
1

有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

 

详细可以参考鸟哥私房菜http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager_4.php

代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!