Сервер Time Machine в Fedora [дубликат]

В общем, чтобы найти то, что находится на другом конце сокета, вам нужно выполнить итерацию через / proc . Это, конечно, может означать, что вы позволите существующему инструменту, например netstat , lsof или ss , сделать это за вас.

Причина в том, что сокет может быть открыт разными процессами. Как только процесс открыл сокет, он может выполнить ответвление, а потомки могут изменить свои привилегии и переключиться на другие пространства имен. Также можно передавать дескрипторы файлов от процесса к несвязанному процессу, используя вспомогательные данные на сокете unix. Таким образом, у произвольных процессов может быть открыт один и тот же сокет. Не существует такой вещи, как «PID сокета», есть только «PID сокета».

Хотя это не доказывает, что нет способа перечислить PID для данного сокета, было бы очень сложно разработать такой интерфейс, особенно если учесть, что пользователи без полномочий root не узнают, когда файлы открывается процессами, запущенными от имени другого пользователя. Доступ через / proc обеспечивает безопасность через разрешения, и мне не известен какой-либо другой интерфейс для получения тех же данных.Кроме того, fuser , lsof , netstat и ss все перечисляют / proc ; если бы был другой интерфейс, я бы ожидал, что кто-нибудь им воспользуется. Так что я почти уверен, что другого пути нет.

0
18.08.2010, 20:34
0 ответов

Теги

Похожие вопросы