zoukankan      html  css  js  c++  java
  • Linux命令之chattr

    chattr [-RVf] [-v version] [mode] files…

      chattr修改文件在Linux第二扩展文件系统(E2fs)上的特有属性。符号模式(mode)有+-=[aAcCdDeijsStTu]。

           操作符+用来增加选定的属性;-用来撤消选定的属性;=用来指定文件的唯一属性。字母’aAcCdDeijsStTu’选择文件的新属性:仅附加(a),不更新atime(A),压缩(c),不受写时拷贝影响(C),没有转储(d),同步目录更新(D),扩展格式(e),不可变(i),数据日志(j),安全删除(s),同步更新(S),不支持尾部合并(t),目录层次结构(T)和不可删除(u)。

           以下属性是只读的,可以由lsattr(1)列出,但不能通过chattr修改:压缩错误(E),大文件(h),索引目录(l),内联数据(N),压缩原始访问(X),压缩脏文件(Z)。

           并非所有文件系统都支持或使用所有标志;有关特定于文件系统的详细信息,请参阅特定于文件系统的手册页,例如btrfs(5),ext4(5)和xfs(5)。

    (1).选项

    -R 以递归方式修改目录及其下内容属性
    -V 详尽给出chattr的输出信息,并打印出程序版本
    -f 不列出大多数错误信息
    -v version 设置文件系统的版本

    (2).属性

             具有a属性集的文件只能在追加模式下打开以进入写入。只有超级用户或具有CAP_LINUX_IMMUTABLE功能的进程才能进行设置或清楚此属性。

             访问具有A属性集的文件时,不会修改其atime记录。这可以避免笔记本电脑系统的一定数量的磁盘I/O。

             设置了c属性的文件由内核自动压缩到磁盘上。从此文件读取将返回未压缩的数据,写入文件会先压缩数据再将数据存储到磁盘。注意:请务必了解(3).缺陷与限制

             设置了C属性的文件不会受写时拷贝更新的影响。仅在执行写时拷贝的文件系统上支持此标志。注意:对于dtrfs,应该在新文件或空文件上设置C标志。如果在已有数据块的文件上设置它,则当分配给文件的块完全稳定时,它是未定义的(?)。C标志在目录上设置,它对目录没有影响,但在该目录下中创建的新文件将是No_COW属性。

             设置了d属性的文件不能对其运行dump(8)程序进行备份。

             当修改了设置D属性的目录时,会在磁盘上同步写入更改;这相当于已用与文件子集的’dirsync’挂载选项。

             e属性表示该文件正在使用扩展区来映射磁盘上的块。可能无法使用chattr(1)删除它。

             实验性压缩补丁使用E属性来指示压缩文件具有压缩错误。它可能不会使用chattr(1)设置或重置,尽管它可以lsattr(1)显示。

             h属性表示文件以文件系统块大小为单位而不是以扇区为单位存储块,并且意味着该文件(或一次)大于2TB。它可能不会使用chattr(1)设置或重置,尽管它可以由lsattr显示。

             无法修改具有i属性的文件:无法删除或重命名文件,无法为此文件创建链接,也无法将数据写入文件。只有超级用户或拥有CAP_LINUX_IMMUTABLE功能的进程才能设置或清除此属性。

             Htree代码使用I属性来指示使用散列树索引目录。它可能不会使用chattr(1)设置或重置,尽管它可以由lsattr(1)显示。

             如果文件系统使用”data=ordered”或”data=writeback”选项挂载,则具有j属性的文件会在写入文件本身之前将其所有数据写入ext3或ext4日志。当使用”data=journal”选项挂载文件系统时,所有文件数据都已记录,并且此属性不起作用。只有超级用户或拥有CAP_SYS_RESOURCE功能的进程才能设置或清除此属性。

             设置了N属性的文件表示该文件在inode本身内具有内联存储的数据。它不能使用chattr(1)设置或重置,尽管它可以由lsattr(1)显示。

             删除具有s属性集的文件时,其块将归零并写入磁盘。注意:请务必了解(3).缺陷与限制

             修改具有S属性集的文件时,会在磁盘上同步写入更改;这相当于应用于文件子集的’sync’挂载选项。

             具有t属性的文件在文件末尾将没有与其他文件合并生成的部分块片段(对于那些支持尾部合并的文件系统)。这对于例如LILO这种直接读取文件系统和不能理解合并文件的应用程序是必要的。注意:在本文中(此时系统是CentOS7.2),ext2和ext3文件系统不支持尾部合并。

             对于Orlov块分配器,具有T属性的目录将被视为目录层次结构顶层。这是对于ext3和ext4使用的块分配器的一个提示,表明该目录下的子目录不相关,因此为了分配的目的应该分开。例如,在/home目录中设置T属性是一个非常好的主意,以便/home/john和/home/mary被放置在单独的块组中。对于未设置此属性的目录,Orlov块分配器将尽可能将子目录分组在一起。

             当具有u属性集的文件被删除时,其内容被保留。这允许用户请求回复删除。注意:请务必了解(3).缺陷与限制

             实验压缩补丁使用X属性来指示可以直接访问压缩文件的原始内容。它目前可能使用chattr(1)来设置或重置,尽管它可以由lsattr(1)显示。

             实验压缩补丁使用Z属性来指示压缩文件是脏的。它可能不会使用chattr(1)设置或重置,尽管它可以由lsattr(1)显示。

    (3).缺陷与限制

             在当前主流Linux内核中实现的ext2、ext3和ext4文件系统不遵循c,s,u属性。

             j选项仅在文件系统挂载在ext3或ext4时才有用。

             D选项仅在Linux内核2.5.19及以上版本才有用。

    (4).实例

    创建一个root用户都无法删除的文件

    [root@xuexi ~]# touch 1
    [root@xuexi ~]# ll 1
    -rw-r--r--. 1 root root 0 1月   9 13:21 1
    [root@xuexi ~]# lsattr 1
    ---------------- 1
    [root@xuexi ~]# chattr +i 1
    [root@xuexi ~]# ll 1
    -rw-r--r--. 1 root root 0 1月   9 13:21 1
    [root@xuexi ~]# lsattr 1
    ----i----------- 1
    [root@xuexi ~]# rm -rf 1
    rm: 无法删除"1": 不允许的操作
    

    如果想要删除必须使用命令将第二文件系统的特有属性i去除

    [root@xuexi ~]# chattr -i 1
    [root@xuexi ~]# ll 1
    -rw-r--r--. 1 root root 0 1月   9 13:21 1
    [root@xuexi ~]# lsattr 1
    ---------------- 1
    [root@xuexi ~]# rm 1
    rm:是否删除普通空文件 "1"?y
    

     (5).扩展

    查看第二文件系统的属性lsattr [-RVadv] [files]

    -R 递归目录及其下内容的属性

    -V 显示程序版本

    -a 列出所有,包括.开头的文件属性

    -d 列出目录属性,而不是其下内容属性

    -v 显示文件版本

  • 相关阅读:
    LeetCode-018-四数之和
    LeetCode-017-电话号码的字母组合
    LeetCode-016-最接近的三数之和
    LeetCode-015-三数之和
    LeetCode-014-最长公共前缀
    LeetCode-013-罗马数字转整数
    LeetCode-012-整数转罗马数字
    LeetCode-011-盛最多水的容器
    LeetCode-010-正则表达式匹配
    [leetcode]103. Binary Tree Zigzag Level Order Traversal二叉树Z形遍历
  • 原文地址:https://www.cnblogs.com/diantong/p/9962641.html
Copyright © 2011-2022 走看看