通过chattr设置档案的隐藏权限。
通过lsattr显示档案的隐藏权限。
chattr [+-=] [ASacdistu] [文件或目录名称]
参数说明:
+-=:分别是"+"(增加)、"-"(减少)、"="(设定)属性
A:当设定了属性A,这个文件(或目录)的存取时间atime(access)将不可被修改,可避免诸如手提电脑容易产生磁盘I/O错误的情况;
S:这个功能有点类似sync,是将数据同步写入磁盘中,可以有效避免数据流失;
a:设定a后,这个文件将只能增加数据而不能删除,只有root才能设定这个属性;
c:设定这个属性后,将会自动将此文件压缩,在读取时自动解压缩。但是在存储的时候,会现进行压缩在存储(对于大文件很有用);
d:当dump(备份)程序执行时,设定d属性将可使该文件(或目录)具有dump功效;
i:这个参数可以让一个文件”不能被删除、更名、设定链接,也无法写入数据,对于系统安全有很大的助益
j:当使用ext3文件系统格式时,设定j属性将使文件在写入时先记录在日志中,但是当filesystem设定参数为data=journalled时,由于已经设定了日志,所以这个属性无效
s:当文件设定了s参数时,它会被完全移出这个硬盘空间
u:与s相反,当使用u配置文件时,数据内容其实还可以存在于磁盘中,可以用来取消删除
示例:
chattr +i /etc/shadow //该文件无法更动了
chattr -i /etc/shadow //解除该属性
这个指令比较重要,尤其是在系统的安全方面。由于这些属性是隐藏性质,所以需要使用lsattr才能看到这些属性。
lsattr [-aR]
参数说明:
-a :将隐藏文件的属性也显示出来
-R :连同子目录的数据一并显示出来
j :当使用 ext3 这个档案系统格式时,设定 j 属性将会使档案在写入时先记录在 journal 中!
但是当 filesystem 设定参数为 data=journalled 时,由于已经设定了日志了,所以这个属性无效!
如果一个文件设置了 ’j'属性,那么它所有的数据在写入文件本身之前,写入到ext3文件系统日志中,如果该文件系统挂载的时候使用了"data=ordered" 或"data=writeback"选项。
当文件系统采用"data=journal"选项挂载时,所有文件数据已经记录日志,因此这个属性不起作用。
仅仅超级用户或者拥有CAP_SYS_RESOURCE能力的进程可以设置和删除该属性。
chattr的命令是在一次很偶然的情况下发现的,当时发现我不能删除一个文件,无论使用什么方法,使用什么用户,都无法删除,给出的提示是:
rm: cannot remove `chattr.man': Operation not permitted
后来才知道是chattr的搞的鬼。今天在看《Advanced Bash-ScriptingGuide》一书中又提到了chattr命令,并给出了一些之前没看到过的参数,因此man了一把chattr,参数还不少,翻译是对命令解释的精读,因此我就尝试翻译一下吧。
名字:
chattr - 在EXT2文件系统上改变文件属性(EXT3同样适应,译者注)
摘要:
chattr [ -RV ] [ -v version ] [ mode ] files...
描述:
chattr 改变EXT2文件系统上的一个文件的属性
参数符号格式是:+-=[ASacDdIijsTtu].
操作符 '+' 表示将选中的属性增加到指定的文件上; '-' 则表示删除该属性;
'=' 表示文件仅仅设置现在选择的属性(之前设置的属性全部移除,译者注)
字母 'acdijsuADST' 分别表示下面的属性:
仅追加(a), 压缩 (c), 不dump (d),不可更改 (i), 数据日志 (j), 安全删除 (s), 非尾部合并(t), 不可删除 (u), 不更新atime (A), 同步目录更新 (D),同步更新 (S), and top of directoryhierarchy (T).
选项:
-R 递归改变目录和目录的内容. 符号链接递归时不进入。
-V 冗余命令输出和打印程序版本
-v version
设置文件的版本(代)号
属性解释:
当访问一个设置了 ‘A' 属性的文件时,atime记录并不修改。这可以在笔记本上避免大量的磁盘I/O操作(特意指出笔记本,是考虑省电?译者注).
如果文件设置了 ‘a’ 属性,数据只能采用追加模式,仅仅超级用户或者拥有CAP_LINUX_IMMUTABLE能力的进程可以设置和删除该属性。
如果文件设置了 ‘c’ 属性, 那么当这个文件在进行写操作时,它将自动被压缩,并且在读的时候, 自动解压.
在存储到磁盘时先压缩数据。
如果一个目录设置了 ‘D'属性,任何改变将同步到磁盘;这等价于mount命令中的dirsync选项:同步目录
如果一个文件设置了 ‘d’ 属性,dump(8)运行时,不会备份它(不dump改文件,译者注)
‘E’ 属性目前是一个实验性质的压缩选项,用来标记压缩出现错误的文件。目前它还不能使用chattr来设置或者重置,虽然能使用lsattr命令来显示。
‘I’ 属性用在h树(htree)代码上,用来标记那些使用hash数隐藏索引的目录。目前它还不能使用chattr来设置或者重置,虽然能使用lsattr命令来显示。
如果一个文件设置了 ‘i' 属性,那么这个文件将不能被修改,不能被删除、重命名、链接该文件、写数据到文件。仅仅超级用户或者拥有CAP_LINUX_IMMUTABLE能力的进程可以设置和删除该属性。
如果一个文件设置了 ’j'属性,那么它所有的数据在写入文件本身之前,写入到ext3文件系统日志中,如果该文件系统挂载的时候使用了"data=ordered" 或"data=writeback"选项。当文件系统采用"data=journal"选项挂载时,所有文件数据已经记录日志,因此这个属性不起作用。仅仅超级用户或者拥有CAP_SYS_RESOURCE能力的进程可以设置和删除该属性。
设置了 ‘s’ 属性的文件被删除时,它所在磁盘上的块将全部被0填充,这是一个安全属性。
当一个设置了 ‘S’ 属性的文件被修改时,将同步到磁盘;它等价于mount命令的‘sync‘选项。
如果一个目录设置了 ‘T’ 属性,它将被视为目录结构的顶极目录,这是为了Orlov块的分配(kernel 2.5.46以上版本使用)
如果一个文件设置了 ‘t’ 属性,它和其他文件合并时,该文件的末尾不会有部分块碎片(为支持尾部合并的文件系统使用)。
这对某些程序是必须的,比如LILO,它直接读取文件系统,但是他并不理解尾部合并文件。
主意:写这个文档的时候,ext2,ext3还不支持尾部合并(tail-merging)
如果文件设置了 ‘u’ 属性, 那么当这个文件被删除后, 这个文件的内容还可以被恢
复。它允许用户询问恢复删除方式。(目前还不知道如何恢复删除一个文件,译者注)
‘X’ 属性是一个实验性的压缩补丁,用来标记一个能直接访问的裸内容压缩文件。目前它还不能使用chattr来设置或者重置,虽然能使用lsattr命令来显示。
‘Z’ 属性是一个实验性的压缩补丁,用来标记一个脏的压缩文件。目前它还不能使用chattr来设置或者重置,虽然能使用lsattr命令来显示。
[root@roth-01 ~]# chattr +j /mnt/gfs2/gfs2_dir/newfile [root@roth-01 ~]# lsattr /mnt/gfs2/gfs2_dir ---------j--- /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]# chattr -j /mnt/gfs2/gfs2_dir/newfile [root@roth-01 ~]# lsattr /mnt/gfs2/gfs2_dir ------------- /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]# chattr -j /mnt/gfs2/gfs2_dir [root@roth-01 ~]# lsattr /mnt/gfs2 ---------j--- /mnt/gfs2/gfs2_dir [root@roth-01 ~]# touch /mnt/gfs2/gfs2_dir/newfile [root@roth-01 ~]# lsattr /mnt/gfs2/gfs2_dir ---------j--- /mnt/gfs2/gfs2_dir/newfile
http://docs.redhat.com/docs/zh-CN/Red_Hat_Enterprise_Linux/5/html/Global_File_System_2/s1-manage-data-journal.html
4、更改下列文件权限,使任何人没有更改账户权限:
chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow