ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Q: Аксакалам IPC
@ 2019-08-23 12:01 Paul Wolneykien
  2019-08-23 14:03 ` Vitaly Lipatov
  2019-08-24 23:45 ` Alexey V. Vissarionov
  0 siblings, 2 replies; 9+ messages in thread
From: Paul Wolneykien @ 2019-08-23 12:01 UTC (permalink / raw)
  To: ALT Linux Team development discussions


  Всем привет. У меня вопрос к знатокам межпроцессного взаимодействия в
Linux: какой бы способ соединения вы посоветовали использовать для того,
чтобы связаться снаружи с процессом, который работает внутри чрута? При
этом необходим контроль доступа на уровне прав пользователей и групп
Linux. Если сказать точнее, то достаточно будет, если доступ к каналу
сможет получить только процесс с EUID root.

  Вопрос связан с https://bugzilla.altlinux.org/show_bug.cgi?id=37050 ,
где обсуждается проблема с нашим инсталлятором. Для тех, кто не в курсе
или забыл: наш инсталлятор первую половину работы делает "снаружи", т.е.
клиентская и серверная части находятся в одном пространстве имён (или
как это называется?); вторая же половина работы должна выполняться так,
что клиент остаётся где был (он не выключается), но в чруте запускается
новый экземпляр сервера, к которому клиент должен подключиться вместо
того экземпляра, с которым он разговаривал до сих пор.
  Сейчас это достигается через mount -o bind директории с сокетом (unix
domain socket) из чрута наружу. И что-то иногда идёт не так.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: Аксакалам IPC
  2019-08-23 12:01 [devel] Q: Аксакалам IPC Paul Wolneykien
@ 2019-08-23 14:03 ` Vitaly Lipatov
  2019-08-23 14:10   ` Paul Wolneykien
  2019-08-24 23:45 ` Alexey V. Vissarionov
  1 sibling, 1 reply; 9+ messages in thread
From: Vitaly Lipatov @ 2019-08-23 14:03 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Paul Wolneykien писал 23.8.19 15:01:
> Всем привет. У меня вопрос к знатокам межпроцессного взаимодействия в
> Linux: какой бы способ соединения вы посоветовали использовать для 
> того,
> чтобы связаться снаружи с процессом, который работает внутри чрута? При
....
>   Сейчас это достигается через mount -o bind директории с сокетом (unix
> domain socket) из чрута наружу. И что-то иногда идёт не так.
Я бы предложил исправить это «что-то идёт не так». Взаимодействие через 
unix socket — отличный вариант, и переделывать ничего не придётся.

-- 
С уважением,
Виталий Липатов,
Etersoft


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: Аксакалам IPC
  2019-08-23 14:03 ` Vitaly Lipatov
@ 2019-08-23 14:10   ` Paul Wolneykien
  2019-08-23 14:26     ` Anton Farygin
  0 siblings, 1 reply; 9+ messages in thread
From: Paul Wolneykien @ 2019-08-23 14:10 UTC (permalink / raw)
  To: devel

23.08.2019 17:03, Vitaly Lipatov пишет:
> Paul Wolneykien писал 23.8.19 15:01:
>> Всем привет. У меня вопрос к знатокам межпроцессного взаимодействия в
>> Linux: какой бы способ соединения вы посоветовали использовать для того,
>> чтобы связаться снаружи с процессом, который работает внутри чрута? При
> ....
>>   Сейчас это достигается через mount -o bind директории с сокетом (unix
>> domain socket) из чрута наружу. И что-то иногда идёт не так.
>
> Я бы предложил исправить это «что-то идёт не так».

  Чиним...

> Взаимодействие через
> unix socket — отличный вариант, и переделывать ничего не придётся.

  Даже в сочетании с mount -o bind? Кто-нибудь ещё вообще так делает?


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: Аксакалам IPC
  2019-08-23 14:10   ` Paul Wolneykien
@ 2019-08-23 14:26     ` Anton Farygin
  2019-08-23 14:32       ` Paul Wolneykien
  0 siblings, 1 reply; 9+ messages in thread
From: Anton Farygin @ 2019-08-23 14:26 UTC (permalink / raw)
  To: devel

On 23.08.2019 17:10, Paul Wolneykien wrote:
> 23.08.2019 17:03, Vitaly Lipatov пишет:
>> Paul Wolneykien писал 23.8.19 15:01:
>> Чиним... 
>> Взаимодействие через
>> unix socket — отличный вариант, и переделывать ничего не придётся.
>    Даже в сочетании с mount -o bind? Кто-нибудь ещё вообще так делает?

Я знаю что  у нас в некоторых случаях используется абстрактный unix 
сокет, который можно использовать без отражения его на файловую систему. 
По идее в этом случае не должно возникнуть проблем с mount -o bind.

Попробуйте сделать, если можно, в guile - первый байт адреса UNIX socket 
должен быть равен 0.






^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: Аксакалам IPC
  2019-08-23 14:26     ` Anton Farygin
