Цель ссылки канала существует где-нибудь в файловой системе?

IIRC демонам свойственно работать как пользователь никто. Таким образом, это явно, что у них больше нет прав, чем необходимый (ни один) после запуска.

Например, если я делаю:

ps -u nobody

в моей системе это показывает dnsmasq как процесс.

Я не могу найти подтверждение, но я не думаю, что это мудрый удаляет эти учетные записи, я не уверен, имеют ли процессы, которые используют имя учетной записи, разумную нейтрализацию.

5
16.04.2014, 01:59
1 ответ
[118687] Короче говоря, его нет.

В длину:

В Линуксе есть 2 типа труб, названных трубами (aka, fifo) и обычными трубами.

Названные трубы создаются с помощью [119088]mkfifo[119089] ([119090]man 3 mkfifo[119091]) системного вызова. Именованные каналы существуют в виде файлов в файловой системе. Один процесс открывает его для чтения, а другой для записи.

Обычные трубы создаются системным вызовом [119092]pipe[119093] ([119094]man 2 pipe[119095]). После открытия они ведут себя точно так же, как при открытии трубы mkfifo. Они берут дескриптор файла, один конец открыт для чтения, другой - для записи.

Так как они берут дескриптор файла, они появляются в [119096]/proc/PID/fd/[119097]. Но так как они нигде не существуют как настоящий файл, запись в [119098]/proc/PID/fd/[119099] должна сделать немного магии. Таким образом, в основном, труба становится представлена как сим-ссылка с фальшивой мишенью. Когда вы открываете сим-ссылку, ядро действительно открывает канал, который представлен сим-ссылкой. Но так как это симлинк, и у симлинков есть цели, все, что попытается разыменовать симлинк, вернет его обратно. Просто эта цель не указывает на действительный файл.

Обычно вы не можете сделать это с помощью симлинков, однако файловая система [119100]/proc[119101] не является обычной файловой системой. Это поддельная файловая система, представленная ядром. А так как содержимое создаётся ядром, то ядро может нарушить свои собственные правила.[118702].

5
27.01.2020, 20:39

Теги

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