一个骚命令防止你的文件被误删除!

2023-11-03

大家好,我是良许。

文件是我们在电脑里最珍贵的财富,我们经常工作了老半天,然后出来的成果就只是一个文件而已。特别是程序员,我们写了半天的代码,结果也就是一个个代码文件而已。

但是,我们都有过这样惨痛的经历——工作了老半天,结果不小心把文件删除了……

这时候,你的心情是怎样的?痛苦?自责?无奈?

今天良许就给大家介绍一个命令,它将给你的重要文件加一把锁,防止误删除或误修改,为你的宝贝文件保驾护航!

chattr命令简介

这里我们需要使用到一个命令是:chattr ,这个命令在大部分的 Linux 发行版里都有,所以对于它的安装就不赘述了。它的基本用法如下:

$ chattr 操作符 属性 文件名

对于操作符,有以下三种:

  • + :给文件增加属性
  • - :去除文件属性
  • = :设置文件的仅有属性

注意,这里讲的属性不是文件对应的系统属性,而是 chattr 给文件赋予的属性。本文要讲的属性有以下两个:

  • a - 允许给文件追加内容
  • i - 保护模式(不允许删除或修改)

但是,它的属性可以设置很多,有兴趣的小伙伴可以去看下它的 man 手册。

$ man chattr
防止文件被误删除或修改

假如我们现在有个国宝级重要文件 file.txt ,现在我们使用 chattr 对它进行保护。在这里,我们给文件增加 +i 属性:

$ sudo chattr +i file.txt

然后,我们可以使用 lsattr 命令查看它的属性。类似的输出如下:

$ lsattr file.txt
----i---------e---- file.txt

现在,我们来尝试一下,手贱去删除那个文件:

$ rm file.txt
rm: cannot remove 'file.txt': Operation not permitted

咦?不允许删除?难道权限不够?

那好,我 sudo 一下!

$ sudo rm file.txt
rm: cannot remove 'file.txt': Operation not permitted

我 X ,居然还是不能删除?

我们再来试一下,修改文件的内容。

$ echo 'hello world!' >> file.txt
bash: file.txt: Operation not permitted

可以看出来,依然不能对文件进行修改了。

而且,即使你从 GUI 界面手动去删除这个文件,也还是不能耐他几何。

所以,可以看出来,现在这个文件得到了很好的保护,既不能被删除(各种方法都不行),也不能被修改。

那我们要怎么去除这个保护呢?很简单,只需加上 -i 这个选项。

$ sudo chattr -i file.txt

现在,文件又恢复原样了,我们想修改就修改,想删除就删除。

$ echo 'Hello World!' >> file.txt
$ cat file.txt
Hello World!
$ rm file.txt
防止文件夹被误删除或修改

上面讲到的是保护文件,那么文件夹要如何保护呢?

其实也是一样,使用 +i 这个选项。假如我们现在有个 dir1 目录,里面有个 file.txt 文件。我们来对这个文件夹进行保护。

$ sudo chattr -R +i dir1

在这里,我们使用 -R 选项表示可以递归作用到目录里所有的文件(包括子目录)。

现在,我们同样测试一下是否可以被删除或修改。

$ rm -rf dir1
$ sudo rm -rf dir1
rm: cannot remove 'dir1/file.txt': Operation not permitted
$ echo 'hello world!' >> dir1/file.txt
bash: file.txt: Operation not permitted

所以与文件一样,我们成功地对文件夹进行了保护。

防止文件/目录被删除,但允许追加内容

现在我们知道怎么防止文件/目录被误删除或修改了,但是,假如我们不想要文件已有内容被修改,但允许别人在文件末尾追加内容,要怎么操作?

这时候我们就需要使用 +a 这个选项了。

对文件:

$ sudo chattr +a file.txt

对目录:

$ sudo chattr -R +a dir1

现在,我们来确认一下,文件是否可以被追加内容。

$ echo 'Hello World!' >> file.txt
$ echo 'Hello World!' >> dir1/file.txt

我们再使用 cat 命令去查看一下内容:

$ cat file.txt
Hello World!
$ cat dir1/file.txt
Hello World!

可以看出来,文件都是可以被追加的。

但是,file.txt 还有 dir1/file.txt 依然不能被删除。

如果你想去掉可追加的属性,可以使用 -a 这个选项。

对文件:

$ sudo chattr -R -a file.txt

对目录:

$ sudo chattr -R -a dir1/

最后,最近很多小伙伴找我要Linux学习路线图,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:

免费送给大家,只求大家金指给我点个赞!

电子书 | Linux开发学习路线图

也希望有小伙伴能加入我,把这份电子书做得更完美!

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个骚命令防止你的文件被误删除! 的相关文章

