- Узнать кто или что удаляет файл
- Как найти пользователя, который удалил файл?
- 2 ответа 2
- Лог файлы Linux по порядку
- Основные лог файлы
- И другие журналы
- Чем просматривать — lnav
- Как пользоваться lsof для просмотра открытых файлов (в Linux всё является файлами)
- В Linux все является файлом
- Команда lsof
- Значение столбцов lsof
- Колонка FD
- Колонка TYPE
- Как видеть процессы, которые открыли файл
- Как посмотреть все файлы, открытые в определённом каталоге
- Как показать только обычные файлы
- Как увидеть файлы, которые открыты указанной программой или командой
- Как посмотреть файлы, открытые определённым пользователем
- Как исключить файлы, открытые определённым пользователем
- Как найти файлы, которые открыты указанным процессом
- Как узнать идентификаторы процессов, которые открыли файл
- Как вывести размер открытых файлов
- Как увидеть какие процессы сколько занимают в области Buff/Cache
- Как комбинировать условия поиска lsof (логические И и ИЛИ)
- Автоматическое обновление выводимой информации lsof
- Отображение файлов, связанных с подключениями к Интернету
- Отображение файлов, связанных с подключениями к Интернету, по идентификатору процесса
- Отображение файлов, связанных с Интернет-подключениями и командами
- Отображение файлов, связанных с Интернет-подключениями и портами
- Как показать сокеты только для определённого протокола
- Как узнать, какой процесс или служба прослушивают порт
- Как просмотреть только IPv4 или IPv6 соединения
- Как увидеть сетевые подключения определённого хоста
- Сочетание фильтров сетевых соединений
- Как остановить всю активность определённого пользователя
- Поиск по регулярным выражениям программ, открывших файлы
- Основы команды lsof
Узнать кто или что удаляет файл
Здравствуйте, подскажите такую штуку, на сервере (centos) постоянно пропадает один файл. Поставил inotify для отслеживания. Видно что в 5 утра файл был перемещен, скорее всего cron какой-то, но не могу понять, как определить что это за крон, то есть inotify показывает мне что файл был перемещен, но куда и кем непонятно, кронов в системе очень много просматривать и изучать каждый кронтаб — не вариант, есть ли способ узнать, кто или что перемещает этот файл и куда?
chattr +i на файл, и смотреть по логам, что не выполнилось
просматривать и изучать каждый кронтаб — не вариант
Это плохо, ибо получается машина вами командует, а не вы ей.
Ну я имел ввиду, что может есть какй-то способ автоматизировать, поиск такой информации, думаю вариант с chattr +i вполне подойдет
Спасибо большое, то что надо!
поиск такой информации, думаю вариант с chattr +i вполне подойдет
Это решение из серии: в метро приникают зайцами, а давайте забетонируем вход и не будут проникать.
Завтра вдруг обнаружится, что раз в три месяца пропадает ещё один файл, а через полгода — раз в год ещё один файл.
Чище будет настроить auditd, он для этого и создан.
Источник
Как найти пользователя, который удалил файл?
Какой-то пользователь на моем сервере просто удалил файл, я хочу узнать, кто это сделал. Просматривать историю каждого невозможно, и команда не может быть такой простой, как rm -rf file . Можно ли узнать, кто внес последние изменения в папку? Я нахожусь на Linux.
2 ответа 2
В общем, сложно определить, кто удалил файлы, кто изменил файлы, не зная о «системе журналирования» или предварительно настроенных событиях.
Попробуйте выяснить, кто вошел в тот момент, когда каталог был удален.
проверьте системный журнал ОС (/var/adm/syslog/syslog.log для hp-ux, /var /log /messages для linux)
Попробуйте последний коммандос, чтобы получить список тех, кто вошел в систему, когда
Проверьте историю команд sidadm, пользователя root, используйте команду history или псевдоним h
Проверьте, есть ли запущенные скрипты, которые регулярно удаляют файлы
Также Вы можете посмотреть на ваших пользователей. bash_history, предполагая, что они используют bash:
Выполните следующие команды в терминале:
это файл, который может удалить только пользователь root, затем посмотрите на .bash_history пользователя root, но затем вы должны выяснить, кто был зарегистрирован как пользователь root или имеет права root. Для этого вам может помочь команда last root | more
Поскольку каталог trans может быть подключен по NFS к другим серверам, возможно, вам также потребуется выполнить проверки там.
Также для будущего использования установите любые решения SIEM с открытым исходным кодом, такие как alienvault и т.д., Которые могут помочь вам поддерживать и регистрировать события.
Источник
Лог файлы Linux по порядку
Невозможно представить себе пользователя и администратора сервера, или даже рабочей станции на основе Linux, который никогда не читал лог файлы. Операционная система и работающие приложения постоянно создают различные типы сообщений, которые регистрируются в различных файлах журналов. Умение определить нужный файл журнала и что искать в нем поможет существенно сэкономить время и быстрее устранить ошибку.
Журналирование является основным источником информации о работе системы и ее ошибках. В этом кратком руководстве рассмотрим основные аспекты журналирования операционной системы, структуру каталогов, программы для чтения и обзора логов.
Основные лог файлы
Все файлы журналов, можно отнести к одной из следующих категорий:
Большинство же лог файлов содержится в директории /var/log .
- /var/log/syslog или /var/log/messages содержит глобальный системный журнал, в котором пишутся сообщения с момента запуска системы, от ядра Linux, различных служб, обнаруженных устройствах, сетевых интерфейсов и много другого.
- /var/log/auth.log или /var/log/secure — информация об авторизации пользователей, включая удачные и неудачные попытки входа в систему, а также задействованные механизмы аутентификации.
- /var/log/dmesg — драйвера устройств. Одноименной командой можно просмотреть вывод содержимого файла. Размер журнала ограничен, когда файл достигнет своего предела, старые сообщения будут перезаписаны более новыми. Задав ключ —level= можно отфильтровать вывод по критерию значимости.
- /var/log/alternatives.log — Вывод программы update-alternatives , в котором находятся символические ссылки на команды или библиотеки по умолчанию.
- /var/log/anaconda.log — Записи, зарегистрированные во время установки системы.
- /var/log/audit — Записи, созданные службой аудита auditd .
- /var/log/boot.log — Информация, которая пишется при загрузке операционной системы.
- /var/log/cron — Отчет службы crond об исполняемых командах и сообщения от самих команд.
- /var/log/cups — Все, что связано с печатью и принтерами.
- /var/log/faillog — Неудачные попытки входа в систему. Очень полезно при проверке угроз в системе безопасности, хакерских атаках, попыток взлома методом перебора. Прочитать содержимое можно с помощью команды faillog .
- var/log/kern.log — Журнал содержит сообщения от ядра и предупреждения, которые могут быть полезны при устранении ошибок пользовательских модулей встроенных в ядро.
- /var/log/maillog/ или /var/log/mail.log — Журнал почтового сервера, используемого на ОС.
- /var/log/pm-powersave.log — Сообщения службы экономии заряда батареи.
- /var/log/samba/ — Логи файлового сервера Samba , который используется для доступа к общим папкам Windows и предоставления доступа пользователям Windows к общим папкам Linux.
- /var/log/spooler — Для представителей старой школы, содержит сообщения USENET. Чаще всего бывает пустым и заброшенным.
- /var/log/Xorg.0.log — Логи X сервера. Чаще всего бесполезны, но если в них есть строки начинающиеся с EE, то следует обратить на них внимание.
Для каждого дистрибутива будет отдельный журнал менеджера пакетов.
- /var/log/yum.log — Для программ установленных с помощью Yum в RedHat Linux.
- /var/log/emerge.log — Для ebuild -ов установленных из Portage с помощью emerge в Gentoo Linux.
- /var/log/dpkg.log — Для программ установленных с помощью dpkg в Debian Linux и всем семействе родственных дистрибутивах.
И немного бинарных журналов учета пользовательских сессий.
- /var/log/lastlog — Последняя сессия пользователей. Прочитать можно командой last .
- /var/log/tallylog — Аудит неудачных попыток входа в систему. Вывод на экран с помощью утилиты pam_tally2 .
- /var/log/btmp — Еже один журнал записи неудачных попыток входа в систему. Просто так, на всякий случай, если вы еще не догадались где следует искать следы активности взломщиков.
- /var/log/utmp — Список входов пользователей в систему на данный момент.
- /var/log/wtmp — Еще один журнал записи входа пользователей в систему. Вывод на экран командой utmpdump .
И другие журналы
Так как операционная система, даже такая замечательная как Linux, сама по себе никакой ощутимой пользы не несет в себе, то скорее всего на сервере или рабочей станции будет крутится база данных, веб сервер, разнообразные приложения. Каждое приложения или служба может иметь свой собственный файл или каталог журналов событий и ошибок. Всех их естественно невозможно перечислить, лишь некоторые.
- /var/log/mysql/ — Лог базы данных MySQL.
- /var/log/httpd/ или /var/log/apache2/ — Лог веб сервера Apache, журнал доступа находится в access_log , а ошибки — в error_log .
- /var/log/lighthttpd/ — Лог веб сервера lighttpd.
В домашнем каталоге пользователя могут находится журналы графических приложений, DE.
/.xsession-errors — Вывод stderr графических приложений X11.
/.xfce4-session.verbose-log — Сообщения рабочего стола XFCE4.
Чем просматривать — lnav
Почти все знают об утилите less и команде tail -f . Также для этих целей сгодится редактор vim и файловый менеджер Midnight Commander. У всех есть свои недостатки: less неважно обрабатывает журналы с длинными строками, принимая их за бинарники. Midnight Commander годится только для беглого просмотра, когда нет необходимости искать по сложному шаблону и переходить помногу взад и вперед между совпадениями. Редактор vim понимает и подсвечивает синтаксис множества форматов, но если журнал часто обновляется, то появляются отвлекающие внимания сообщения об изменениях в файле. Впрочем это легко можно обойти с помощью .
Недавно я обнаружил еще одну годную и многообещающую, но слегка еще сыроватую, утилиту — lnav, в расшифровке Log File Navigator.
Установка пакета как обычно одной командой.
Навигатор журналов lnav понимает ряд форматов файлов.
- Access_log веб сервера.
- CUPS page_log
- Syslog
- glog
- dpkg.log
- strace
- Произвольные записи с временными отметками
- gzip, bzip
- Журнал VMWare ESXi/vCenter
Что в данном случае означает понимание форматов файлов? Фокус в том, что lnav больше чем утилита для просмотра текстовых файлов. Программа умеет кое что еще. Можно открывать несколько файлов сразу и переключаться между ними.
Программа умеет напрямую открывать архивный файл.
Показывает гистограмму информативных сообщений, предупреждений и ошибок, если нажать клавишу . Это с моего syslog-а.
Кроме этого поддерживается подсветка синтаксиса, дополнение по табу и разные полезности в статусной строке. К недостаткам можно отнести нестабильность поведения и зависания. Надеюсь lnav будет активно развиваться, очень полезная программа на мой взгляд.
Источник
Как пользоваться lsof для просмотра открытых файлов (в Linux всё является файлами)
Если в Linux все является файлом, то в этой операционной системе должно быть нечто большее, чем просто файлы на вашем жёстком диске. Из этой обучающей статьи вы узнаете, как использовать lsof для просмотра всех других устройств и процессов, которые обрабатываются как файлы.
В Linux все является файлом
Часто цитируемая фраза о том, что всё в Linux является файлом, является своего рода правдой. Файл представляет собой набор байтов. Программы и устройства (принтер, экран, клавиатура, мышь, терминал, сетевая карта) могут генерировать или принимать потоки байт, и в этом качестве они сами проявляются как файлы. Многие системные компоненты, такие как клавиатуры, сокеты, принтеры и коммуникационные процессы, принимают или генерируют потоки байтов. Поскольку они принимают, генерируют или принимают и генерируют потоки байтов, эти устройства могут обрабатываться — на очень низком уровне — как файлы. Кроме обычных файлов, файлами также являются директории (папки), сетевые сокеты (подключения по сети), устройства (диски, терминалы, клавиатура, мышь и прочее — это всё файлы), pipe (технология обмена данными между процессами).
Эта концепция устройства упростила реализацию операционной системы Unix. Это означало, что небольшой набор обработчиков, инструментов и API-интерфейсов может быть создан для обработки широкого спектра различных ресурсов.
Файлы данных и программ, которые находятся на вашем жёстком диске, являются обычными файлами файловой системы. Мы можем использовать команду ls, чтобы вывести их и узнать некоторые детали о них. Но как мы узнаем обо всех других процессах и устройствах, которые рассматриваются как файлы? Для этого используется команда lsof. Она выводит списки открытых файлов в системе. То есть она перечисляет всё, что обрабатывается, как если бы это был файл.
Команда lsof
lsof означает ‘LiSt Open Files’ (список открытых файлов). Эта программа используется чтобы узнать, какие файлы открыты и каким процессом.
Для чего нужно знать, какие файлы открыты? Эта информация поможет узнать о многом происходящем в системе, об устройстве и работе Linux, а также решить проблемы, например, когда вы не можете размонтировать диск из-за того, что устройство используется, но вы не можете найти, какой именно программой.
Многие процессы или устройства, о которых lsof может сообщать, принадлежат root или были запущены пользователем root, поэтому вам нужно будет использовать команду sudo с lsof.
И поскольку этот список будет очень длинным, то можно передать его команде less:
sudo lsof | less
До появления вывода lsof, пользователи могут увидеть предупреждающее сообщение в окне терминала.
lsof пытается обработать все смонтированные файловые системы. Это предупреждающее сообщение появляется из-за того, что lsof обнаружил виртуальную файловую систему GNOME (GVFS). Это особый случай файловой системы в пространстве пользователя (FUSE). Он действует как мост между GNOME, его API и ядром. Никто, даже root, не может получить доступ к одной из этих файловых систем, кроме владельца, который её смонтировал (в данном случае, текущий пользователь). Вы можете игнорировать это предупреждение. Если же вы хотите получить доступ к данной файловой системе, то запустите lsof без sudo.
Шапка вывода lsof:
Значение столбцов lsof
Типов открытых файлов много, и далеко не все столбцы применимы к каждому из них. Поэтому если для каких-то файлов некоторые столбцы не заполнены данными, то это нормально.
- COMMAND: Имя команды, связанной с процессом, который открыл файл.
- PID: Идентификационный номер процесса, который открыл файл.
- TID: Идентификационный номер задачи (потока) . Пустой столбец означает, что это не задача; это процесс.
- TASKCMD: это имя команды задачи. Обычно это будет то же самое, что и процесс, названный в столбце COMMAND, но некоторые реализации задач (например, Linux) позволяют задаче изменить имя своей команды.
- USER: идентификатор пользователя или имя пользователя, которому принадлежит процесс, или идентификатор пользователя или логин человека, которому принадлежит каталог в /proc, где lsof находит информацию о процессе (также смотрите Что такое файловая система /proc в Linux)
- FD: показывает файловый дескриптор файла. Файловые дескрипторы описаны ниже.
- TYPE: тип узла, связанного с файлом. Виды данных типов описаны ниже.
- DEVICE: содержит номера устройств, разделённые запятыми, для специальных символьных, специальных блочных, обычных файлов, каталогов или NFS. Также может отображаться базовый адрес или имя устройства с сокетом Linux AX.25.
- SIZE/OFF: Показывает размер файла или смещение файла в байтах.
- NODE: Показывает номер узла локального файла или номер узла NFS-файла на хосте сервера или тип интернет-протокола. Может отображаться STR для потока, IRQ или номер инода устройства с сокетом Linux AX.25.
- NAME: показывает имя точки монтирования и файловой системы, в которой находится файл.
Колонка FD
Дескриптор файла в столбце FD может быть одним из многих вариантов; на странице руководства они перечислены все:
Запись в столбце FD может состоять из трёх частей: дескриптор файла, символ режима и символ блокировки.
Некоторые популярные файловые дескрипторы:
- cwd: текущий рабочий каталог.
- err: информация об ошибке FD (см. столбец NAME).
- ltx: текст разделяемой библиотеки (код и данные).
- m86: файл сопоставления DOS Merge.
- mem: файл с отображением в памяти.
- mmap: устройство с отображением в памяти.
- pd: родительский каталог.
- rtd: корневой каталог.
- txt: текст программы (код и данные)
Символ режима может быть одним из следующих:
- r: доступ для чтения.
- w: доступ для записи.
- u: Доступ для чтения и записи.
- : Пробел, если режим неизвестен и нет символа блокировки.
- —: режим неизвестен и есть символ блокировки.
Символ блокировки может быть одним из:
- r: Блокировка чтения на часть файла.
- R: Блокировка чтения на весь файл.
- w: Блокировка записи для на часть файла.
- W: Блокировка записи для на весь файл.
- u: Блокировка чтения и записи любой длины.
- U: неизвестный тип блокировки.
- : символ пробела. Нет блокировки.
Колонка 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) — способ обмена данными между процессами.
Как видеть процессы, которые открыли файл
Чтобы увидеть процессы, открывшие определённый файл, укажите имя файла в качестве параметра для lsof. Например, чтобы увидеть процессы, которые открыли файл /dev/sda, используйте эту команду:
Как вы можете знать (а если не знаете, то смотрите статью «Структура директорий Linux. Важные файлы Linux»), файл /dev/sda является жёстким диском. Приведённая выше команда поможет найти процесс, который не даёт отмонтировать (отсоединить) диск.
Можно проверить, какой командой открыты обычные файлы, например:
Видно, что файл открыт пользователем mial, это обычный файл (REG) и что он открыт приложением soffice.b (на самом деле приложение soffice.bin, но по какой-то причине оно здесь не целиком).
Аналогично можно проверить, открыты (запущены) ли исполнимые файлы, например, для проверки, запущен ли файл /bin/bash:
Как посмотреть все файлы, открытые в определённом каталоге
Чтобы увидеть файлы, которые были открыты из каталога, и процессы, которые их открыли, передайте каталог в lsof в качестве параметра. Для этого используйте опцию +D (каталог).
Чтобы увидеть все файлы, которые открыты в каталоге /var/log/, используйте эту команду:
lsof отвечает списком всех открытых файлов в этом каталоге.
Чтобы увидеть все файлы, которые были открыты из каталога /home, используйте следующую команду:
Файлы, которые были открыты из каталога /home. Обратите внимание, что в некоторых столбцах данные поместились не полностью.
Как показать только обычные файлы
Чтобы показать обычные файлы и директории и исключить все другие виды файлов (устройства, сокеты и т. д.) выполните следующую команду:
Как увидеть файлы, которые открыты указанной программой или командой
В столбце COMMAND указано имя исполнимого файла, который открыл файл. Чтобы увидеть файлы, которые были открыты определенным процессом, используйте параметр -c (КОМАНДА). Обратите внимание, что вы можете указать более одного поискового запроса для lsof одновременно.
lsof выведет список файлов, которые были открыты любым из процессов, представленных в командной строке.
Как посмотреть файлы, открытые определённым пользователем
Чтобы ограничить отображение файлами, которые были открыты определенным пользователем, используйте параметр -u (ПОЛЬЗОВАТЕЛЬ). В этом примере мы рассмотрим файлы, которые были открыты процессами, которые принадлежат или запускаются от имени mial.
Будут перечисленные все файлы, которые были открыты от имени пользователя mial. Они включают в себя файлы, которые были открыты, например, средой рабочего стола, или просто в результате входа mial.
Как исключить файлы, открытые определённым пользователем
Чтобы исключить файлы, которые были открыты пользователем, используйте оператор ^. Исключение пользователей из списка облегчает поиск интересующей вас информации. Вы должны использовать опцию -u, как и раньше, и добавить символ ^ в начале имени пользователя.
Отрицание (поиск любых значений, кроме приведённых) можно применять с любыми опциями, для которых можно указать какое-либо значение, то есть с именами пользователей, именами команд, идентификаторами процессов, папками и т.д.
Например, чтобы показать все файлы, которые были открыты в директории /home, но которые открыты процессами, не принадлежащими пользователю mial:
Как найти файлы, которые открыты указанным процессом
Чтобы вывести список файлов, которые были открыты определенным процессом, используйте параметр -p (ПРОЦЕСС) и укажите идентификатор процесса в качестве параметра.
Все файлы, которые были открыты по указанному вами идентификатору процесса, перечислены для вас.
Как узнать идентификаторы процессов, которые открыли файл
Чтобы увидеть идентификаторы процессов, которые открыли конкретный файл, используйте параметр -t (ФАЙЛ).
Идентификаторы процесса, открывших файл, отображаются в виде простого списка.
Как вывести размер открытых файлов
Для показа размера используйте опцию -s:
Для сортировки по размеру обычных файлов выполните следующую команду:
Как увидеть какие процессы сколько занимают в области Buff/Cache
Buffer/cache используются виртуальными файловыми системами, а также для оптимизации чтения/записи на диск, то есть файлы, которые уже были прочитаны с диска, размещены там для ускоренного доступа.
Следующая команда сортирует открытые файлы по размеру — именно они и занимают место в buffer/cache:
Buffer/cache потребляет не столько ядро, сколько всякие браузеры, офисные программы, графическое окружение, программы, имеющие большие логи и т. п. То есть все программы, которые открывают много файлов и/или большие файлы и держат их открытыми.
Как комбинировать условия поиска lsof (логические И и ИЛИ)
Давайте выведем файлы, которые были открыты пользователем mial и которые связаны с процессами systemd. Мы знаем, что можем предоставить более одного элемента поиска в командной строке, поэтому это должно быть легко.
Теперь давайте посмотрим на вывод lsof. Это не выглядит правильно; в выводе есть записи, которые были запущены пользователем root.
Это не то что мы ожидали. Что произошло?
Если вы предоставите несколько поисковых терминов, lsof вернёт любой файл, который соответствует первому поисковому запросу или второму поисковому запросу и так далее. Другими словами, она выполняет поиск ИЛИ.
Чтобы lsof выполняла поиск И, используйте опцию -a. Это означает, что будут перечислены только те файлы, которые соответствуют первому поисковому запросу, второму поисковому запросу и т. д.
Давайте попробуем это снова и используем опцию -a.
Теперь каждый файл в списке — это файл, который был открыт пользователем mial или от его имени и связан с systemd.
Обратите внимание, что два условия, одно из которых содержит отрицание (^) обрабатываются как логическое И:
Но если требуется логическое И, то лучше взять за правило всегда использовать опцию -a, поскольку так команда становиться более однозначной:
и в случае добавления третьего условия поиска она будет работать как ожидается:
Автоматическое обновление выводимой информации lsof
Чтобы перевести lsof в режим повтора, мы можем использовать опцию +r (СЕКУНДЫ) или её вариант -r (СЕКУНДЫ). Опцию повторения можно применить двумя способами: +r или -r. Мы также должны добавить количество секунд, которое мы хотим, чтобы lsof ожидал перед обновлением дисплея.
Использование опции повтора в любом формате заставляет lsof отображать результаты как обычно, но добавляет пунктирную линию внизу экрана. Программа ожидает количество секунд, указанное в командной строке, а затем обновляет дисплей новым набором результатов.
С опцией -r это будет продолжаться пока вы не нажмете Ctrl+c. В формате +r программа будет продолжаться до тех пор, пока не будет получен пустой результат, или пока вы не нажмете Ctrl+c.
Обратите внимание на пунктирную линию внизу списка. Она отделяет каждое новое отображение данных при обновлении вывода.
Отображение файлов, связанных с подключениями к Интернету
Опция -i позволяет просматривать файлы, открытые процессами, связанными с сетевыми и Интернет-соединениями.
Отображаются все файлы, связанные с сетевыми подключениями и подключению к Интернету.
Если вы не хотите, чтобы цифровые обозначения портов заменялись на имена (например, http вместо 80), то добавьте опцию -P:
Отображение файлов, связанных с подключениями к Интернету, по идентификатору процесса
Чтобы увидеть файлы, открытые подключениями к Интернету, которые связаны с определенным идентификатором процесса, добавьте параметр -p (PID) и параметр -a.
Здесь мы ищем файлы, открытые через Интернет или сетевое соединение, с помощью процесса с идентификатором 606.
Отображение файлов, связанных с Интернет-подключениями и командами
Мы можем использовать опцию -c (КОМАНДА) для поиска файлов, открытых определёнными процессами. Чтобы найти файлы, которые были открыты через Интернет или сетевые подключения, связанные с процессом ssh, используйте следующую команду:
Отображение файлов, связанных с Интернет-подключениями и портами
Мы можем сделать lsof отчёт о файлах, которые были открыты через интернет или сетевые подключения на конкретном порту. Для этого мы используем символ :, за которым следует номер порта.
Здесь мы просим lsof перечислить файлы, которые были открыты сетевым или Интернет-соединением с использованием порта 22.
Как показать сокеты только для определённого протокола
Мы можем попросить lsof показать файлы, которые были открыты процессами, связанными с сетевыми и Интернет-соединениями, которые используют определённый протокол. Мы можем выбрать из TCP, UDP и SMTP. Давайте использовать протокол TCP и посмотрим, что мы получим. Если вас интересуют только сетевые подключения на TCP протоколе или UDP протоколе, то вы можете использовать следующие команды:
Протоколы можно писать как заглавными буквами, так и прописными:
Как узнать, какой процесс или служба прослушивают порт
Чтобы узнать, какая программа прослушивает определённый порт, выполните команду вида:
Например, чтобы увидеть процесс, который открыл 80й порт:
Если вы хотите проверить занятость порта на определённом протоколе (TCP или UDP), то укажите интересующий протокол перед номером порта:
Как просмотреть только IPv4 или IPv6 соединения
IPv6 — это шестая, новая версия протокола IP.
Чтобы вывести открытые файлы сетевых соединений только для IPv4 выполните команду:
Чтобы показать открытые файлы только типа IPv6 выполните:
Как просмотреть сетевые соединения в диапазоне портов
Если нужно увидеть все запущенные процессы, которые открыли файлы TCP портов в диапазоне 1-1024, то выполните команду:
Кроме диапазона портов через дефис, можно указать несколько портов или их диапазонов через запятую:
Как увидеть сетевые подключения определённого хоста
У каждого сетевого соединения есть исходный узел и пункт назначения, чтобы увидеть соединения, которые относятся только к определённому хосту, выполните команду вида:
Например, я хочу просмотреть только сетевые соединения для локального компьютера с именем HackWare, тогда команда следующая:
Если я хочу увидеть соединения с сайтом suip.biz, то команда такая:
В качестве хоста можно указывать не только имена сайтов или хостов, но и IP адрес.
Сочетание фильтров сетевых соединений
Можно использовать все фильтры сразу в команде вида:
Как остановить всю активность определённого пользователя
Иногда нужно убить все процессы определённого пользователя. Ниже команда, которая закроет все процессы пользователя mial:
Поиск по регулярным выражениям программ, открывших файлы
В фильтрах lsof вы можете использовать регулярные выражения.
В следующем примере будут найдены все файлы, открытые процессом, имя которого состоит ровно из четырёх символов и третьим символом в имени является буква «o».
А этот пример найдёт все файлы, открытые процессом, имя которого состоит ровно из четырёх символов:
Основы команды lsof
Мы рассмотрели только самые популярные примеры использования команды lsof. Огромную документацию по этой программе с описанием всех опций вы найдёте в её справочной странице:
Источник