当前位置: 首页 > 科技观察

Linux系统中如何防止文件和目录被误删除或修改_0

时间:2023-03-12 10:03:07 科技观察

有时候,我不小心按了SHIFT+DELETE,删除了我的文件数据。是的,我是个白痴,因为我没有仔细检查我实际要删除的内容。而且我太笨或太懒了,无法备份我的文件数据。结果呢?数据丢失!一瞬间就没了。这不时发生在我身上。如果您和我一样,那么有个好消息要告诉您。有一个简单而有用的命令行工具叫做chattr(ChangeAttribute的缩写),它可以用来防止文件和目录在类Unix发行版中被意外删除或修改。通过为文件或目录添加或删除某些属性,可以确保用户无法删除或修改这些文件和目录,无论是有意还是无意,即使是root用户。听起来很有用,不是吗?在这个简短的教程中,让我们看看如何在实践中使用chattr命令来防止文件和目录被意外删除。在Linux中保护文件和目录不被意外删除和修改默认情况下,大多数现代Linux操作系统都提供chattr命令。默认语法为:chattr[operator][switch][file]chattr有以下操作符:操作符+,将指定属性追加到文件已有属性上操作符-,删除指定属性操作符=,直接设置文件属性给指定的属性chattr提供了一个不同的属性,即aAcCdDeijsStTu。每个字符代表一个特定的文件属性。a–只能向文件添加数据A–不更新文件或目录的最新访问时间c–压缩文件或目录并存储C–不应用写时复制机制(CoW)d–设置文件不能是转储程序的备份目标D–同步目录更新e–扩展格式存储i–文件或目录不能被改变j–设置这个参数使得当通过挂载参数挂载文件系统时:data=orderedordata=writeback,正在写入文件P-项目层次结构s-安全删除文件或目录S-即时更新文件或目录t-无尾部合并T-顶级目录层次结构u-不可删除将讨论两个属性的使用,即a,i,可以用来防止文件和目录被删除。这就是我们今天的主题吧?让我们开始吧!为了防止文件被意外删除和修改,我首先在我的当前目录中创建一个file.txt文件。$touchfile.txt现在,我将i属性应用于文件,使其不可变。也就是说,你不能删除或修改这个文件,即使你是文件的所有者和root用户。$sudochattr+ifile.txt使用lsattr命令检查文件的现有属性:$lsattrfile.txt输出:----i--------e----file.txt现在,尝试使用普通用户删除文件:$rmfile.txtoutput:#cannotdeletefiles,illegaloperationrm:cannotremove'file.txt':Operationnotpermitted我会试试sudo权限:$sudormfile.txtoutput:#cannotDeletefile,illegaloperationrm:cannotremove'file.txt':Operationnotpermitted让我们尝试向这个文本文件追加和写入内容:$echo'HelloWorld!'>>file.txtOutput:#非法操作bash:file.txt:不允许操作尝试sudo权限:$sudoecho'HelloWorld!'>>file.txtOutput:#Illegaloperationbash:file.txt:Operationnotpermitted你应该已经注意到我们不能删除或修改这个文件,即使是root或文件所有者。要撤销属性,请使用-i。$sudochattr-ifile.txt现在,不可变属性已被删除。您现在可以删除或修改此文件。$rmfile.txt同样,您可以限制目录不被意外删除或修改,如下一节所述。防止目录被误删除和修改创建dir1目录,放文件file.txt。$mkdirdir1&&touchdir1/file.txt现在,使目录及其内容(file.txt)不可变:$sudochattr-R+i在dir1命令中,-R–递归地使dir1目录及其内容不可变+i-使目录不可修改现在,让我们尝试以普通用户或具有sudo权限的用户身份删除该目录。$rm-frdir1$sudorm-frdir1你会看到如下输出:#Unabletodelete'dir1/file.txt':illegaloperationrm:cannotremove'dir1/file.txt':Operationnotpermitted尝试使用echo命令向文件追加内容,成功了吗?当然,你不能。要撤销此属性,请输入:$sudochattr-R-idir1现在您可以照常删除或修改此目录的内容。保护文件和目录不被意外删除,但允许附加我们现在知道如何保护文件和目录不被意外删除和修改。接下来,我们将防止文件被删除,但只允许附加文件。这意味着您不能编辑和修改该文件的现有数据,也不能重命名该文件或删除该文件,您只能以追加方式打开该文件。要为文件或目录设置追加属性,我们执行以下操作:对于文件:$sudochattr+afile.txt对于目录:$sudochattr-R+adir1为文件或目录设置此属性只能以追加方式打开进行写入。添加一些东西到这个文件来测试它是否有效。$echo'HelloWorld!'>>file.txt$echo'HelloWorld!'>>dir1/file.txt查看文件内容使用cat命令$catfile.txt$catdir1/file.txt输出:HelloWorld!您将看到现在可以附加内容。这意味着我们可以修改这个文件或目录。现在让我们尝试删除这个文件或目录。$rmfile.txtoutput:#Cannotremovefile'file.txt':Illegaloperationrm:cannotremove'file.txt':Operationnotpermitted让我们尝试删除这个目录:$rm-frdir1/输出:#Can't删除文件'dir1/file.txt':非法操作rm:cannotremove'dir1/file.txt':Operationnotpermitted若要删除此属性,请执行以下命令:对于文件:$sudochattr-R-a目录的file.txt:$sudochattr-R-adir1/现在,您可以照常删除或修改此文件和目录。有关详细信息,请参阅手册页。manchattr得出结论,保护数据是系统管理员的主要任务之一。市场上有许多免费和收费的数据保护软件。幸运的是,我们已经有了这个内置命令来帮助我们保护数据不被意外删除和修改。在您的Linux系统中,chattr可以用作保护重要系统文件和数据的附加工具。