#python #linux #pipe
#python #linux #канал
Вопрос:
согласно этому сообщению в блоге os.pipe используется для создания анонимных каналов.
первая консоль python:
import os
rfd, wfd = os.pipe()
w = os.fdopen(wfd, 'bw')
w.write(b'1n') # 2
w.flush()
os.getpid() # 13134
rfd # 3
вторая консоль python:
pipe = open('/proc/13134/fd/3', 'rb')
pipe.readline() # b'1n'
https://unix.stackexchange.com/a/156870/227331 также упоминается эта проблема. Как я могу создать канал, который недоступен ни для одного процесса?
Комментарии:
1. В том же ответе также говорится, что любой дескриптор файла доступен через
/proc
и описывает, почему это не проблема.2. Только владелец процесса и root могут использовать /proc/*/fd/ , а не «кто угодно».
3. По ссылке
The "peeker" must be either running under the same user as the subject or root, so it's not a security problem
. Используйте другого пользователя. Кстати, вы можете создать канал, открыть его и удалить, чтобы канал был недоступен. Но дескриптор файла будет доступен из/proc
. Вы также можете размонтировать/proc
. Запустите процесс в chroot.4. Но… почему это плохо? Вы не доверяете пользователю компьютера? В любом случае он может делать с компьютером все, что захочет, почему вас волнует, читает ли он из одного fd? Тем не менее
wayland doesn't permit running GUIs as other users
, запустите два процесса, один для gui и один для fd.5. Я поддерживаю ваш вопрос, потому что он хорошо написан. Это по существу, с кодом, показывающим, что вы имеете в виду, и вы провели свое исследование. Хотя в ваших комментариях есть немного разглагольствований, которые могут или не могут спровоцировать людей на понижение. Вероятно, вам следует указать область действия в вопросе, а не в комментариях. Если root, Wayland и GUI имеют решающее значение, укажите это в вопросе. Комментарии могут быть трудными для чтения; они упорядочены по голосам, а не по хронологическому принципу. Также лучше объясните, почему вы обеспокоены, если эта
/proc
запись в любом случае доступна только для владельца и root.