EqLlyHJ5w6,694hQRgLWm
教你避免如何在Linux系统中防止文件和目录被意外的删除或修改方法教你避免如何在Linux系统中防止文件和目录被意外的删除或修改方法 有时,我会不小心的按下SHIFT+DELETE来删除我的文件数据。是的,我是个笨蛋,没有再次确认下我实际准备要删除的东西。而且我太笨或者说太懒,没有备份我的文件数据。结果呢?数据丢失了!在一瞬间就丢失了。 这种事时不时就会发生在我身上。如果你和我一样,有个好消息告诉你。有个简单又有用的命令行工具叫chattr(ChangeAttribute 的缩写),在类 Unix 等发行版中,能够用来防止文件和目录被意外的删除或修改。 通过给文件或目录添加或删除某些属性,来保证用户不能删除或修改这些文件和目录,不管是有意的还是无意的,甚至 root 用户也不行。听起来很有用,是不是? 在这篇简短的教程中,我们一起来看看怎么在实际应用中使用 Linux中防止文件和目录被意外删除和修改 默认,chattr 默认语法是: chattr [operator] [switch] [file] chattr 操作符 操作符 操作符 chattr a A c C d D e i j P s S t T u 在本教程中,我们将讨论两个属性的使用,即 防止文件被意外删除和修改 我先在我的当前目录创建一个file.txt文件。 $ touch file.txt 现在,我将给文件应用 $ 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 rm file.txt 输出: # 不能删除文件,非法操作 rm: cannot remove 'file.txt': Operation not permitted 我们试试追加写内容到这个文本文件: $ echo 'Hello World!' >> file.txt 输出: # 非法操作 bash: file.txt: Operation not permitted 试试 $ sudo echo 'Hello World!' >> file.txt 输出: # 非法操作 bash: file.txt: Operation not permitted 你应该注意到了,我们不能删除或修改这个文件,甚至 root 用户或者文件所有者也不行。 要撤销属性,使用 $ sudo chattr -i file.txt 现在,这不可改变属性已经被删除掉了。你现在可以删除或修改这个文件了。 $ rm file.txt 类似的,你能够限制目录被意外删除或修改,如下一节所述。 防止目录被意外删除和修改 创建一个 $ mkdir dir1 && touch dir1/file.txt 现在,让目录及其内容(file.txt $ sudo chattr -R +i dir1 命令中, -R +i 现在,来试试删除这个目录,要么用普通用户,要么用 $ rm -fr dir1 $ sudo rm -fr dir1 你会看到如下输出: # 不可删除'dir1/file.txt':非法操作 rm: cannot remove 'dir1/file.txt': Operation not permitted 尝试用 撤销此属性,输入: $ sudo chattr -R -i dir1 现在你就能想平常一样删除或修改这个目录内容了。 防止文件和目录被意外删除,但允许追加操作 我们现已知道如何防止文件和目录被意外删除和修改了。接下来,我们将防止文件被删除但仅仅允许文件被追加内容。意思是你不可以编辑修改文件已存在的数据,或者重命名这个文件或者删除这个文件,你仅可以使用追加模式打开这个文件。 为了设置追加属性到文件或目录,我们像下面这么操作: 针对文件: $ 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 $ cat dir1/file.txt 输出: Hello World! 你将看到你现在可以追加内容。就表示我们可以修改这个文件或目录。 现在让我们试试删除这个文件或目录。 $ rm file.txt 输出: # 不能删除文件'file.txt':非法操作 rm: cannot remove 'file.txt': Operation not permitted 让我们试试删除这个目录: $ rm -fr dir1/ 输出: # 不能删除文件'dir1/file.txt':非法操作 rm: cannot remove 'dir1/file.txt': Operation not permitted 删除这个属性,执行下面这个命令: 针对文件: $ sudo chattr -R -a file.txt 针对目录: $ sudo chattr -R -a dir1/ 现在,你可以想平常一样删除或修改这个文件和目录了。 更多详情,查看 man 页面。 man chattr 总结 保护数据是系统管理人员的主要工作之一。市场上有众多可用的免费和收费的数据保护软件。幸好,我们已经拥有这个内置命令可以帮助我们去保护数据被意外的删除和修改。在你的 Linux 系统中,chattr
|