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
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.
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
- 1. ¿Cómo puedo saber qué sufijo ha elegido el usuario al usar QFileDialog?
- 2. ¿Cómo detecta git que un archivo ha sido modificado?
- 3. ¿Cómo saber qué objeto ha sido eliminado?
- 4. Informe de errores de Django: cómo saber qué usuario ha desencadenado el error.
- 5. Determine si se ha modificado un archivo abierto en C
- 6. ¿Cómo saber si el usuario ha actualizado la aplicación o ha instalado una copia nueva?
- 7. linux, inotify - ¿cómo suscribirse?
- 8. ¿Cómo utilizar inotify?
- 9. hosts virtuales DocumentRoot no se ha modificado
- 10. ¿Puedo hacer que Git me diga todos los archivos que un usuario ha modificado?
- 11. cómo eliminar automáticamente el archivo creado en linux con inotify?
- 12. Buscar nombre de usuario (quién) archivo modificado en C#
- 13. Cómo saber qué formato de un controlador ha decidido rendir
- 14. Cómo saber si el registro ha cambiado en Postgres
- 15. Windows: cómo determinar si un archivo ha sido modificado desde una fecha determinada
- 16. ¿Cómo saber cuando el objeto AudioTrack ha terminado de reproducirse?
- 17. ¿Cómo saber si un archivo de Scala modificado con IntelliJ Idea se guarda y si está registrado en CVS?
- 18. Cómo saber si el usuario ha seleccionado un tema claro u oscuro
- 19. ¿Cómo saber cuándo se ha pausado el MPMoviePlayerController en iPhone?
- 20. Cómo saber si el cliente ha cerrado la conexión
- 21. Guardar WordprocessingDocument modificado en el nuevo archivo
- 22. ¿Por qué Visual Studio 2012 ejecuta un paso de compilación personalizado cuando no se ha modificado el archivo de origen?
- 23. Seleccione el último archivo modificado de un directorio
- 24. inotify C headers
- 25. ¿Detecta si se ha modificado un objeto Java?
- 26. ¿Cómo eliminar el cuadro de diálogo "Archivo modificado detectado VS2010"?
- 27. inotify con NFS
- 28. ¿Cómo saber qué grupo tiene un usuario determinado?
- 29. ¿Cómo puedo saber qué navegador está usando un usuario?
- 30. wpf ¿cómo saber cuándo ha finalizado el enlace de datos?
¡increíble! muchas gracias. – user837208