AtamedPipeClientStream Получил разрешение, запрещенное, даже если я могу открыть файл FIFO в качестве потока файла без пC#

Место общения программистов C#
Ответить
Anonymous
 AtamedPipeClientStream Получил разрешение, запрещенное, даже если я могу открыть файл FIFO в качестве потока файла без п

Сообщение Anonymous »

У меня есть процесс на Linux, который создает именованную трубу (FIFO -файл), затем запускает приложение DotNet, которое пытается прочитать из этой названной трубы с использованием класса с именем именным типами.

Код: Выделить всё

stat myNamedPipe.ext
File: myNamedPipe.ext
Size: 0               Blocks: 0          IO Block: 4096   fifo
Device: 802h/2050d      Inode: 117564614   Links: 1
Access: (0640/prw-r-----)  Uid: (10037/    A-user)   Gid: (10038/    b-user)
Context: system_u:object_r:home_root_t:s0
Access: 2025-03-03 18:52:38.393875788 +0000
Modify: 2025-03-03 18:52:38.393875788 +0000
Change: 2025-03-03 18:52:38.393875788 +0000
Birth: 2025-03-03 18:52:38.393875788 +0000
dotnet затем запускается через dotnet mynamedpipereader.dll -и запускается в рамках B -user
(я подтвердил, что с помощью ps aux | grep dotnet и я также запустил PS -U b -user , который также возвращает мой процесс Dottnet , и я также запустил PS -U b -user , который также возвращает мой Dot Dotnet) и я также запустил ps -us user , который также возвращает мой dot dotnet и я также выполнял ps -us user . Суммируйте

[*] fifo-файл имеет разрешения 0640/prw-r ----- для пользователя b-user
Dotnet запускает мою программу как B-пользователь.Failed to connect to named pipe '/full/path/to/MyNamedPipe.ext'.
System.Net.Sockets.SocketException (13): Permission denied /full/path/to/MyNamedPipe.ext
< /code>
Вот код, который я использую для подключения к названной трубе < /p>
using var namedPipeClientStream = new NamedPipeClientStream(".", pipeName, PipeDirection.In);
namedPipeClientStream.Connect(); //throws here
Console.WriteLine($"Connected to {pipeName}");
using var reader = new StreamReader(namedPipeClientStream);
while (reader.ReadLine() is { } line)
{
Console.WriteLine(line);
}
< /code>
Теперь, если я просто прочитаю именованную трубу как файл < /p>
using var pipeStream = File.OpenRead(pipeName);
using var reader = new StreamReader(pipeStream);
while (reader.ReadLine() is { } line)
{
Console.WriteLine(line);
}
< /code>
это работает без проблем. < /p>
Я делаю что -то не так? Или есть что -то более своеобразное происходящее?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/794 ... en-the-fif
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»