我的 Ubuntu 服务器上大约有 30 个活跃用户。我个人认识使用该服务器的每个人。最近,我和几个朋友正在做一个项目。我们为该项目创建了一个新目录,由于每个人都认识每个人,所以我们没有费心在一堆权限下保护我们的工作。但我们应该这样做,因为我们今天早上醒来发现有人删除了我们的整个目录。
我们每天晚上都会备份我们的工作,所以恢复我们的工作真的不是什么大问题。但是,我们想找出是谁删除了它,以便我们可以面对他们。到目前为止,我们找到罪魁祸首的最佳方法是检查每个人的 bash 历史记录,但这很漫长且乏味,而且如果目录删除背后有恶意,那么罪魁祸首很可能修改了他们的目录以掩盖他们的踪迹(或者他们当然可能使用不同的 shell)。
那么,基本上,找出谁删除了目录的最简单和最快捷的方法是什么?
在此先感谢您的时间。
答案1
我没有找到一个灵丹妙药可以回答你的问题;部分原因详述如下: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-)
答案2
理论上可以找出删除时间,这样可以缩小用户范围。
检查i_dtime
在 ext2 规范中。