一個騷命令防止你的文件被誤刪除!

来源:https://www.cnblogs.com/yychuyu/archive/2020/06/02/13033122.html
-Advertisement-
Play Games

大家好,我是良許。 文件是我們在電腦里最珍貴的財富,我們經常工作了老半天,然後出來的成果就只是一個文件而已。特別是程式員,我們寫了半天的代碼,結果也就是一個個代碼文件而已。 但是,我們都有過這樣慘痛的經歷——工作了老半天,結果不小心把文件刪除了…… 這時候,你的心情是怎樣的?痛苦?自責?無奈? 今天 ...


大家好,我是良許。

文件是我們在電腦里最珍貴的財富,我們經常工作了老半天,然後出來的成果就只是一個文件而已。特別是程式員,我們寫了半天的代碼,結果也就是一個個代碼文件而已。

但是,我們都有過這樣慘痛的經歷——工作了老半天,結果不小心把文件刪除了……

這時候,你的心情是怎樣的?痛苦?自責?無奈?

今天良許就給大家介紹一個命令,它將給你的重要文件加一把鎖,防止誤刪除或誤修改,為你的寶貝文件保駕護航!

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

有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • LINQ 的優勢並不是提供了什麼新功能,而是讓我們能夠用更新、更簡單、更優雅的方法來實現原有的功能。不過通常來講,這類功能所帶來的就是對性能上的影響——LINQ 也不例外。本篇文章的主要目的就是讓你瞭解 LINQ 查詢對性能的影響。我們將介紹最基本的 LINQ 性能分析方法,並提供一些數據。還會給出 ...
  • 搞學習 猿學:http://yuanxue365.com/簡書:https://www.jianshu.com/doyoudo:http://www.doyoudo.com/好知網:http://www.howzhi.com/學小易(大學生搜題)https://www.51xuexiaoyi.com ...
  • 上一篇(https://www.cnblogs.com/meowv/p/12974439.html)完成了全網各大平臺的熱點新聞數據的抓取,本篇繼續圍繞抓取完成後的操作做一個提醒。當每次抓取完數據後,自動發送郵件進行提醒。 在開始正題之前還是先玩一玩之前的說到卻沒有用到的一個庫PuppeteerSh ...
  • [導讀] 前文分析了Linux設備驅動的驅動模型,本文來聊聊Platform_driver/Platform_device這個類。做嵌入式Linux的驅動,這個也是繞不開的,所以來學習分析總結一下。 上文閱讀: 註:代碼分析基於linux-5.4.31 為什麼有Platform_driver 前文談 ...
  • 預設/dev下是沒有spi設備的JetPack版本JetPack-L4T-3.2.1-linux-x64_b23.run下載Kernelsudo git clone http://github.com/jetsonhacks/buildJetsonTX2Kernel.gitgit checkout ... ...
  • [導讀] Linux設備林林總總,嵌入式開發一個繞不開的話題就是設備驅動開發,在做具體設備驅動開發之前,有必要對Linux設驅動模型有一個相對清晰的認識,將會幫助驅動開發,明白具體驅動介面操作符相應都做些什麼。 個人對於驅動模型的理解概括起來就是一句話:利用面向對象編程思想,實現設備分層管理軟體體系 ...
  • 容器雲技術 Docker引擎的安裝 準備兩台虛擬機,一臺為docker主節點,一臺為docker客戶端,安裝CentOS7.5_1804系統 基礎環境配置 網卡配置(master節點) 修改docker主節點主機名 # hostnamectl set-hostname master 配置網卡 # v ...
  • help命令 功能說明:查看shell內部命令的幫助信息 用法 help [內部命令名] 示例1:不帶任何選項的help命令顯示所有的shell內部命令 [root@node1 ~]# help 示例2:顯示cd命令的使用方法 [root@node1 ~]# help cd cd: cd [-L|[ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...