Local named pipe в домене не работает
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 18.09.21 16:50
Оценка:
Здравствуйте!

Вообще, я использую Qt, но там для винды для QLocalSocket используются именованные каналы — \\.\pipe\zzz

На домашней машине, которая состоит разве что в WORKGROUP — всё работает. На работе на доменной машине — получаю отлуп при попытке коннекта.

Есть в винде какие-то нюансы в работе с пайпами на доменных машинах?
Маньяк Робокряк колесит по городу
Re: Local named pipe в домене не работает
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 18.09.21 17:22
Оценка:
Здравствуйте, Marty, Вы писали:

M>На домашней машине, которая состоит разве что в WORKGROUP — всё работает. На работе на доменной машине — получаю отлуп при попытке коннекта.

Какая именно ошибка?

M>Есть в винде какие-то нюансы в работе с пайпами на доменных машинах?

Навскидку — разницы нет. Но может быть разница по тому, например, кто в какую Security Group входит.

В общем, как обычно, было бы не плохо получить побольше информации — что за сценарий (кто и как создает канал и как к нему происходит подключение)
Re[2]: Local named pipe в домене не работает
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 18.09.21 17:57
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

M>>На домашней машине, которая состоит разве что в WORKGROUP — всё работает. На работе на доменной машине — получаю отлуп при попытке коннекта.

МР>Какая именно ошибка?

Буду на работе — попробую уточнить. Проблема не критичная, просто пет проект попробовал запустить на рабочей машине, и получил облом


M>>Есть в винде какие-то нюансы в работе с пайпами на доменных машинах?

МР>Навскидку — разницы нет. Но может быть разница по тому, например, кто в какую Security Group входит.

Ну, вот я думал, что может кто навскидку что подскажет


МР>В общем, как обычно, было бы не плохо получить побольше информации — что за сценарий (кто и как создает канал и как к нему происходит подключение)


Вообще, это всё через Qt-шные QLocalServer/QLocalSocket работает. Навскидку я начал грешить на винду и её права доступа, но может это и Qt подгадило. Надо разбираться, да. Просто думал на халяву может кто-то решение подскажет, если проблема известная

Возможно, что QLocalServer не поднимается на доменной машине (он у меня опционален в проге, и ошибки я игнорю), а возможно, что QLocalSocket по какой-то причине отлуп получает
Маньяк Робокряк колесит по городу
Re: Local named pipe в домене не работает
От: Слава  
Дата: 18.09.21 23:10
Оценка: 3 (1)
Здравствуйте, Marty, Вы писали:

M>Есть в винде какие-то нюансы в работе с пайпами на доменных машинах?


Возьмите WinObj (WinObjEx) и запустите на той доменной машине, и посмотрите права на пайп.
Re: Local named pipe в домене не работает
От: PM  
Дата: 19.09.21 08:30
Оценка: 9 (1)
Здравствуйте, Marty, Вы писали:

M>Вообще, я использую Qt, но там для винды для QLocalSocket используются именованные каналы — \\.\pipe\zzz


M>На домашней машине, которая состоит разве что в WORKGROUP — всё работает. На работе на доменной машине — получаю отлуп при попытке коннекта.


M>Есть в винде какие-то нюансы в работе с пайпами на доменных машинах?


Хехе, у вас похоже в QLocalSocket абстракция протекла. Скорее всего там используется CreateNamedPipe и нужно сконфигурировать безопасность этого именованного канала, потому что

lpSecurityAttributes
A pointer to a SECURITY_ATTRIBUTES structure that specifies a security descriptor for the new named pipe and determines whether child processes can inherit the returned handle. If lpSecurityAttributes is NULL, the named pipe gets a default security descriptor and the handle cannot be inherited. The ACLs in the default security descriptor for a named pipe grant full control to the LocalSystem account, administrators, and the creator owner. They also grant read access to members of the Everyone group and the anonymous account.


Раньше использовали NULL DACL, чтобы разрешить полный доступ всем клиентам, но по нынешним стандартам это наверно очень небезопасно.
Re[3]: Local named pipe в домене не работает
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 19.09.21 08:50
Оценка: 18 (2)
Здравствуйте, Marty, Вы писали:

M>Возможно, что QLocalServer не поднимается на доменной машине (он у меня опционален в проге, и ошибки я игнорю), а возможно, что QLocalSocket по какой-то причине отлуп получает

Увы, с Qt я не работал почти совсем, поэтому далее погадаю лишь на кофейной гуще...
Как я уже говорил — моя гипотеза, что:
— отлуп идет с ошибкой Access Denied
— вы в коде явно дескриптор безопасности не выставляете (а Qt тоже этим не балуется и значит в CreateNamedPipe передается NULL, а значит используется дескриптор по-умолчанию

Вот тут пишут, что в этом случае права выдаются

The ACLs in the default security descriptor for a named pipe grant full control to the LocalSystem account, administrators, and the creator owner. They also grant read access to members of the Everyone group and the anonymous account


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

В общем, я бы поступил так:
— попробовал посмотреть Security Descriptor у канала (в соседней ветке подсказали, что это можно сделать через WinObjEx (я конкретно про этот https://github.com/hfiref0x/WinObjEx64), но не напрямую, а через меню Extras\Pipes. Но посмотреть права можно только у каналов, к которым можно подключиться — т.е. у которых есть свободные instances)
— явно задать Security Descriptor с правами "доступ всем без ограничений" (Full Access для Everyone).

Правда сразу же предупрежу — примеры кода не просите... у меня эта задача всплывает с частотой раз в 10 лет и я каждый раз мучительно вспоминаю как это делается.
Как вариант — попробовать выставить права на Pipe вручную через тот же WinObjEx.
Re: Local named pipe в домене не работает
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 05.10.21 10:57
Оценка:
Здравствуйте, Marty, Вы писали:

M>Есть в винде какие-то нюансы в работе с пайпами на доменных машинах?

В итоге разобрались? Заработало?
Re[2]: Local named pipe в домене не работает
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 08.10.21 22:09
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

M>>Есть в винде какие-то нюансы в работе с пайпами на доменных машинах?

МР>В итоге разобрались? Заработало?

Сидел в бане по политическим мотивам

Попробовал WinObjEx — не понятно, почему для пайпов надо вызывать отдельный диалог, сразу и не найти.

При попытке потрогать пайп через WinObjEx — мой кутишный пайп-сервер падает. Но разбираться — нет желания и времени


Пайпы для меня далеко не приоритетное, и тут попробовал в очередной раз — всё работает. Весьма вероятно, что я тупо ошибся с нерабочестью пайпов, скорее отсылаемые серверу команды были нерабочие

Всем спасибо за идеи
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.