Основы команды lsof
Мы рассмотрели только самые популярные примеры использования команды lsof. Огромную документацию по этой программе с описанием всех опций вы найдёте в её справочной странице:
man lsof
Связанные статьи:
Сервер SolarWinds & Монитор приложений (бесплатная пробная версия)
Сервер SolarWinds & Монитор приложений это инструмент для мониторинга приложений и файлов, который отслеживает изменения файлов в режиме реального времени. На панели инструментов вы можете просмотреть характеристики файла, такие как содержание, размер, возраст, и подсчитывать.
Ускоренная конфигурация Сервер SolarWinds & Монитор приложений делает его идеальным для МСП. После установки программного обеспечения программа начнет автоматически обнаруживать подключенные устройства. Менее чем за час вы можете получить функциональную платформу для мониторинга файлов с готовыми шаблонами мониторинга..
Конечно, вам не нужно ловить все в режиме реального времени: Сервер SolarWinds & Монитор приложений делает это для вас. Мониторы вроде монитор количества файлов предупредить вас, если количество файлов в каталоге превышает настроенный порог.
ManageEngine DataSecurity Plus
ManageEngine DataSecurity Plus программная платформа для мониторинга файлов, которая отображает активность файлов и пользователей в сети. Вы можете видеть, кто получил доступ к файлу, когда и к чему они обращались. Есть также ряд визуальные отображения, такие как графики и круговые диаграммы которые показывают вам более полный обзор.
Например, вы можете увидеть круговую диаграмму Все изменения файлов и папок который разбит на Создайте, удалять, Изменить, Изменение разрешения, Переписать, Rename, и Переехать.
Одна премиум-функция в комплекте с ManageEngine DataSecurity Plus является аналитика доступа к файлам. Аналитика доступа к файлам выделить тенденции доступа, контролировать время доступа и обнаружить аномальный доступ к файлу.
Встроенный аудит и соответствие нормативам ManageEngine DataSecurity Plus также чрезвычайно полезны. Инструмент соответствует PCI DSS, HIPAA, GDPR, SOX, GLBA, и FISMA.
LANGuardian
LANGuardian это монитор активности файлов, который использует глубокая проверка пакетов отслеживать активность пользователя. LANGuardian это популярный инструмент, потому что он не использует агентов и не влияет на производительность сети, когда используется для мониторинга файлов (что делает программу идеальной для управления несколькими сайтами).
Тераминд
Teramind программное обеспечение для мониторинга активности файлов, разработанное специально для мониторинга активности пользователей Мониторы продукта доступ к файлу, творчество, удаление, и операции записи.
Существует также система уведомлений, чтобы держать вас в курсе событий в сети. Например, Система уведомлений сообщает, когда файлы загружены в облако либо в виде вложения электронной почты, либо через облачный сервис, такой как Google Drive, Dropbox или OneDrive.
Teramind доступно как локальное или облачное решение. У каждого есть три версии продукта: Teramind Starter, Teramind UAM, и Teramind DLP. Локальные версии начинаются от 60 долларов США (47 фунтов стерлингов)
в месяц для 10 конечных точек до 150 долларов США (117 фунтов стерлингов) в месяц для 10 конечных точек. Облачные версии начинаются от 60 (47 фунтов) в месяц для пяти пользователей до 150 долларов (117 фунтов) за дополнительные правила эксфильтрации данных на основе контента..
PA File Sight
PA File Sight это решение для мониторинга файлов с возможности мониторинга файлов в режиме реального времени. Программное обеспечение контролирует для создание файла, удаление, модификация, и движение файлов.
Он также контролирует айпи адрес, данные / время и Имя компьютера из взаимодействий, чтобы помочь идентифицировать различных пользователей и обнаружить подозрительную активность. Вы можете начать мониторинг, как только закончите процесс установки, который может быть завершен всего за несколько минут..
Программа также имеет автоматические оповещения. PA File Sight предупреждает вас об изменениях, внесенных в файлы, чтобы вы могли обнаружить подделку журнала. Оповещения приходят с рядом вспомогательной информации, включая учетная запись пользователя, IP-адрес пользователя, Имя компьютера, целевой файл, что за деятельность была и дата / время.
Когда дело доходит до аудита, PA File Sight отличный выбор Это не только соответствует PCI, HIPAA, FISMA AC-19, SOX, и ISO 27001/27002, но у него также есть отчеты. Отчеты могут быть сгенерированы в тексте, HTML, PDF или .
Для покупки доступны две версии продукта: PA File Sight Ultra, и PA File Sight Lite. Облегченная версия начинается с 199 долларов (156,18 фунтов) для лицензий 1-9 и может отслеживать файловые операции и генерировать оповещения.
Версия Ultra начинается с 599 долларов (470 фунтов) за лицензии 1-9 и может делать все, что может облегченная версия, но добавляет интеграцию для Microsoft SQL Server, отчеты, расширенные оповещения, и способность блокировать внешние диски.
FileAudit
FileAudit это инструмент для мониторинга файлов в реальном времени это было разработано, чтобы помочь контролировать, как сотрудники взаимодействуют с файлами. Мониторы платформы изменения файла, читай пиши, удаление, и право собственности.
Это также автоматические оповещения по электронной почте уведомить вас о действиях пользователя. Оповещения генерируются для определенных событий, таких как удаление файла или если пользователю было отказано в доступе к файлу. Пребывание в курсе этой информации помогает диагностировать подозрительное поведение как можно раньше.
Есть четыре версии FileAudit доступны для покупки: команда, Небольшой, средний, и предприятие. Версия Team стоит 50 долларов (39 фунтов) в месяц для 100 пользователей и одного сервера. Небольшая версия стоит 85 долларов (66 фунтов) для 500 пользователей и трех серверов..
Выбор правильного инструмента
Мониторинг файловой активности является неотъемлемой частью управления документами в корпоративной среде. Инструменты как Сервер SolarWinds & Монитор приложений и ManageEngine DataSecurity Plus были построены с этой целью. Каждый инструмент прост в использовании с простой настройкой и дополнительными возможностями взаимодействия с файлами..
Функция анализа доступа к файлам, включенная в ManageEngine DataSecurity Plus полезно для тех предприятий, которые хотят автоматизировать обнаружение некоторых угроз. Автоматизация платит дивиденды по времени отклика при реагировании на злонамеренную деятельность.
Значение столбцов lsof
Типов открытых файлов много, и далеко не все столбцы применимы к каждому из них. Поэтому если для каких-то файлов некоторые столбцы не заполнены данными, то это нормально.
Как видеть процессы, которые открыли файл
Чтобы увидеть процессы, открывшие определённый файл, укажите имя файла в качестве параметра для lsof. Например, чтобы увидеть процессы, которые открыли файл /dev/sda, используйте эту команду:
lsof /dev/sda
Пример вывода:
Как вывести размер открытых файлов
Для показа размера используйте опцию -s:
lsof -s
Для сортировки по размеру обычных файлов выполните следующую команду:
lsof / -s | sort -rnk 7
Как исключить файлы, открытые определённым пользователем
Чтобы исключить файлы, которые были открыты пользователем, используйте оператор ^. Исключение пользователей из списка облегчает поиск интересующей вас информации. Вы должны использовать опцию -u, как и раньше, и добавить символ ^ в начале имени пользователя.
sudo lsof -u ^mial
Отрицание (поиск любых значений, кроме приведённых) можно применять с любыми опциями, для которых можно указать какое-либо значение, то есть с именами пользователей, именами команд, идентификаторами процессов, папками и т.д.
Например, чтобы показать все файлы, которые были открыты в директории /home, но которые открыты процессами, не принадлежащими пользователю mial:
sudo lsof D /home -u ^mial
Как комбинировать условия поиска lsof (логические и и или)
Давайте выведем файлы, которые были открыты пользователем mial и которые связаны с процессами systemd. Мы знаем, что можем предоставить более одного элемента поиска в командной строке, поэтому это должно быть легко.
sudo lsof -u mial -c systemd
Теперь давайте посмотрим на вывод lsof. Это не выглядит правильно; в выводе есть записи, которые были запущены пользователем root.
Это не то что мы ожидали. Что произошло?
Если вы предоставите несколько поисковых терминов, lsof вернёт любой файл, который соответствует первому поисковому запросу или второму поисковому запросу и так далее. Другими словами, она выполняет поиск ИЛИ.
Чтобы lsof выполняла поиск И, используйте опцию -a. Это означает, что будут перечислены только те файлы, которые соответствуют первому поисковому запросу, второму поисковому запросу и т. д.
Давайте попробуем это снова и используем опцию -a.
sudo lsof -u mial -c systemd -a
Теперь каждый файл в списке — это файл, который был открыт пользователем mial или от его имени и связан с systemd.
Обратите внимание, что два условия, одно из которых содержит отрицание (^) обрабатываются как логическое И:
sudo lsof D /home -u ^mial
Но если требуется логическое И, то лучше взять за правило всегда использовать опцию -a, поскольку так команда становиться более однозначной:
sudo lsof D /home -u ^mial -a
и в случае добавления третьего условия поиска она будет работать как ожидается:
sudo lsof -u mial D /home/mial -c^chromium -a
Как найти файлы, которые открыты указанным процессом
Чтобы вывести список файлов, которые были открыты определенным процессом, используйте параметр -p ПРОЦЕСС и укажите идентификатор процесса в качестве параметра.
sudo lsof -p 9099
Все файлы, которые были открыты по указанному вами идентификатору процесса, перечислены для вас.
Как остановить всю активность определённого пользователя
Иногда нужно убить все процессы определённого пользователя. Ниже команда, которая закроет все процессы пользователя mial:
sudo kill -9 `sudo lsof -t -u mial`
Как показать сокеты только для определённого протокола
Мы можем попросить lsof показать файлы, которые были открыты процессами, связанными с сетевыми и Интернет-соединениями, которые используют определённый протокол. Мы можем выбрать из TCP, UDP и SMTP. Давайте использовать протокол TCP и посмотрим, что мы получим.
lsof -i TCP # или: lsof -i UDP
Протоколы можно писать как прописными буквами, так и строчными:
sudo lsof -i tcp
Как показать только обычные файлы
Чтобы показать обычные файлы и директории и исключить все другие виды файлов (устройства, сокеты и т. д.) выполните следующую команду:
sudo lsof /
Как посмотреть файлы, открытые определённым пользователем
Чтобы ограничить отображение файлами, которые были открыты определенным пользователем, используйте параметр -u ПОЛЬЗОВАТЕЛЬ. В этом примере мы рассмотрим файлы, которые были открыты процессами, которые принадлежат или запускаются от имени mial.
sudo lsof -u mial
Будут перечисленные все файлы, которые были открыты от имени пользователя mial. Они включают в себя файлы, которые были открыты, например, средой рабочего стола, или просто в результате входа mial.
Как просмотреть сетевые соединения в диапазоне портов
Если нужно увидеть все запущенные процессы, которые открыли файлы TCP портов в диапазоне 1-1024, то выполните команду:
lsof -i TCP:1-1024
Кроме диапазона портов через дефис, можно указать несколько портов или их диапазонов через запятую:
lsof -i TCP:1-1024,8000-9000,10000
Как просмотреть только ipv4 или ipv6 соединения
IPv6 — это шестая, новая версия протокола IP.
Чтобы вывести открытые файлы сетевых соединений только для IPv4 выполните команду:
sudo lsof -i 4
Чтобы показать открытые файлы только типа IPv6 выполните:
sudo lsof -i 6
Как увидеть сетевые подключения определённого хоста
У каждого сетевого соединения есть исходный узел и пункт назначения, чтобы увидеть соединения, которые относятся только к определённому хосту, выполните команду вида:
lsof -i @ХОСТ
Например, я хочу просмотреть только сетевые соединения для локального компьютера с именем HackWare, тогда команда следующая:
lsof -i @HackWare
Если я хочу увидеть соединения с сайтом suip.biz, то команда такая:
lsof -i @suip.biz
В качестве хоста можно указывать не только имена сайтов или хостов, но и IP адрес.
Как увидеть файлы, которые открыты указанной программой или командой
В столбце COMMAND указано имя исполнимого файла, который открыл файл. Чтобы увидеть файлы, которые были открыты определенным процессом, используйте параметр -c КОМАНДА. Обратите внимание, что вы можете указать более одного поискового запроса для lsof одновременно.
sudo lsof -c ssh -c systemd
lsof выведет список файлов, которые были открыты любым из процессов, представленных в командной строке.
Как узнать идентификаторы процессов, которые открыли файл
Чтобы увидеть идентификаторы процессов, которые открыли конкретный файл, используйте параметр -t ФАЙЛ.
sudo lsof -t /usr/share/mime/mime.cache
Идентификаторы процесса, открывших файл, отображаются в виде простого списка.
Как узнать какие процессы и сколько потребляют памяти в области buff/cache
Buffer/cache используются виртуальными файловыми системами, а также для оптимизации чтения/записи на диск, то есть файлы, которые уже были прочитаны с диска, размещены там для ускоренного доступа.
Следующая команда сортирует открытые файлы по размеру — именно они и занимают место в buffer/cache:
lsof -s | sort -rnk 7 | less
Buffer/cache потребляет не столько ядро, сколько всякие браузеры, офисные программы, графическое окружение, программы, имеющие большие логи и т. п. То есть все программы, которые открывают много файлов и/или большие файлы и держат их открытыми.
Как узнать, какой процесс или служба прослушивают порт
Чтобы узнать, какая программа прослушивает определённый порт, выполните команду вида:
lsof -i :ПОРТ
Например, чтобы увидеть процесс, который открыл 80й порт:
lsof -i :80
Если вы хотите проверить занятость порта на определённом протоколе (TCP или UDP), то укажите интересующий протокол перед номером порта:
lsof -i TCP:22 # или: lsof -i UDP:53
Как узнать, на каком компьютере открыт файл в сетевой папке?
Я полагаю, что вы захотите сослаться на пост Sky100, поскольку он прав, не в том, чтобы предоставить вам то, что вы просили, а в том, что вам нужно для решения вашей проблемы. Вам нужно будет сослаться на заблокированный идентификационный номер с помощью команды “openfile / query / v” (verbose), поскольку она предоставит вам необходимые данные. Ищите имя файла в указанном списке, данные покажут, для какого элемента разрешено чтение и запись, и вместе с ним предоставит конкретный идентификационный номер. Нет, вы не сможете найти, для какой конкретной системы заблокирован файл, но с помощью предоставленных инструментов вы можете отключить этого пользователя от файла. Вот шаг за шагом, чтобы упростить мои разговоры.
1) На файловом сервере с правами администратора выполните Пуск> Выполнить> CMD [ENTER]
2) Рабочий стол CD [ENTER] (скоро вы увидите, почему.)
3) openfiles / query / v> file.txt [ENTER] (это создаст файл на рабочем столе со списком всех открытых файлов на сервере.)
4) Откройте файл file.txt и найдите строку, содержащую как ваше имя файла, так и права на чтение запись.
5) Запишите идентификационный номер в этой строке и вернитесь к командной консоли.
6) openfiles / отсоединить / ID [поставить номер ID здесь] [ENTER]
Пока у вас есть права администратора на файловом сервере, он будет отключать эту систему от файла, и, если ваша система автоматизирована, это позволит продолжать работу по мере необходимости.
Ссылки: openfiles / query /? открыть файлы / отключить /?
Если вам нужен скрипт или запрограммированное приложение, предназначенное для вашей системы, пожалуйста, не стесняйтесь комментировать, и я предоставлю контактную информацию, очень низкую цену вместе с технологией. поддержка по моему заявлению.
Колонка type
В столбце TYPE может отображаться более 70 записей. Далее перечислены только некоторые из часто встречающихся записей:
- REG: Обычный файл файловой системы.
- DIR: Директория.
- FIFO: Специальный файл FIFO (First In First Out).
- CHR: Специальный символьный файл.
- BLK: Специальный блочный файл.
- INET: Интернет-сокет.
- unix: Доменный сокет UNIX.
- IPv4: IPv4 сокет.
- IPv6: Файлы IPv6 сети — даже если её адрес IPv4 преобразован в IPv6 адрес.
- sock: Сокет неизвестного домена.
- DEL: Указатель Linux для удалённого файла.
- LINK: Файл символьной ссылки.
- PIPE: Труба (pipe) — способ обмена данными между процессами.
Колонка fd
Дескриптор файла в столбце FD может быть одним из многих вариантов; на странице руководства они перечислены все:
man lsof
Запись в столбце FD может состоять из трёх частей: дескриптор файла, символ режима и символ блокировки.
Некоторые популярные файловые дескрипторы:
- cwd: текущий рабочий каталог.
- err: информация об ошибке FD (см. столбец NAME).
- ltx: текст разделяемой библиотеки (код и данные).
- m86: файл сопоставления DOS Merge.
- mem: файл с отображением в памяти.
- mmap: устройство с отображением в памяти.
- pd: родительский каталог.
- rtd: корневой каталог.
- txt: текст программы (код и данные)
Символ режима может быть одним из следующих:
- r: доступ для чтения.
- w: доступ для записи.
- u: Доступ для чтения и записи.
- : [символ пробела], если режим неизвестен и нет символа блокировки.
- –: режим неизвестен и есть символ блокировки.
Символ блокировки может быть одним из:
- r: Блокировка чтения на часть файла.
- R: Блокировка чтения на весь файл.
- w: Блокировка записи для на часть файла.
- W: Блокировка записи для на весь файл.
- u: Блокировка чтения и записи любой длины.
- U: неизвестный тип блокировки.
- : [символ пробела]. Нет блокировки.
Колонка name
В этом поле может быть:
- имя точки монтирования и файловой системы, в которой находится файл;
- или имя файла, указанное в опции имён (после разрешения всех символических ссылок);
- или имя символьного специального или блочного специального устройства;
- или локальный и удалённый Интернет-адреса сетевого файла; после имени локального хоста или IP-адреса ставится двоеточие (‘:’), порт, «->» и удалённый адрес, состоящий из двух частей; IP-адреса могут быть представлены в виде чисел или имён, в зависимости от опций |-M, -n и -P; номера IPv6, разделённые двоеточиями, заключаются в квадратные скобки; адреса IPv4 INADDR_ANY и IPv6 IN6_IS_ADDR_UNSPECIFIED, а также нулевые номера портов представлены звёздочкой (‘*’); за адресом назначения UDP может следовать количество времени, прошедшее с момента отправки последнего пакета в пункт назначения; за удалёнными адресами TCP, UDP и UDPLITE может следовать информация TCP/TPI в скобках, такая как: состояние (например, «(ESTABLISHED)», «(Unbound)»), размеры очереди и размеры окон (не для всех диалектов) — вывод в духе того, что сообщает netstat; см. описание опции -T или описание поля TCP/TPI в ВЫХОДЕ ДЛЯ ДРУГИХ ПРОГРАММ для получения дополнительной информации о состоянии, размере очереди и размере окна;
- или адрес или имя сокета домена UNIX, возможно, включая имя устройства клонирования потока, имя пути объекта файловой системы, локальные и внешние адреса ядра, информацию о паре сокетов и связанный адрес vnode;
- или имена локальной и удалённой точек монтирования файла NFS;
- или «STR», за которым следует имя потока;
- или имя символьного устройства потока, за которым следует «->» и имя потока, или список имён потоковых модулей, разделённых знаком «->»;
- или другое значение, характерное обычно для определённых ОС;
Команда lsof
lsof означает ‘LiSt Open Files’ (список открытых файлов). Эта программа используется чтобы узнать, какие файлы открыты и каким процессом.
Для чего нужно знать, какие файлы открыты? Эта информация поможет узнать о многом происходящем в системе, об устройстве и работе Linux, а также решить проблемы, например, когда вы не можете размонтировать диск из-за того, что устройство используется, но вы не можете найти, какой именно программой.
Многие процессы или устройства, о которых lsof может сообщать, принадлежат root или были запущены пользователем root, поэтому вам нужно будет использовать команду sudo с lsof.
И поскольку этот список будет очень длинным, то можно передать его команде less:
sudo lsof | less
До появления вывода lsof, пользователи могут увидеть предупреждающее сообщение в окне терминала.
Методика подсчёта открытых файлов
Для получения информации о количестве всех открытых файлов всеми процессами в Linux некоторые «знатоки» предлагают использовать команду типа
# lsof | wc -l
Однако такая команда показывает гораздо большее значение, чем всего открыто файлов в системе на данный момент на самом деле. Это связано с тем, что по несколько раз в подсчёт попадают одни и теже открытые файлы, используемые разными процессами.
Поэтому проще для получения общего числа открытых файлов использовать данные ядра Linux
# cat /proc/sys/fs/file-nr5248 0 610862 Первое число – общее количество занятых/используемых на данный момент времени файловых дескрипторов.
Второе число – количество выделенных процессам, но не используемых в данный момент дескрипторов.
Третье число – максимальное количество открытых дескрипторов
Открываем консоль управления компьютером
Находим значок “Мой компьютер” (как в меню Пуск, так и на рабочем столе), и нажимаем на нем правой кнопкой мыши. В появившемся меню нажимаем “Управление”.
В открывшейся консоли, а точнее в её левой части, ищем пункт “Общие папки”, и нажимаем на него.
Так же в эту консоль можно попасть выполнив следующую команду, или создав ярлык:
C:WindowsSystem32fsmgmt.mscОтображение файлов, связанных с интернет-подключениями и командами
Мы можем использовать опцию -c КОМАНДА для поиска файлов, открытых определёнными процессами. Чтобы найти файлы, которые были открыты через Интернет или сетевые подключения, связанные с процессом ssh, используйте следующую команду:
lsof -i -a -c ssh
Отображение файлов, связанных с интернет-подключениями и портами
Мы можем сделать lsof отчёт о файлах, которые были открыты через интернет или сетевые подключения на конкретном порту. Для этого мы используем символ «:», за которым следует номер порта.
Здесь мы просим lsof перечислить файлы, которые были открыты сетевым или Интернет-соединением с использованием порта 22.
lsof -i :22
Отображение файлов, связанных с подключениями к интернету
Опция -i позволяет просматривать файлы, открытые процессами, связанными с сетевыми и Интернет-соединениями.
sudo lsof -i
Отображаются все файлы, связанные с сетевыми подключениями и подключению к Интернету.
Отображение файлов, связанных с подключениями к интернету, по идентификатору процесса
Чтобы увидеть файлы, открытые подключениями к Интернету, которые связаны с определенным идентификатором процесса, добавьте параметр -p PID и параметр -a.
Здесь мы ищем файлы, открытые через Интернет или сетевое соединение, с помощью процесса с идентификатором 606.
sudo lsof -i -a -p 606
Поиск с использованием регулярных выражений программ, открывших файлы
В фильтрах lsof вы можете использовать регулярные выражения.
В следующем примере будут найдены все файлы, открытые процессом, имя которого состоит ровно из четырёх символов и третьим символом в имени является буква «o».
lsof -c /^..o.$/i
А этот пример найдёт все файлы, открытые процессом, имя которого состоит ровно из четырёх символов:
lsof -c /^....$/i
Просмотр пользователей шары
Теперь перед нами появляются три пункта:
Сочетание фильтров сетевых соединений
Можно использовать все фильтры сразу в команде вида:
lsof -i ПРОТОКОЛ@ХОСТ:ПОРТ
Пример:
lsof -i TCP@suip.biz:1-4000
Автоматическое обновление выводимой информации lsof
Чтобы перевести lsof в режим повтора, мы можем использовать опцию r СЕКУНДЫ или её вариант -r СЕКУНДЫ. Опцию повторения можно применить двумя способами: r или -r. Мы также должны добавить количество секунд, которое мы хотим, чтобы lsof ожидал перед обновлением дисплея.
Использование опции повтора в любом формате заставляет lsof отображать результаты как обычно, но добавляет пунктирную линию внизу экрана. Программа ожидает количество секунд, указанное в командной строке, а затем обновляет дисплей новым набором результатов.
С опцией -r это будет продолжаться пока вы не нажмете Ctrl c. В формате r программа будет продолжаться до тех пор, пока не будет получен пустой результат, или пока вы не нажмете Ctrl c.
sudo lsof -u mial -c ssh -a -r5
Обратите внимание на пунктирную линию (=======) внизу списка. Она отделяет каждое новое отображение данных при обновлении вывода.




