当前位置: 首页 > 编程笔记 >

Linux中文件/文件夹无法删除的解决方案

莫泓
2023-03-14
本文向大家介绍Linux中文件/文件夹无法删除的解决方案,包括了Linux中文件/文件夹无法删除的解决方案的使用技巧和注意事项,需要的朋友参考一下

前言

最近我们的服务器被黑客攻击,然后有些文件的属性被修改,导致我们无法删除病毒文件,同时采用 root 用户也无法删除,现在把解决方案记录下来。

普通删除

如果文件是当前用户的,那么使用 rm 命令就可以删除

rm -rf file.sh

如果无法删除,则尝试使用 root 用户删除,如果无法删除那么请看下面的说明。

需要了解的命令

如果普通的删除方式没有用,那么我们需要了解下面的命令来进行删除

lsattr

lsattr 命令用于显示文件的属性,使用方式如下

# 列出 file.sh 文件的属性
lsattr file.sh
# 列出当前目录下所有文件以及文件夹的属性
lsattr

属性说明

  • i 属性设置之后可使文件不能被删除、改名,设置连接也无法写入或添加数据,只有 root 用户才能设置
  • a 属性设置之后,文件只能增加数据,既不能删除也不能修改数据,只有 root 用户才能设置
  • A 设置A属性后,若你访问此文件或目录时,它的访问时间 atime 不会被修改,可避免I/O较慢的机器过度访问磁盘。这对速度较慢的计算机有帮助。
  • s 属性设置之后,如果文件被删除,将从硬盘彻底删除
  • S 属性设置之后,文件将同步写入硬盘(一般为异步
  • u 属性设置之后,文件删除后数据内容还存在磁盘中,可以找回文件
  • e 代表该文件为可执行文件

详细说明请参考:https://baike.baidu.com/item/chattr/9841067?fr=aladdin

chattr

chattr 用于修改文件属性,该命令请切换至 root 用户下使用,如果是 ubuntu 用户可在命令前加 sudo 进行修改

# 为 file.sh 文件增加 i 标识
chattr +i file.sh
# 为 file.sh 文件去除 i 标识
chattr -i file.sh
# 为 file.sh 增加 i, a 两个标识
chattr +ia file.sh
# 为 file.sh 文件移除 i, a 两个标识
chattr -ia file.sh

详细操作请参考: https://baike.baidu.com/item/chattr/9841067?fr=aladdin

实际操作

由上文中得知当文件设置 i 和 a 任意一个属性我们就无法对文件进行删除操作,那么我们首先移除 i, a 属性,然后执行删除:

# 移除 i, a 属性
chattr -ia file.sh
# 查看是否移除成功
lsattr file.sh
# 移除文件
rm -rf file.sh

如果文件还未删除成功,则我们需要考虑文件所属的文件夹是否设置了 i 或 a 属性(这一点确实很难发现)

# 退回上一级
cd ..
# 直接使用 lsattr 命令,这样可以列出当前文件夹下所有文件和文件夹的属性
# 不要使用 lsattr 文件夹 这样的语法,这样是列出该文件夹下的文件的属性
lsattr

如果文件夹被设置则对文件夹的属性执行移除操作,然后再删除文件夹里面的文件

收获

  • 虽然 lsattr 和 chattr 是在这次清除病毒的过程中发现的,但是通过了解文件属性,发现我们在实际的工作中可以通过文件属性来保护重要的文件避免被误删,以及确保误删后能够恢复文件。
  • 对于文件的操作后如果还是没有效果,我们可以尝试从文件夹入手解决。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。

 类似资料:
  • 我有文件在上传/project ect1/更新。 问题是,只删除更新中的文件。我想删除文件夹上载中的目录。。。也就是说,文件夹名“project1”和“update”在更新中的文件被删除后也会被删除。你能帮我找出错误吗?? 这个编码发出警告 警告:clocdirer()期望参数1为资源, 警告:rmdir(update)[function.rmdir]:没有这样的文件或目录。。 但是在目录上传中,

  • 有关删除数据的Firebase文档中说: 删除数据 删除数据的最简单方法是对数据位置的引用调用remove()。 还可以通过将null指定为另一个写入操作(如set()或update())的值来删除。您可以将此技术与update()结合使用,在单个API调用中删除多个子项。 有谁能解释一下,我认为最后一行可以帮助我删除firebase文件夹中的所有文件是什么意思?

  • 问题内容: 我想 删除所有当前目录下的内容 除了 对文件夹之前,我的新文件复制到分支。 linux的命令是什么? 问题答案: 重置索引很便宜,所以 然后,您可以重置索引(使用)或直接继续签出新分支。

  • 我想从名为"fajlovi"的文件夹中删除文件。多个和单个删除应该工作。但是它会删除文件夹中的第一个文件(文件夹中文件数组中的0位置)。如果我检查任何文件,它将删除前4个文件,而不是我检查的文件。下面是代码: 1.这是页面的截图: 2.然后我检查要删除的图像: 4.再次进入页面后,我们可以看到错误的图像被删除:

  • 本文向大家介绍php文件夹的创建与删除方法,包括了php文件夹的创建与删除方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php文件夹的创建与删除方法。分享给大家供大家参考。具体如下: 1、创建文件夹 2、创建文件夹,递归式创建 3、删除文件夹 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍python 两种方法删除空文件夹,包括了python 两种方法删除空文件夹的使用技巧和注意事项,需要的朋友参考一下 第一种方法: 效果 第二种方法: 以上就是python 两种方法删除空文件夹的详细内容,更多关于python 删除文件夹的资料请关注呐喊教程其它相关文章!