2011-08-03 16 views
8

Estoy buscando orientación sobre cómo saber qué usuario ha modificado un archivo en particular. Mientras que inotify es excelente para recibir notificaciones cuando se toca un archivo en particular, ¿cómo puedo saber qué usuario ha modificado ese archivo? Puedo pensar en usar lsof, pero me temo que puede que no sea tan "en tiempo real" como quiera y/o que sea demasiado impuesto sobre los recursos. En tiempo real, quiero decir que si un usuario simplemente ejecuta un comando touch en un archivo, cuando ejecuto lsof en el archivo, es posible que lsof no lo recoja.inotify - ¿cómo saber qué usuario ha modificado el archivo?

Respuesta

11

Puede utilizar audit deamon:

sudo apt-get install auditd 

elegir un archivo para monitorear

touch /tmp/myfile 

Agregar auditoría de escritura y atribuir el cambio (-p wa):

sudo auditctl -w /tmp/myfile -p wa -k my-file-changed 

El archivo se toca por algún usuario:

touch /tmp/myfile 

listas de control de auditoría:

sudo ausearch -k my-file-changed | tail -1 

se puede ver el UID del usuario que ejecuta el comando en la salida

type = SYSCALL msg = auditoría (1,313,055,675.066: 57): Arco = syscall c000003e = 2 éxito = yes salida 3 = a0 = 7ffffb6744dd a1 = a2 = 941 1B6 a3 = 7ffffb673bb0 artículos = 1 ppid = 3428 pid = 4793 = 4294967295 AUID uid = 1000 gid = 1000 = 1000 euid suid = 1000 fsuid = 1000 egid = 1000 sgid = 1000 fsgid = 1000 TTY = PTS1 ses = 4294967295 comm = "toque" exe = "/ bin/toque" clave = "mi-archivo-cambiado"

Para detalles de uso, vea man pages o este sample guide.

+0

¡increíble! muchas gracias. – user837208

2

Si agrega la opción -i en el comando anterior, obtendrá resultados en un formato más legible para las personas. Obtendrá el uid convertido al nombre de usuario real en el servidor.

ausearch -k my-file-changed -i | cola -1

Cuestiones relacionadas