Доступ к трассировке дерева каталогов

ситуация

У меня есть каталог /home/foo на сервере, и я предполагаю, что он больше не нужен.

К сожалению, никто не может сказать мне, нужен ли этот каталог.

  • Возможно ли повторное использование подчиненного конца PTY после его закрытия?
  • Нет / dev / mmcblk0 во время загрузки
  • Что такое и ? И почему они постоянно находятся на iotop?
  • Как узнать логическое имя интерфейса tap0?
  • Существуют ли альтернативы использованию `udev`?
  • Почему / proc / * / status не учитывает все свопы, используемые в системе?
  • Цель

    Если этот каталог по-прежнему необходим, я хочу знать, какой процесс обращается к нему.

    Текущая стратегия

    Смотреть все файлы открывается ниже этого каталога.

    Почему бы не развить

    К сожалению, каталог содержит много подкаталогов, поэтому я не хочу использовать inotify.

    • 1604508 файлов
    • 287253 подкаталогов

    Вопрос

    Как я могу посмотреть, как весь файл открывается под деревом каталога (рекурсивным)? Я хочу знать, какой процесс доступа к нему.

    Окружающая среда

    • /home – файловая система ext4.
    • SuSE Linux 12.3. Ядро: 3,7.10

    Не дублировать

    Мой вопрос не является дубликатом. Можно ли узнать, какая программа или сценарий создал данный файл? поскольку ….:

    • Я не могу использовать inotify, поскольку дерево каталогов содержит слишком много подкаталогов.
    • Я не могу использовать loggedfs: я не могу изменить тип файловой системы этого каталога.

    премия

    Уже есть два хороших ответа. Но мне любопытно, может быть, есть и другие способы: Bounty of 50 🙂

  • bash - нечувствительность к регистру переменной
  • Запуск ядра Linux в Virtualbox
  • Есть ли смягчение от подделки даты / времени касания?
  • Как обновить ядро ​​без перезагрузки? (альтернатива ksplice)
  • Изменение раскладки клавиатуры хост-системы при запуске контейнера LXC
  • Локально запретить вход для пользователей, прошедших проверку подлинности через LDAP
  • 3 Solutions collect form web for “Доступ к трассировке дерева каталогов”

    Вы должны иметь возможность использовать auditd (хотя это зависит от вашего дистрибутива Linux, имеющегося в наличии).

    Команда auditctl используется для настройки аудита, а auditctl страница должна описывать, как добиться того, что вам нужно.

    Что-то вроде,

    auditctl -w /home/foo -p war -k foo-watch

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

    ausearch -k foo-watch

    Пример этого на SUSE можно найти здесь .

    Я не знаю, включено ли это в SuSE, но фанатизация api отслеживает всю файловую систему. Существует даже простая утилита fatrace , которая покажет вам каждый файл, который открывается, читается, записывается, закрывается. пример

     $ cd; sudo fatrace -f O -c tail(1500): CO /home/meuh/dot/privoxy/logs/160426 ls(28599): O /home/meuh bash(2075): O /home/meuh/dot/bashhistory.xt-right 

    -f O – это просто отслеживать открытия, а -c – просто отслеживать всю файловую систему, которая содержит текущий рабочий каталог. Вы также можете получить временную метку.

    Я вижу несколько способов:

    • если ваша файловая система, содержащая / home / foo, смонтирована с помощью atime (или эквивалента для вашего типа файловой системы), вы можете затем использовать find /home/foo -atime +10 -ls чтобы узнать, был ли доступ к любому из его файлов менее чем 11 дней

    • или если вы предпочитаете «ткнуть» и посмотреть, есть ли прямо сейчас что-то доступно в этом каталоге: lsof | grep /home/foo lsof | grep /home/foo должен дать вам некоторую подсказку (для проверки: cd /home/foo ; lsof | grep /home/foo : должно, по крайней мере, выводить pid вашей оболочки, так как теперь он имеет свой cwd (текущий рабочий каталог) по этому пути …)

    (примечание: я не могу проверить оба прямо сейчас, нет linux под рукой … но я думаю, что оба должны работать)

    Linux и Unix - лучшая ОС в мире.