随机推荐

  • Vben-admin源码学习(一)——客户端数据持久化

    一 碎碎念 总觉得自己做项目ts写得很别扭 很多用法都不会也不知从何学起 对于项目结构也是似懂非懂 于是开始看Vben源码 确实看得头皮发麻 但是没办法 还是得一步一步来 希望能坚持看完 刚理解了本地数据存储的封装 确实有学到一些新东西 记
  • MySql 常用命令

    MySql中一些常用的命令 备忘 1 Data Control Language 2 Data Definition Language 3 Data Manipulation Language 4 Transaction Control L
  • STM32F407的串口接收不定长数据两种方式HAL库

    文章目录 概要 整体架构流程 不用DMA的方式 使用DMA方式 小结 概要 STM32的串口接收不定长数据 最近在看超子说物联网 感觉太麻烦了不适合直接上手 然后我自己总结了两种方法 1 不利用DMA 2 利用DMA方式 整体架构流程 这个
  • GCC:dereferencing type-punned pointer will break strict-aliasing rules

    linux 编译C 出现了dereferencing type punned pointer will break strict aliasing rules 即 取消对类型指针的引用将打破严格的别名规则 原因 高优化级别下 由于不同类型指
  • c# 跨平台 Avalonia 学习笔记 (一) 搭建和图片引用

    Avalonia 读 阿瓦隆尼亚 官网的资料是 官网 安装Avalonia 打开vs2022 选择管理拓展 点击下载 安装 2 安装完成后 重启VS2022 我们可以看到1和2 其中1是使用MVVM模式开发 2是普通模式开发 我们选择2 建
  • 2022年了,该学C++还是Java?

    最近好多朋友私信我 C 好不好学 学C 好还是Java好 我的回答是 C 不好学 但你觉得C 不好学的话 Java也不好学 因为C 难是难在语言本身 java难是难在各种框架和库 C 学习进阶比较陡 对新手不友好 新手写起来代码 心智负担很
  • THREEJS在场景图上动态标识一些文字方法二(文字精灵sprite)

    threejs文字精灵sprite的实现 1 手动添加文字精灵 2 通过json动态获取文字精灵 并进行交互 3 point模型只表示位置 4 CircleGeometry实现 5 3 PlaneGeometry表示 方法 使用sprite
  • Java基础17--重写与重载

    Java基础17 重写与重载 文章目录 Java基础17 重写与重载 重写 Override 方法的重写规则 Super 关键字的使用 重载 Overload 重写与重载之间的区别 总结 重写 Override 重写是子类对父类的允许访问的
  • python学习笔记(一)---第一个python程序

    1 Windows CMD命令 cd 文件夹名称 进入指定文件夹 dir 查看当前目录下的文件 2 python的运行 在命令行敲入pthon 进入python交互模式 交互模式下的提示符是 gt gt gt 然后就可以敲代码 如print
  • Qt实战之实现图片浏览系统

    引言 本系统支持 自动播放 左右拖动切换 点击列表切换 点击按钮切换 是一个标准的图像浏览软件 Windows 图片浏览器 可以查看当前文件夹下的图片 往上翻 往下翻并且自动播放 此系统增加一个列表 本文福利 莬费领取Qt开发学习资料包 技
  • 期货开户控制风险才能获取更大的利润

    1 其实成为一个优秀的投资者其实并不是很难 不信吗 只要你能树立在市场上生存的正确原理 并坚持恰当地运用它 不要去想着市场会涨还是会跌 就像不要试图预测白云明天的形状和今天有何不同 你只需看到乌云浓重时带一把雨伞出门就行了 金融市场上的语言
  • 如何零基础创建自己的微信小程序

    目录 创建微信小程序 步骤 1 打开浏览器搜索微信公众平台 2 一般是先要注册的 当然已经有的就不需要了 3 选择注册的类型 关于 小程序怎么开发自己的小程序 这个不少人关注的问题 小编针对性的给出详细教程 一共22个步骤 1 进入公众平台
  • shell脚本 dos格式转unix

    bin shdostype dosIFS echo en n b function iterate dir for file in 1 doif f file thentypename file file grep q CRLF echo
  • Java将字符串反转的几种方式

    一 使用 StringBuilder 或 StringBuffer 的 reverse 方法 他们的本质都是调用了它们的父类 AbstractStringBuilder 的 reverse 方法实现的 需要JDK1 8 使用StringBu
  • sqli-labs进阶篇 32关~38关

    本文章主要讲述sqli labs靶场第32关到38关的通关心得 从三方面讲述如何通关 分别是注入点判断 源码分析 注入过程 文章若有不恰当之处 望指出 第三十二关 判断注入点 注入单引号和双引号时 都有转移字符出现 说明这里不能直接用单 双
  • 你可以做到

    我经常听到有些人说 好难呀 我做不到 我想说 你只是不知道你能 最近很累 但是我实在是不想再后悔了 这两个月经历的一些事 打醒了我这只井底之蛙 为什么他们有 而我没有 为什么他们能做到 我却没有做到 最重要的是我一点不比他们差 好累啊 但是
  • 按“enter回车”或者“失去焦点”实现输入框内容的修改

    最近做一个简单的todo应用时 有这样一个场景 某个输入框中点击回车 keyup enter 和失去焦点 blue 这两个操作均可以触发修改数据的接口 然而每次按回车后又会触发 blur 接口会调用两次 但是又的确得加入这两个操作 仅适用一
  • c语言 运算符%的运用,C语言中"++、--"运算符的灵活运用

    第3卷第1期 2003年3月 南京工业职业技术学院学报 Journal of Nanjing Institute of Industry Technology V01 3 1 Mar 2003 C语言中 一一 运算符的灵活运用 李虹 南京工
  • 2021前端面试题总结(持续更新中)

    JavaScript基础部分 typeof返回的数据类型有哪些 4 1 1 typeof为什么对null错误的显示4 1 1 typeof abc 和 typeof abc 都是 string 那么 typeof 是操作符还是函数 4 1
  • 一个骚命令防止你的文件被误删除!

    大家好 我是良许 文件是我们在电脑里最珍贵的财富 我们经常工作了老半天 然后出来的成果就只是一个文件而已 特别是程序员 我们写了半天的代码 结果也就是一个个代码文件而已 但是 我们都有过这样惨痛的经历 工作了老半天 结果不小心把文件删除了