如何找出哪个用户删除了目录?


8

我的Ubuntu服务器上大约有30位活跃用户。我个人认识每个使用服务器的人。最近,我和几个朋友正在研究该项目。我们为该项目创建了一个新目录,并且由于每个人都认识每个人,因此我们不必费心在一系列权限下保护我们的工作。我们应该这样做,因为今天早上醒来时发现有人删除了我们的整个目录。

我们的工作每天晚上都会备份,因此恢复我们的工作确实并不重要。但是,我们想找出是谁删除了它,以便我们与他们面对面。到目前为止,找到罪魁祸首最好的方法是检查每个人的bash历史记录,但这是漫长而乏味的,而且很可能是,如果目录删除背后存在恶意,我们的罪魁祸首可能会修改他们的罪魁祸首来掩盖他们的踪迹(或者他们当然可以使用其他外壳)。

那么,基本上,找出谁删除目录的最简单,最快的方法是什么?

在此先感谢您的时间。


2
我认为不可能。
enzotib 2011年

4
下次使用与Ubuntu One或Dropbox同步的版本控制系统或SparkleShare(使用VCS git)或加密文件夹(使用[gnome- ] encfs)。
dAnjou 2011年

@dAnjou我们的服务器上确实安装了git和subversion,但是由于我们在一个网站上工作,因此我们不断地在其中添加/删除文件,这看起来既不必要又麻烦。正如我在问题中提到的那样,我们可能应该建立一个小组,并使目录只能由我们的小组访问。无论如何,自从备份以来,我们都可以收回所有工作。现在,我担心的是,我不希望用户删除与它们无关的系统上的目录。我相信我所有的用户都不要做这样的事情,所以这真的让我感到困扰。
Rob S.

是的,不可能。
psusi 2011年

1
您可以监视文件的删除(或修改)。参见cyberciti.biz/tips/…man auditctl
Lekensteyn 2011年

Answers:


5

我没找到答案的灵丹妙药。该原因的一部分在此处详细说明:https : //superuser.com/questions/178596/checking-user-command-history-in-unix

这个简单的命令可以帮助您跟踪发生的情况,在所有用户主目录中的所有shell历史记录文件中搜索rm&mv命令:

find /home -type f -iname .*history -exec grep "rm\|mv" {} \;

最好有一个有效的备份来保存您,但是我强烈建议为项目文件夹创建一些组,并仅向这些组添加用户帐户。将来会减轻您的很多痛苦。

示例:添加一个组并向其中添加项目团队成员

groupadd coolproject
adduser jim coolproject
adduser joe coolproject
adduser charlie coolproject

适当地递归设置权限,并保证团队的访问权限,无论谁创建/编辑文件

chown -R yourusername:coolproject /path/to/projectdir
find /path/to/projectdir -type d -exec chmod 2775 {} \;

(2将组所有权设置为“粘性”,以确保任何项目的组所有者均保持为“ coolproject”)

find /path/to/projectdir -type f -exec chmod 664 {} \;

希望对您有帮助!B-)


谢谢!我将您的命令修改为“ find / home -type f -iname。* history -print -exec grep“ rm \ | mv” {} \;“,这样我就可以获得出现了有趣信息的历史记录的文件名。
罗伯·S.

优秀的罗布!很高兴我能有所帮助。=)
乍得·斯托弗恩

1

从理论上讲,可以找到删除时间,这样可以缩小用户范围。

检查i_dtime ext2规范

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.