Найдите, какие файлы читаются или записываются

14

Я хочу увидеть, какие файлы для чтения или записи.

Есть какая-нибудь программа или команда для этого? Я помню, я использовал этот метод для поиска вирусов и скрытых вредоносных программ, когда я использовал Windows несколько лет назад.

лас
источник

Ответы:

15

Эта программа («Список открытых файлов») .lsof

  • Если вы просто откроете терминал и напечатаете lsof, вы получите огромный список всех открытых файлов, вместо этого ограничьте его одной командой, выполнив:

    lsof -c gnome-terminal
    
  • Вы также можете ограничить свой поиск определенным каталогом, набрав

    lsof -c gnome-terminal -a +D /tmp
    
  • Или перечислите все открытые файлы в одном определенном каталоге, включая то, что приложение открыло это:

    lsof /dev/urandom
    

Помните, что некоторые процессы запускаются суперпользователем root , вам может потребоваться поставить sudoперед вашей командой, чтобы получить больше информации об открытых файлах таких процессов.

Чтобы сузить область поиска, вы можете grepуказать конкретные строки, а именно:

lsof /dev/urandom | grep chrome

  • FD(File Descriptor) столбец вывода дает информацию о целях программы открытия файла (не обязательно то , что происходит с ним в данный момент):

    • r означает, что файл открыт для чтения

    • w означает, что файл открыт для записи

    • u означает, что файл открыт для чтения и записи


Для более подробной информации обратитесь к странице справочника ( man lsof). Кроме того, если вам нужно найти какие-либо файлы и каталоги, стандарт иерархии файловых систем Linux очень полезен.

Стефано Палаццо
источник
4

В качестве полной опции over-kill, но работающей в режиме реального времени, вы можете использовать inotify:

sudo inotifywait -m -r /

Обратите внимание, что это займет много памяти и займет много времени для настройки. Как написано на странице руководства:

   -r, --recursive
          Watch all subdirectories of any directories passed as arguments.
          Watches  will be set up recursively to an unlimited depth.  Sym‐
          bolic links are not  traversed.   Newly  created  subdirectories
          will also be watched.

          Warning:  If  you use this option while watching the root direc‐
          tory of a large tree, it may take quite a while until  all  ino‐
          tify watches are established, and events will not be received in
          this time.  Also, since one inotify watch  will  be  established
          per subdirectory, it is possible that the maximum amount of ino‐
          tify watches per user will be reached.  The default  maximum  is
          8192;  it  can  be  increased  by  writing  to /proc/sys/fs/ino‐
          tify/max_user_watches.

Это также не говорит о том, что происходит с файлами, но может помочь определить изменения по мере их возникновения. Использование «-e open» может помочь снизить уровень шума в действительно загруженной системе.

Кис Кук
источник
Я почти уверен, что это не будет работать, с или без установки более высокого предела для inotify / max_user_watches до. Вы пытаетесь добавить часы к каждому файлу в системе ...
Volker Siegel