当前位置: 首页 > news >正文

chattr:修改文件的特殊属性

chattr ​命令用于改变文件的特殊属性,也称为"chattr 属性"。这些属性可以提供额外的安全性和控制,如设置文件为不可修改、只允许在文件末尾添加数据等。

一、Linux 文件属性

文件属性是指与文件相关联的元数据,这些属性决定了文件的行为和访问权限。

常见属性

  1. 文件名(Filename) :文件的名称,通常包含字母、数字、下划线和某些特殊字符。
  2. 大小(Size) :文件占用的磁盘空间,通常以字节为单位。
  3. 类型(Type) :文件是普通文件、目录、链接文件、设备文件等。
  4. 权限(Permissions) :定义了用户(所有者)、组和其他用户对文件的访问权限(读、写、执行)。
  5. 所有者(Owner) :文件的所有者,通常是创建该文件的用户。
  6. 所属组(Group) :文件所属的用户组。
  7. 修改时间(Modified Time) :文件内容最后一次被修改的时间。
  8. 访问时间(Access Time) :文件最后一次被访问的时间。
  9. 创建时间(Creation Time) :文件被创建的时间(不是所有文件系统都支持)。

查看、修改属性:

  • ls -l:列出文件的详细信息,包括权限、所有者、大小、修改时间等。
  • chown:更改文件的所有者和/或所属组。
  • chmod:更改文件的权限。
  • touch:更改文件的访问时间和修改时间。
  • chattr:在支持扩展属性的文件系统上,更改文件的特殊属性。

特殊属性(收藏一下,用到再查):

  • a​:⭐Append-only。如果文件设置了这个属性,则只能追加数据到文件末尾,不能更改或删除现有的数据。
  • A​:No atime。设置这个属性后,文件访问时间(atime)不会被更新,即使文件被读取或修改。
  • c​:Compressed。如果文件设置了这个属性,当文件被删除时,文件系统会尝试在文件被完全删除之前对其进行压缩。
  • C​:Compressed when writing。如果文件设置了这个属性,当文件被写入时,文件系统会尝试在写入操作完成之前对其进行压缩。
  • d​:No dump。如果文件设置了这个属性,文件系统在备份操作时不会将文件包含在备份中。
  • i​:⭐Immutable。如果文件设置了这个属性,文件不能被删除、修改或重命名。
  • j​:No journal。如果文件设置了这个属性,文件系统不会在将数据写入磁盘之前将数据写入日志。
  • p​:Project ID。如果文件设置了这个属性,文件将被标记为与特定的项目ID相关联。
  • s​:Sequential access。如果文件设置了这个属性,文件系统会假设文件内容是顺序读取的,并可能优化读取操作。
  • S​:No synchronous updates。如果文件设置了这个属性,文件系统不会立即将数据写入磁盘,而是稍后写入。
  • t​:Set time stamp。如果文件设置了这个属性,文件系统会忽略时间戳的更改。
  • u​:Undeletable。如果文件设置了这个属性,文件不能被删除。
  • F​:😐No force deletion。如果文件设置了这个属性,文件系统在删除文件时不会强制删除。
  • x​:😐No execution。如果文件设置了这个属性,文件不能被执行。

请注意,并不是所有的文件系统都支持所有这些属性。例如,ext2和ext3文件系统不支持a​、c​、d​、i​、j​、p​、s​和u​属性,而ext4文件系统支持所有这些属性,除了F​和x​。

二、chattr 命令用法

格式:

chattr [选项] [+/-属性] 文件名

常用选项:

  • -R​:递归地处理目录及其内容。
  • -f​:强制执行操作,即使文件被设置为不可更改。
  • -v​:显示详细信息,指示发生的操作。

添加文件 i 属性

chattr +i file

移除文件 i 属性

chattr -i file

查看文件属性

lsattr filename

递归处理目录及其内容

chattr -R +i directory

强制执行操作

chattr -f +a filename

显示详细信息

chattr -v +s filename

三、chattr 实例

  1. 设置文件不可修改

    chattr +i file.txt
    

    这会使得file.txt​文件不可被修改、删除或重命名,即使是root用户也不例外。

  2. 移除文件的不可修改属性

    chattr -i file.txt
    

    这会移除file.txt​文件的不可修改属性,之后就可以正常编辑、删除或重命名文件了。

  3. 设置目录及其内容不可修改

    chattr -R +i /path/to/directory
    

    使用-R​递归选项,这会使得指定目录及其所有子文件和子目录都不可被修改。

  4. 仅允许添加文件到目录

    chattr +a /path/to/directory
    

    设置+a​属性后,用户只能向该目录添加文件,不能删除或重命名其中的文件。

  5. 防止修改文件内容但允许删除
    虽然没有直接的属性可以设置这个行为,但是可以通过组合使用+i​和+a​来实现。首先设置+a​属性,然后对文件设置+i​属性,这样文件内容不可修改,但可以通过删除文件的方式来移除文件。

  6. 保护系统关键文件

    chattr +i /etc/passwd
    chattr +i /etc/shadow
    

    保护密码文件不被非授权修改,增强系统安全性。

  7. 防止日志文件被意外清除

    chattr +a /var/log/messages
    

    设置+a​属性后,日志文件只能被追加内容,不能被清空或删除。

  8. 批量设置文件属性
    可以结合find​命令来批量设置文件属性,例如,设置所有.txt​文件为不可修改:

    find /path/to/search -type f -name "*.txt" -exec chattr +i {} \;
    
  9. 查看文件属性
    虽然不是chattr​的功能,但常与chattr​配合使用的lsattr​命令可以用来查看文件属性:

    lsattr file.txt
    

使用chattr​时需要注意,这个命令只适用于ext2、ext3和ext4文件系统。对于其他文件系统,如XFS、Btrfs等,chattr​可能不起作用或部分功能不可用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【BFS专题】— 解决拓扑排序问题
  • 合宙Air201模组LuatOS:PWRKEY控制,一键解决解决关机难问题
  • 数据权限的设计与实现系列9——前端筛选器组件Everright-filter集成框架开发2
  • TCP套接字【网络】
  • zabbix之钉钉告警
  • 【Qnx】使用ClockCycles完成计时功能
  • 零拷贝技术在现代编程语言和中间件中的应用
  • ROS 编程入门的介绍
  • LabVIEW 可以同时支持脚本编程和图形编程
  • 细胞分裂检测系统源码分享
  • 在线包装盒型生成工具,各种异型包装盒型,PDF导出方便
  • Edegex Foundry docker和源码安装
  • 快速入门Vue
  • 系统架构设计师:系统架构设计
  • 深入理解Redis:缓存穿透、缓存击穿、缓存雪崩及双写一致性
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Codepen 每日精选(2018-3-25)
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • nginx 负载服务器优化
  • Protobuf3语言指南
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 代理模式
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 蓝海存储开关机注意事项总结
  • 深度学习入门:10门免费线上课程推荐
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 你对linux中grep命令知道多少?
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • MyCAT水平分库
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #{}和${}的区别?
  • #预处理和函数的对比以及条件编译
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (java)关于Thread的挂起和恢复
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (四)汇编语言——简单程序
  • (转)shell中括号的特殊用法 linux if多条件判断
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • *2 echo、printf、mkdir命令的应用
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Core中如何集成RabbitMQ
  • .NET 常见的偏门问题
  • .net 设置默认首页
  • .NET中winform传递参数至Url并获得返回值或文件
  • ??eclipse的安装配置问题!??
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案