Centos chattr lsattr 文件系统的隐藏权限命令

浏览次数:2616 关键词 ( 文件系统  命令  权限  Centos  )

通过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命令来显示。

Linux文件系统的隐藏权限:chattr lsattr(journal) - zhuzhu - 五事九思


[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