@ 2019-08-23 14:32       ` Paul Wolneykien
  2019-08-23 14:36         ` Dmitry V. Levin
  2019-08-23 14:41         ` Anton Farygin
  0 siblings, 2 replies; 9+ messages in thread
From: Paul Wolneykien @ 2019-08-23 14:32 UTC (permalink / raw)
  To: devel

23.08.2019 17:26, Anton Farygin пишет:
> On 23.08.2019 17:10, Paul Wolneykien wrote:
>> 23.08.2019 17:03, Vitaly Lipatov пишет:
>>> Paul Wolneykien писал 23.8.19 15:01:
>>> Чиним... Взаимодействие через
>>> unix socket — отличный вариант, и переделывать ничего не придётся.
>>    Даже в сочетании с mount -o bind? Кто-нибудь ещё вообще так делает?
> 
> Я знаю что  у нас в некоторых случаях используется абстрактный unix
> сокет, который можно использовать без отражения его на файловую систему.
> По идее в этом случае не должно возникнуть проблем с mount -o bind.

  Да, уже высказывалось такое предложение (в баге). Но я ещё не знаю, не
разбирался ещё, как абстрактные сокеты сочетаются с разграничением прав?
Вдруг к такому сокету любой пользователь сможет подключиться?

> 
> Попробуйте сделать, если можно, в guile - первый байт адреса UNIX socket
> должен быть равен 0.

  Библиотека vhttpd написана на C.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: Аксакалам IPC
  2019-08-23 14:32       ` Paul Wolneykien
@ 2019-08-23 14:36         ` Dmitry V. Levin
  2019-08-23 15:05           ` Leonid Krivoshein
  2019-08-23 14:41         ` Anton Farygin
  1 sibling, 1 reply; 9+ messages in thread
From: Dmitry V. Levin @ 2019-08-23 14:36 UTC (permalink / raw)
  To: ALT Devel discussion list

On Fri, Aug 23, 2019 at 05:32:29PM +0300, Paul Wolneykien wrote:
> 23.08.2019 17:26, Anton Farygin пишет:
> > On 23.08.2019 17:10, Paul Wolneykien wrote:
> >> 23.08.2019 17:03, Vitaly Lipatov пишет:
> >>> Paul Wolneykien писал 23.8.19 15:01:
> >>> Чиним... Взаимодействие через
> >>> unix socket — отличный вариант, и переделывать ничего не придётся.
> >>    Даже в сочетании с mount -o bind? Кто-нибудь ещё вообще так делает?
> > 
> > Я знаю что  у нас в некоторых случаях используется абстрактный unix
> > сокет, который можно использовать без отражения его на файловую систему.
> > По идее в этом случае не должно возникнуть проблем с mount -o bind.
> 
>   Да, уже высказывалось такое предложение (в баге). Но я ещё не знаю, не
> разбирался ещё, как абстрактные сокеты сочетаются с разграничением прав?
> Вдруг к такому сокету любой пользователь сможет подключиться?

Конечно, если используется abstract namespace, то разграничения прав
доступа нет.

Реализация на традиционных unix domain sockets работала много лет,
зачем было её ломать?


-- 
ldv


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: Аксакалам IPC
  2019-08-23 14:32       ` Paul Wolneykien
  2019-08-23 14:36         ` Dmitry V. Levin
@ 2019-08-23 14:41         ` Anton Farygin
  1 sibling, 0 replies; 9+ messages in thread
From: Anton Farygin @ 2019-08-23 14:41 UTC (permalink / raw)
  To: devel

On 23.08.2019 17:32, Paul Wolneykien wrote:
> 23.08.2019 17:26, Anton Farygin пишет:
>> On 23.08.2019 17:10, Paul Wolneykien wrote:
>>> 23.08.2019 17:03, Vitaly Lipatov пишет:
>>>> Paul Wolneykien писал 23.8.19 15:01:
>>>> Чиним... Взаимодействие через
>>>> unix socket — отличный вариант, и переделывать ничего не придётся.
>>>     Даже в сочетании с mount -o bind? Кто-нибудь ещё вообще так делает?
>> Я знаю что  у нас в некоторых случаях используется абстрактный unix
>> сокет, который можно использовать без отражения его на файловую систему.
>> По идее в этом случае не должно возникнуть проблем с mount -o bind.
>    Да, уже высказывалось такое предложение (в баге). Но я ещё не знаю, не
> разбирался ещё, как абстрактные сокеты сочетаются с разграничением прав?
> Вдруг к такому сокету любой пользователь сможет подключиться?
>
Конечно любой сможет подключиться. Но, например, X-server с этим как-то 
справляется (авторизуя пользователя самостоятельно).





