Назад | Перейти на главную страницу

Как выполнить аудит изменений в каталоге через символическую ссылку?

Использование аудит система для просмотра каталога через символическую ссылку почти не запускает журналы. Вот такая ситуация:

# pwd
/home/root/serverfault

# ls -l 
total 4
drwxr-xr-x 2 root root 4096 Sep  1 15:12 dir
lrwxrwxrwx 1 root root    3 Sep  1 15:12 p -> dir

# auditctl -w /home/root/serverfault/p -p rwxa -k PX

У меня создалось наивное впечатление, что в любое время я буду читать / писать файл внутри /home/root/serverfault/p каталог, журналы появятся в /var/log/audit/audit.log. Но они этого не делают.

Кроме того, журнал аудита отсутствует, если я:

# echo hello > /home/root/serverfault/p/hello.txt

Я поэкспериментировал, используя Strace бежать ls в нескольких каталогах и оценил выходы с информацией в auditctl(8) справочная страница. Одна интересная строчка из strace вывод, который заставляет меня думать, что должны были быть созданы журналы аудита:

open("/home/root/serverfault/p/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3

Может быть, это не так, потому что open(2) по умолчанию следует символическим ссылкам. Журналы создаются только при запуске ls в родительском каталоге (/home/root/serverfault в нашем случае) пути (аргумент, данный -w включить auditctl) наблюдают.

Я понимаю что /home/root/serverfault/p на самом деле не каталог, а символическая ссылка. Но разве символические ссылки не предназначались для использования таким образом, чтобы их не существовало? В целом кажется, что аудит изменений каталога с помощью символической ссылки не требуется. Так ли это на самом деле?

Хм,

   -w path
          Insert  a  watch  for the file system object at path. You cannot
          insert a watch to the top level directory. This is prohibited by
          the kernel. Wildcards are not supported either and will generate
          a warning. The way that watches work is by  tracking  the  inode
          internally.

Нет изменения происходит с индексным дескриптором файла символической ссылки, поскольку это просто файл, указывающий на другое место. Вместо этого добавьте часы в каталог, на который указывает символическая ссылка, или поэкспериментируйте с -F path связанные параметры, хотя, опять же, с индексным дескриптором символьной ссылки изменений не происходит.