Szukam wskazówek, jak dowiedzieć się, który użytkownik zmodyfikował określony plik. Podczas gdy inotify jest świetny, aby otrzymać powiadomienie, gdy dany plik zostanie dotknięty, jak mogę się dowiedzieć, który użytkownik zmodyfikował ten plik? Mogę myśleć o użyciu lsof, ale obawiam się, że może nie być tak "realtime", jak chcę i/lub może to być zbyt duży podatek od zasobów. W ujęciu realnym mam na myśli to, że jeśli użytkownik po prostu wykona polecenie w pliku touch
, do czasu uruchomienia pliku lsof
może nie zostać odebrany przez lsof
.inotify - jak dowiedzieć się, który użytkownik zmodyfikował plik?
Odpowiedz
Można użyć audit deamon:
sudo apt-get install auditd
Wybierz plik do monitorowania
touch /tmp/myfile
Dodaj badania do zapisu i zmiany atrybutów (-p wa
):
sudo auditctl -w /tmp/myfile -p wa -k my-file-changed
Plik dotknięciu przez jakiegoś użytkownika:
touch /tmp/myfile
kłody Sprawdź kontrolne:
sudo ausearch -k my-file-changed | tail -1
Można zobacz UID
użytkownika, który uruchomić komendę na wyjściu
type = syscall msg = audyt (1313055675.066: 57): arch = syscall c000003e = 2 sukces = Tak wyjście = 3 a0 = 7ffffb6744dd a1 = a2 = 1B6 941 a3 = 7ffffb673bb0 pozycji = 1 ppid = 3428 PID = 4793 auid = 4294967295 UID = 1000 GID = 1000 euid = 1000 suid = 1000 fsuid = 1000 egid = 1000 sgid = 1000 fsgid = 1000 tty = pts1 ses = 4294967295 comm = "dotyk" exe = "/ bin/dotyk" key = "my-file-changed"
Aby uzyskać szczegółowe informacje na temat użycia, patrz man pages lub ten sample guide.
Jeśli dodasz opcję -i we wcześniejszym poleceniu, otrzymasz wynik w formacie bardziej czytelnym dla człowieka. Otrzymasz identyfikator UID przekonwertowany na prawdziwą nazwę użytkownika na serwerze.
ausearch -k my-file-changed -i | ogon -1
- 1. Jak dowiedzieć się, który moduł ładuje Łosia?
- 2. Jak się dowiedzieć, czy plik został zmodyfikowany?
- 3. Jak mogę się dowiedzieć, z której przeglądarki korzysta użytkownik?
- 4. Początkujący użytkownik próbuje dowiedzieć się, jak zaimportować prosty plik CSV do R
- 5. Czy istnieje sposób, aby dowiedzieć się, który użytkownik jest właścicielem procesu z procesu task_struct procesu?
- 6. Jak mogę się dowiedzieć, który widok jest aktualnie skupiony?
- 7. Jak mogę się dowiedzieć, który element GWT jest aktywny?
- 8. Jak mogę się dowiedzieć, który klejnot ma określoną zależność?
- 9. Git: Jak się dowiedzieć, który tag oddziału jest?
- 10. Jak dowiedzieć się, który algorytm crypt() używa na twoim komputerze?
- 11. wxPython: Jak mogę się dowiedzieć, który widget jest aktywny?
- 12. Jak dowiedzieć się, który inny UIScrollView przeszkadza scrollsToTop?
- 13. Jak się dowiedzieć, który plik .c zawiera funkcje .c wewnętrznych R, w systemie Windows?
- 14. Czy można dowiedzieć się, ile czasu spędził użytkownik na stronie?
- 15. Jak dowiedzieć się, kiedy plik został utworzony w ColdFusion
- 16. PHP Inotify Bez blokowania
- 17. Jak mogę się dowiedzieć, który sufiks został wybrany przez użytkownika przy użyciu QFileDialog?
- 18. inotify and bash
- 19. Haskell: Monitoruj plik bez odpytywania (à la inotify in linux)
- 20. Jak dowiedzieć się, kto jest dostawcą ROM?
- 21. inotify C headers
- 22. Który użytkownik uruchomił instancję EC2?
- 23. Historia API html5, jak się dowiedzieć, kiedy użytkownik kliknął przycisk następnej/poprzedniej przeglądarki?
- 24. Jak się dowiedzieć, KIEDY użytkownik kupił aplikację/zainstalował ją po raz pierwszy (możliwe bez identyfikatora UDID?)
- 25. jak się dowiedzieć, kiedy kończy się ładowanie listview na Androidzie
- 26. Jak dowiedzieć się, skąd pochodzi alert?
- 27. Jak mogę się dowiedzieć, kto nazwał SendMessage?
- 28. Jak dowiedzieć się, dlaczego Maven zawierał słoik?
- 29. Jak dowiedzieć się, co UITextField spowodowało UIKeyboardWillShowNotification?
- 30. Jak mogę się dowiedzieć, gdzie utworzono obiekt?
niesamowite! wielkie dzięki. – user837208