inotify - как узнать, какой пользователь изменил файл? - PullRequest
8 голосов
/ 03 августа 2011

Я ищу руководство о том, как узнать, какой пользователь изменил определенный файл.Хотя inotify отлично подходит для получения уведомлений при касании определенного файла, как мне определить, какой пользователь изменил этот файл?Я могу подумать об использовании lsof, но боюсь, что это может быть не так "в реальном времени", как я хочу, и / или это может быть слишком много налога на ресурсы.Под реальным временем я имею в виду, что если пользователь просто выполняет команду touch для файла, то к тому времени, когда я запускаю lsof для файла, она может не быть принята lsof.

Ответы [ 2 ]

13 голосов
/ 11 августа 2011

Вы можете использовать Audit Deamon :

sudo apt-get install auditd

Выберите файл для мониторинга

touch /tmp/myfile

Добавить аудит для записи и изменения атрибута (-p wa):

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

Файл тронут каким-то пользователем:

touch /tmp/myfile

Проверка журналов аудита:

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

Вы можете увидеть UID пользователя, который запускает команду в выводе

type = SYSCALL msg = аудит (1313055675.066: 57): arch = c000003e syscall = 2 успех = да выход = 3 a0 = 7ffffb6744dd a1 = 941 a2 = 1b6 a3 = 7ffffb673bb0 items = 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 = "touch" exe = "/ bin / touch" key = "мой-файл-изменен"

Подробнее об использовании см. справочные страницы или образец руководства .

2 голосов
/ 18 октября 2013

Если вы добавите опцию -i в предыдущей команде, вы получите вывод в более удобочитаемом формате.Вы получите преобразованный uid в настоящее имя пользователя на сервере.

ausearch -k my-file-change -i |хвост -1

...