chattr的作用就是修改ext3/ext2文件系统的权限,它只能被超级用户使用,它的功能就是设置文件的隐藏属性,隐藏属性的设置对系统的安全性是有很大帮助的。
chattr的用法:
chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录
主要参数
-R:递归处理所有的文件及子目录。
-V:详细显示修改内容,并打印输出。
-:失效属性。
+:激活属性。
= :指定属性。
A:Atime,告诉系统不要修改对这个文件的最后访问时间。
S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
D:检查压缩文件中的错误。
d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。
C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
s:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。
u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
-R:递归处理所有的文件及子目录。
-V:详细显示修改内容,并打印输出。
-:失效属性。
+:激活属性。
= :指定属性。
A:Atime,告诉系统不要修改对这个文件的最后访问时间。
S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
D:检查压缩文件中的错误。
d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。
C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
s:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。
u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
但是其中常用的的选项只有a和i两个。
例如:# ls -l
-rw-r--r-- 1 root root 0 Mar 15 16:26 chattrtest
-rw-r--r-- 1 root root 0 Mar 15 16:26 chattrtest
#chattr +i chattrtest
# rm chattrtest
rm: remove write-protected regular empty file `chattrtest'? y
rm: cannot remove `chattrtest': Operation not permitted
rm: remove write-protected regular empty file `chattrtest'? y
rm: cannot remove `chattrtest': Operation not permitted
提示无法删除,而且是root也不能删除。
只有解除设置之后才能删除:#chattr -i chattrtest
当我们设置了隐藏的属性之后,怎样才能查看呢?
使用lsattr命令:
#lsattr -a chattrtest
----i-------- chattrtest
lsattr的作用是显示文件的隐藏属性,用法是:lsattr [-aR] 文件或目录
参数:-a 将隐藏文件的属性页显示出来
-R连同子目录的数据也一并列出来
这两个命令在使用上要特别的小心,不然会造成很大的麻烦,例如将/etc/shadow密码文件设置了i属性,之后我们想增加用户,将会无法增加进去,那么我们只要去处i属性即可。
本文转自 zhangzj1030 51CTO博客,原文链接:http://blog.51cto.com/tech110/284203