Найти процесс, связанный с launchd

TCP-порт 5901 открыт на моей машине и причиняет вред, и я хочу знать, какой процесс его открывает. Когда я запускаю, lsof -i -Pя вижу, что launchd — это процесс, который открыл порт.

Есть ли быстрый способ определить, какой файл plist запуска используется для открытия этого порта? Я бы предпочел не просматривать каждый список, упомянутый launchctl list.

Ответы (2)

Во-первых, открывается ли он системой launchd (идентификатор процесса 1, работающий от имени пользователя root) или пользователем launchd (работающий от имени пользователя)? Если это система launchd, вам нужен LaunchDaemon; если это пользовательский launchd, вам нужен LaunchAgent.

Предполагая, что это системный launchd, вы можете найти соответствующий LaunchDaemon следующим образом:

grep 5901 {,/System}/Library/LaunchDaemons/*

(примечание: если бы порт 5901 был указан в /etc/services, вам также пришлось бы искать его по имени и по номеру. Но это не так, так что вам не о чем беспокоиться.)

Также возможно, что LaunchDaemon был загружен из какого-то другого места; отследить это было бы запутанно, поэтому сначала начните с простой проверки.

Круто grepтам. Хорошее обобщение для /etc/services .

Порт 5901 используется для VNC ( совместное использование экрана удаленного рабочего стола в OS X ), и по замыслу launchd фактически считывает все файлы конфигурации, загруженные на ваш Mac, а затем прослушивает порты, а не запускает программу, которая в конечном итоге будет получать сообщения через этот порт. .

В этом случае, поскольку вы видите только launchd, а не процесс screensharingd или ScreensharingAgent , вы можете сделать вывод, что launchd прослушивает в качестве прокси другой процесс, который в данный момент не запущен (или, возможно, еще не запущен).

Вы можете проверить это, отключив настройки общего доступа к экрану в Системных настройках или удалив любое другое программное обеспечение удаленного сервера VNC, которое у вас есть, а затем повторно изучив файлы lsof.

Таким образом, у нас нет программного обеспечения VNC, о котором я знаю, установленного на компьютере. Кроме того, совместное использование экрана и все службы удаленного управления отключены, но порт все еще открыт. Я знаю, что с этим портом связан какой-то процесс, потому что, когда я подключаюсь к нему через netcat, моя машина зависает.
Хм - я не могу придумать другого короткого пути, кроме того, которого вы хотите избежать - выяснить, какой plist заставляет launchd слушать на 5901. У меня нет никаких систем, прослушивающих этот порт - так что, надеюсь, это что-то невинное и не вредоносное ПО.