¿Cómo puedo averiguar qué usuario eliminó un directorio?

8

Mi servidor Ubuntu tiene aproximadamente 30 usuarios activos en él. Personalmente conozco a todos los que usan el servidor. Recientemente, algunos amigos y yo estábamos trabajando en el proyecto. Creamos un nuevo directorio para el proyecto y dado que todos conocen a todos, no nos molestamos en proteger nuestro trabajo bajo un montón de permisos. Sin embargo, deberíamos haberlo hecho, porque nos despertamos esta mañana para encontrar que alguien eliminó todo nuestro directorio.

Nuestro trabajo está respaldado todas las noches, por lo que realmente no es un gran problema restaurar nuestro trabajo. Sin embargo, nos gustaría saber quién lo eliminó para poder enfrentarlos. Hasta ahora, lo mejor que hemos encontrado para encontrar a nuestro culpable es verificar el historial de bash de todos, pero esto es largo y tedioso y es probable que si hubo una intención maliciosa detrás de la eliminación del directorio, nuestro culpable probablemente modificó el suyo para cubrir sus huellas. (o, por supuesto, podrían usar un shell diferente).

Entonces, básicamente, ¿cuál es la forma más fácil y rápida de averiguar quién eliminó un directorio?

Gracias de antemano por tu tiempo.

Rob S.
fuente
2
No creo que sea posible.
enzotib
44
La próxima vez use un sistema de control de versiones o SparkleShare (que usa un VCS git) o una carpeta encriptada (usando [gnome- ] encfs ) sincronizada con Ubuntu One o Dropbox.
dAnjou
@dAnjou Tenemos git y subversion instalados en nuestro servidor, pero dado que trabajamos en un sitio web en el que constantemente agregamos / eliminamos archivos, parecía una molestia innecesaria para molestarse en usarlos. Como mencioné en mi pregunta, probablemente deberíamos haber hecho un grupo y haber hecho que el directorio solo sea accesible para nuestro grupo. De todos modos, podemos recuperar todo nuestro trabajo desde que lo respaldamos. Mi preocupación ahora es que no quiero que un usuario elimine directorios en el sistema con los que no está afiliado. Confío en que todos mis usuarios no hagan algo como esto, así que esto realmente me molesta.
Rob S.
Sí, no es posible.
psusi
1
Puede ver las eliminaciones (o modificaciones) en los archivos. Ver cyberciti.biz/tips/… yman auditctl
Lekensteyn

Respuestas:

5

No encontré una respuesta mágica a tu pregunta; parte de esa razón se detalla aquí: /superuser/178596/checking-user-command-history-in-unix

Este simple comando puede ayudarlo a rastrear lo que sucedió, buscando comandos rm & mv en todos los archivos de historial de shell en todos los directorios de inicio de los usuarios:

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

Es bueno que tenga una copia de seguridad válida para salvarlo, pero le recomiendo crear algunos grupos para carpetas de proyectos y simplemente agregar cuentas de usuario a esos grupos; eso te ahorrará mucho dolor en el futuro.

Ejemplo: agregar un grupo y agregar miembros del equipo del proyecto

groupadd coolproject
adduser jim coolproject
adduser joe coolproject
adduser charlie coolproject

establezca los permisos de manera recursiva y garantice el acceso del equipo en cualquier momento, independientemente de quién cree / edite los archivos

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

(el 2 establece la propiedad del grupo en "permanente", esto asegura que el propietario del grupo de cualquier proyecto siga siendo "coolproject")

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

Espero que te ayude! SI-)

Chad Stovern
fuente
¡Gracias! Modifiqué su comando a "find / home -type f -iname. * History -print -exec grep" rm \ | mv "{} \;" para poder obtener los nombres de archivo de las historias que arrojaron información interesante.
Rob S.
excelente Rob! Me alegro de poder ser de alguna ayuda. =)
Chad Stovern
1

En teoría, es posible averiguar el tiempo de eliminación, por lo que esto puede reducir los usuarios.

Verifique las i_dtime especificaciones en ext2 .

organizar
fuente