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 显示文件版本

Linux命令之chattr的更多相关文章

  1. 2018/03/08 每日一个Linux命令 之 chattr/lsattr

    每日一个Linux命令 2018-03-08 Linux 命令 chattr/lsattr chattr [-参数] [+/-属性] [文件或者目录] 经过今天没有对铃,粥熬糊了,我就知道...... ...

  2. linux命令 chattr超级权限控件

    linux命令:chattr 1.作用 修改ext2和ext3文件系统属性(attribute),使用权限超级用户.   linux命令:chattr 1.作用修改ext2和ext3文件系统属性(at ...

  3. Linux命令随笔

    Linux命令总结 man ==命令帮助; help ==命令的帮助(bash的内置命令); ls ==list,查看目录列表; -ld:查看目录权限; -l:(long)长格式显示属性; -F:给不 ...

  4. Linux命令整理中...

    Linux命令整理中... 最常用命令(我最近最常用的一般放在前面tipsbychsry) clear 清屏 date 显示日期 cal 显示日历 cal 2014 显示2014年的日历 shutdo ...

  5. LINUX命令总结 -------来自 水滴娃娃 的CSDN

    LINUX命令总结 标签: LINUX命令总结 2014-01-27 15:54 41039人阅读 评论(1) 收藏 举报  分类: linux(1)  版权声明:本文为博主原创文章,未经博主允许不得 ...

  6. 嵌入式开发应该掌握的一些Linux命令

    Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...

  7. Linux命令(持续更新ing)

    *.命令语法:  a.在进行参数设定时,通常为“-”号,若为完整参数名称,则输入“--”符号;  b.指令太长的时候,可以使用“\”符号使指令连续到下一行;  c.各种符号的意义:    ''     ...

  8. linux 命令总结(转载)

    linux 命令总结(转载) 1. 永久更改ip ifconfig eth0 新ip 然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip 2.从Lin ...

  9. 运维必须掌握的150个Linux命令

    线上查询及帮助命令(1个)man 目录操作命令(6个)ls tree pwd mkdir rmdir cd 文件操作命令(7个)touch cp mv rm ln find rename 文件查看及处 ...

随机推荐

  1. [洛谷P3628] [APIO2010]特别行动队

    洛谷题目链接:[APIO2010]特别行动队 题目描述 你有一支由 n 名预备役士兵组成的部队,士兵从 1 到 \(n\) 编号,要将他们拆分 成若干特别行动队调入战场.出于默契的考虑,同一支特别行动 ...

  2. python读文件和写入文件复习

    with open("name.txt",'r') as read_file: for name in read_file: list_name = (name.split(',' ...

  3. bzoj 1705: [Usaco2007 Nov]Telephone Wire 架设电话线——dp

    Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= ...

  4. CCC2018游记

    day (-1) 晚上睡觉没盖被子 day 0  2018年2月13日 下午放学回来感到一阵头痛,一量体温结果发烧了,感觉很蓝瘦,居然在CCC前一天生病. 本来注册了账号想打practise的,结果又 ...

  5. 解决java在对MySQL插入数据时出现乱码问题

    1.在连接数据库的时候请注意, 最使用连接连接数据库的时候,必须在后面追加上编码的设置:useUnicode=true&characterEncoding=UTF-8,如下图所示. 参考连接: ...

  6. ImageView设置边框 以及内部图片居中显示 在AndroidStudio中添加shape.xml文件

    效果如图 边框设置:shape文件 <shape xmlns:android="http://schemas.android.com/apk/res/android"> ...

  7. Spring的BeanFactory体系结构(一)

    本文使用的代码是: Spring 3.0 接 触Spring也有很长一段时间了.但是,每次都是直接使用Spring直接提供的API,时间久了,自然也会想探索Spring里面的奥秘.今天上 午,整理出了 ...

  8. GBK UTF-16 UTF-8 编码表

    GBK   UTF-16 UTF-8 ================== D2BB  4E00  E4 B8 80  一 B6A1  4E01  E4 B8 81  丁 C6DF  4E03  E4 ...

  9. Python模块学习 - Functools

    Functools模块 Higher-order functions and operations on callable objects,看这个标题我都是懵逼的,这都是啥啥啥啊,赶紧拿出百度翻译:可 ...

  10. MongoDB的安装配置、基本操作及Perl操作MongoDB

    MongoDB的安装配置.基本操作及Perl操作MongoDB http://www.myhack58.com/Article/60/63/2014/42353.htm