^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: Аксакалам IPC
  2019-08-23 14:36         ` Dmitry V. Levin
@ 2019-08-23 15:05           ` Leonid Krivoshein
  0 siblings, 0 replies; 9+ messages in thread
From: Leonid Krivoshein @ 2019-08-23 15:05 UTC (permalink / raw)
  To: devel


23.08.2019 17:36, Dmitry V. Levin пишет:
> On Fri, Aug 23, 2019 at 05:32:29PM +0300, Paul Wolneykien wrote:
>> 23.08.2019 17:26, Anton Farygin пишет:
>>> On 23.08.2019 17:10, Paul Wolneykien wrote:
>>>> 23.08.2019 17:03, Vitaly Lipatov пишет:
>>>>> Paul Wolneykien писал 23.8.19 15:01:
>>>>> Чиним... Взаимодействие через
>>>>> unix socket — отличный вариант, и переделывать ничего не придётся.
>>>>     Даже в сочетании с mount -o bind? Кто-нибудь ещё вообще так делает?
>>> Я знаю что  у нас в некоторых случаях используется абстрактный unix
>>> сокет, который можно использовать без отражения его на файловую систему.
>>> По идее в этом случае не должно возникнуть проблем с mount -o bind.
>>    Да, уже высказывалось такое предложение (в баге). Но я ещё не знаю, не
>> разбирался ещё, как абстрактные сокеты сочетаются с разграничением прав?
>> Вдруг к такому сокету любой пользователь сможет подключиться?
> Конечно, если используется abstract namespace, то разграничения прав
> доступа нет.

К объектам файловой системы -- НЕТ, поскольку namespace другой. Но 
поддерживается SCM_CREDENTIALS с pid/uid/gid. Кстати, gid("_alteratord") 
всегда отличается в инсталляторе и чруте!


> Реализация на традиционных unix domain sockets работала много лет,
> зачем было её ломать?

Там всегда были рейсы при переключении процесса инсталляции в чрут, 
потому что так изначально спроектировали MVC с двумя сокетами в разных 
местах, пробрасываемых в разных пакетах и разных скриптах через moint 
--bind.


-- 
Best regards,
Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: Аксакалам IPC
  2019-08-23 12:01 [devel] Q: Аксакалам IPC Paul Wolneykien
  2019-08-23 14:03 ` Vitaly Lipatov
@ 2019-08-24 23:45 ` Alexey V. Vissarionov
  1 sibling, 0 replies; 9+ messages in thread
From: Alexey V. Vissarionov @ 2019-08-24 23:45 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On 2019-08-23 15:01:12 +0300, Paul Wolneykien wrote:

 > Всем привет. У меня вопрос к знатокам межпроцессного
 > взаимодействия в Linux: какой бы способ соединения вы
 > посоветовали использовать для того, чтобы связаться
 > снаружи с процессом, который работает внутри чрута?

TCP или UDP на localhost.

 > При этом необходим контроль доступа на уровне прав
 > пользователей и групп Linux. Если сказать точнее, то
 > достаточно будет, если доступ к каналу сможет получить
 > только процесс с EUID root.

Работать при CAP_NET_BIND_SERVICE - допустимо? Если да, то
банальный bind() на порт < 1024 вполне решает эту задачу.

 > Сейчас это достигается через mount -o bind директории с
 > сокетом (unix domain socket) из чрута наружу. И что-то
 > иногда идёт не так.

Ой.


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-08-24 23:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-23 12:01 [devel] Q: Аксакалам IPC Paul Wolneykien
2019-08-23 14:03 ` Vitaly Lipatov
2019-08-23 14:10   ` Paul Wolneykien
2019-08-23 14:26     ` Anton Farygin
2019-08-23 14:32       ` Paul Wolneykien
2019-08-23 14:36         ` Dmitry V. Levin
2019-08-23 15:05           ` Leonid Krivoshein
2019-08-23 14:41         ` Anton Farygin
2019-08-24 23:45 ` Alexey V. Vissarionov

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git