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. centos设置tomcat开机启动

    1.编辑开机启动脚本 vi /etc/init.d/tomcat8 #!/bin/bash # tomcat8:start|stop|restart # chkconfig: 345 90 10 # ...

  2. AndroidStudio获得发布版安全码SHA1

    耗了一下午才搞定 在cmd中: 1.打开keytool的目录:即JDK的安装目录 2.输入口令: (E:\tenyears\tenyears\app是keystore文件的目录)

  3. js中的apply、call、bind

    每个函数都包含两个非继承而来的方法,call()和apply(),可以改变函数内部this的指向 1.apply 用另一个对象替换当前对象,接收两个参数,第一个参数表示需要绑定的this变量,第二个参 ...

  4. JSP九大内置对象,七大动作,三大指令

    JSP之九大内置对象 隐藏对象入门探索 Servlet 和JSP中输出数据都需要使用out对象.Servlet 中的out对象是通过getWriter()方法获取的.而JSP中没有定义out对象却可以 ...

  5. msf web脚本反弹shell

    msf > msfpayload php/reverse_php LHOST=x.x.x.x LPORT=2333 R > re.php msf > use multi/handle ...

  6. 天气api接口

    python调用天气api接口: http://www.sojson.com/open/api/weather/json.shtml?city=北京 http://www.sojson.com/blo ...

  7. 在Perl中采用open进行管道操作

    在Perl中采用open进行管道操作 http://blog.sina.com.cn/s/blog_4840fe2a0100b8na.html perl exec管道和子进程 http://blog. ...

  8. bzoj 1191 超级英雄Hero

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1191 题解: 裸匈牙利,注意如果出现找不到增广路的情况就直接break #include& ...

  9. FineReport——JS二次开发(自定义翻页按钮)

    FR允许自定义工具栏上面的按钮,并提交JS方法: 对于翻页功能,大概有首页,下一页,上一页,最后一页,以及跳转页等功能. 不得不说的是,在HTML页面自定义的按钮如何获取到报表模板,通过FR提供的JS ...

  10. linux命令行任务管理

    今天看到了linux命令行的任务管理命令感觉很实用: 1.ctrl+z  将当前前台执行的任务放到后台并暂停 2.fg恢复上次放入后台的任务 这两个命令组合起来很实用,比如在linux命令行中写pyt ...