Como garantir que apenas um processo específico leia um pipe nomeado?

Como garantir que apenas um processo específico leia um pipe nomeado?

Suponha que, no tempo (1), eu crie um pipe nomeado usando Python com o objetivo de que eventualmente esse processo Python escreva algo nesse pipe nomeado. Por que? Porque, no momento (2), há outro processo que se espera que leia aquele pipe nomeado.

Então, basicamente, é IPC por meio de pipes nomeados. Por que isso é legal? Porque se parece com um arquivo, de modo que o outro processo que só pode ler arquivos pode ser comunicado por meio desse mecanismo de pipe nomeado como um IPC conveniente, sem a necessidade de reescrever o outro processo.

Mas há um problema:suponha que entre o tempo (1) e o tempo (2), um processo maligno começou a ler o canal nomeado primeiro antes do processo pretendido. Dessa forma, meu script Python pode acabar enviando dados para um processo não intencional. Portanto, não estou preocupado se o sequestrador começar a gravar no processo em meu modelo de risco específico (estou preocupado apenas com a leitura do sequestro do canal antes do processo pretendido).

Pergunta:existe algum mecanismo para garantir que nenhum outro processo além do pretendido leia do IPC diferente do processo pretendido?

Responder1

Pipes nomeados têm permissões de arquivo como qualquer outro arquivo. Certifique-se de que, ao criar o pipe, as permissões sejam definidas de forma que apenas a conta destinada a executar o processo possa lê-lo.

informação relacionada