文件在Linux服务器上消失


13

我有4个特定文件,这些文件似乎总是从用户的主目录中消失。据我们所知,没有cronjobs或其他自动任务可以将其删除。我已经对它们进行了审核,但是日志并没有真正显示出任何令人感兴趣的内容。我可以看到我们的备份实用程序每天晚上都在访问它们,直到它们不再存在为止,但是没有别的。是否有什么会导致这些文件被删除并经过审核的?

这些文件是:

/home/username/.bashrc
/home/username/.bash_profile

以及该用户.ssh目录中的几个文件。这些文件的副本也将同时被删除到名为“ keepers”的子文件夹中。将它们的权限更改为000并由root用户拥有并没有帮助。

我目前有inotifywait设置来记录该子文件夹上的创建,删除,移动,因此希望它会出现一些东西,尽管它与发生时间无关,而不是引起它的原因。


1
请在您的帖子中添加其名称和路径,这可能会有所帮助。
Shadok

2
另外,发布审核日志可能会有所帮助。
Janne Pikkarainen

3
您也可以尝试创建以root和chmod 000拥有的文件,以查看它们是否仍然被删除(或者是否导致其他问题/错误输出)。
多项式

5
除了chmod 0000之外,您还可以尝试使用chattr + i尝试阻止甚至root删除它
mer

1
请注意,chattr仅对ext文件系统有所帮助。但是聊天应该会有所帮助。:-)您也可以使用SELINUX而不是chattr来阻止这些文件被修改。但恕我直言,删除操作必须来自某个进程或用户。
JMW

Answers:


20

解决方案1:systemtap
您可以使用systemtap来显示所有试图在and 文件的inode上 使用unlink()的 PID 。.bashrc.bash_profile

为您的内核安装systemtap和调试符号。

创建unlink.stap具有以下内容的名称的文件:

probe syscall.unlink
{
    printf ("%s(%d) unlink (%s) userID(%d)\n", execname(), pid(), argstr, uid())
}

然后用 sudo stap unlink.stap

解决方案2:inotify
您也可以使用inotify查看何时删除文件。

解决方案3:ftrace
另一个解决方案是使用ftrace

trace-cmd record -e \*unlink\*

等待文件被删除,按CTRL + C停止trace-cmd record ...,然后运行:

trace-cmd report

解决方案4:bpftrace
Install bpftrace,然后运行:

bpftrace -e 'tracepoint:syscalls:sys_enter_unlink* { printf("%s %s\n", comm, str(args->pathname)); }'

5

除了micea的答案外,您还可以root身份+ i聊天文件,并查看尝试删除它们时是否记录任何错误。


4

您是否绝对确定用户自己没有(意外地)删除它们?

我有一些笨拙的(Windows)用户也遇到了同样的问题。原来,他们每次使用ftp客户端访问其home-dir时,都会自己删除这些文件。他们注意到.xxxx文件(ftp客户端没有隐藏它们)并删除了“混乱”文件。

我从来没有想到他们自己做过,直到其中一个抱怨他几天前就自动删除了文件。


2
相信我,我希望如此简单。
乍得

这很有趣:)
捕捉

3
现在好笑...。发生的时间不多,我不知道发生了什么。@Chad P:请让我们知道您的发现。我觉得这很好奇。
Tonny

3

我们使用bash注销脚本(〜/ .bash_logout)在注销时清除某些文件-您可能会检查一下是否具有该设置,也许其中有一个胖手指。


2

更多似乎是一个入侵者,他正在查找/ home / user -name filename -exec rm -f {} \; 毕竟他偷偷摸摸:)。只是猜测,因为您提到备份文件也将被删除。


1

为了防止丢失文件及其内容,您可以通过LD_PRELOAD 设置libtrash。使用libtrash,您可以做很多事情,但是您可能感兴趣的是

INTERCEPT_UNLINK
INTERCEPT_RENAME
INTERCEPT_FOPEN
INTERCEPT_OPEN

关于libtrash的好文章可以在这里找到

您提到的另一件事是,您将文件更改为根目录,但仍将其删除。这是因为/ home / username由用户名所有;如果dir已说出mod 755;那么该目录中所有文件或目录归所有者所有,无论谁可以被用户删除;即使它是根文件或目录。基本上是由于以下事实:删除dir中的文件意味着更改dir内容,并且用户拥有该dir中的7个(在755中),因此他可以执行自己想做的任何事情。

正如其他人已经通过ext文件系统上的chattr建议将文件设置为不可变(+ i)一样,有多种方法可以阻止此操作。然后,在对具有+ i标志的文件/目录进行任何更改之前,需要先取消设置不可变标志。不可变的标记/ chattr只能由root使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.