From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=altlinux.org; s=dkim; h=Subject:In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=6o58Eoh+B0VUhvDavF968BA52AMqNUBoE2vkvfb74NY=; b=hW6EwfeeOU/GKQZgjlP/tinrjB oWwokCgnFbeoqlAk+VInY429QRFRP2ClzKz0klfVjsuJv9OeAdAus1QWkEb+CXqeaWA8wXSmCYNnW fXBpdEx/L9kwOMAShdWJftOKLvFBh6rs/26Z7fzL6DqIjSwTkqVFmefpQkyjyefGDa20Ydjq5jp3k 6NKz9gfuhT5NJQMdCXHyqNxc9pD+H+8bJtsZ+5kGyckOWhmbMdz/TPYw5ccGfTTYY1MVZbkKwlVGu N5PiejVanJLhTBoNIn7eoWc28a8wtfgYYFZ4OqENeg38B9ejJwUnut7zziDujF4iIfPabQ+DwrcCY uVZvQr3Q==; Date: Thu, 17 Sep 2020 16:09:35 +0300 From: Arseny Maslennikov To: Alex Gladkov , devel@lists.altlinux.org Message-ID: <20200917130935.GA286846@cello> References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="ZPt4rx8FFjLCG7dd" Content-Disposition: inline In-Reply-To: OpenPGP: url=http://grep.cs.msu.ru/~ar/pgp-key.asc X-SA-Exim-Connect-IP: 10.7.5.179 X-SA-Exim-Mail-From: arseny@altlinux.org X-SA-Exim-Version: 4.2.1 X-SA-Exim-Scanned: Yes (on mail.cs.msu.ru) Cc: ldv@altlinux.org Subject: Re: [devel] [PATCH hasher-priv v1 0/3] Make a daemon from the hasher-priv X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Sep 2020 13:09:44 -0000 Archived-At: List-Archive: List-Post: --ZPt4rx8FFjLCG7dd Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Dec 13, 2019 at 12:42:02PM +0100, Alex Gladkov wrote: > From: Alexey Gladkov >=20 > The hasher-priv is a SUID utility. This is not good. Separation of the > server and client parts will allow us to remove SUID flag. >=20 > The separation of server and client is not intended to give clients > access over the network. This separation is only necessary to distinguish > privileges. Only UNIX domain socket is used. >=20 > A separate session process is created for each connected user. Each such > process ends after a certain period of inactivity. Thank you for trying this idea out; despite the trolling attempts, this effort is long welcome. There are some issues with the patchset, which I intend to cover in subsequent emails. I have published[1] some fix-up commits on top of these patches in an attempt to ensure that, barring the issues with a known fix, this works; however, some bugs are definitely still unsolved by now, so I decided to discuss the more apparent points first. [1] http://git.altlinux.org/people/arseny/packages/hasher-priv.git?a=3Dsumm= ary There's an issue when hasher-privd tries to fulfill a chrootuid{1,2} request: the (eventually) unprivileged task executor process successfully invokes waitpid() or the likes on a child process, select()s on I/O descriptors, but gets CHLD later =E2=80=94 and it looks li= ke the inherited signal handler causes it to wait again. I've not yet found a decent reproducer =E2=80=94 the following command: `hsh-shell $workdir' reproduces the issue reliably for me, but hsh-mkchroot, hsh-rmchroot, hsh-install are all OK. The root cause nevertheless is not yet established. It looks like this has to be patched somewhere in chrootuid(), but I might be wrong on this one. >=20 > Alexey Gladkov (3): > Make a daemon from the hasher-priv > Add systemd and sysvinit service files > Add cgroup support >=20 > hasher-priv/.gitignore | 1 + > hasher-priv/DESIGN | 281 +++++++++++++-------- > hasher-priv/Makefile | 34 ++- > hasher-priv/caller.c | 81 +++--- > hasher-priv/caller_server.c | 373 ++++++++++++++++++++++++++++ > hasher-priv/caller_task.c | 217 +++++++++++++++++ > hasher-priv/cgroup.c | 119 +++++++++ > hasher-priv/cmdline.c | 27 +- > hasher-priv/communication.c | 392 ++++++++++++++++++++++++++++++ > hasher-priv/communication.h | 77 ++++++ > hasher-priv/config.c | 148 ++++++++++- > hasher-priv/epoll.c | 39 +++ > hasher-priv/epoll.h | 18 ++ > hasher-priv/hasher-priv.c | 78 ++++++ > hasher-priv/hasher-privd.c | 375 ++++++++++++++++++++++++++++ > hasher-priv/hasher-privd.service | 11 + > hasher-priv/hasher-privd.sysvinit | 86 +++++++ > hasher-priv/io_log.c | 2 +- > hasher-priv/io_x11.c | 2 +- > hasher-priv/killuid.c | 2 +- > hasher-priv/logging.c | 64 +++++ > hasher-priv/logging.h | 55 +++++ > hasher-priv/main.c | 75 ------ > hasher-priv/pass.c | 117 ++++++++- > hasher-priv/pidfile.c | 128 ++++++++++ > hasher-priv/pidfile.h | 44 ++++ > hasher-priv/priv.h | 35 ++- > hasher-priv/server.conf | 22 ++ > hasher-priv/sockets.c | 183 ++++++++++++++ > hasher-priv/sockets.h | 32 +++ > hasher-priv/x11.c | 1 + > 31 files changed, 2872 insertions(+), 247 deletions(-) > create mode 100644 hasher-priv/caller_server.c > create mode 100644 hasher-priv/caller_task.c > create mode 100644 hasher-priv/cgroup.c > create mode 100644 hasher-priv/communication.c > create mode 100644 hasher-priv/communication.h > create mode 100644 hasher-priv/epoll.c > create mode 100644 hasher-priv/epoll.h > create mode 100644 hasher-priv/hasher-priv.c > create mode 100644 hasher-priv/hasher-privd.c > create mode 100644 hasher-priv/hasher-privd.service > create mode 100755 hasher-priv/hasher-privd.sysvinit > create mode 100644 hasher-priv/logging.c > create mode 100644 hasher-priv/logging.h > delete mode 100644 hasher-priv/main.c > create mode 100644 hasher-priv/pidfile.c > create mode 100644 hasher-priv/pidfile.h > create mode 100644 hasher-priv/server.conf > create mode 100644 hasher-priv/sockets.c > create mode 100644 hasher-priv/sockets.h >=20 --ZPt4rx8FFjLCG7dd Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE56JD3UKTLEu/ddrm9dQjyAYL01AFAl9jYAkACgkQ9dQjyAYL 01A/pQ/8D2NluiFx+tgjpHxsufhdjuROS4TQoHbXctAksiNYoEEi6LRRgrK4LGXn DWiewJROOhpEVMpLKoqs+aSvW9PQhnemdrf3lb7BVgEf7/KhLYkLElEYUoac4nPq IBc0/s4dM7HCnv9w3KleMvZhMK1NUrEoxjz/iB90d7mto2LsuCu14uPwMSTxkZmy HhnHjDrhN4wWHYuSZfuqmVNPoVrQSZ91p+bFnykBeKtFTfe10KIRdpPZnH9h8+d0 PoUcUNR4SAn1yI6BG4ZouQfvDmfwZQlDX6HYczXLrW4mv/XxWI6m/ngCX+St9ayI 4bfZo3gFRJdHhnP8tQZRrI49bbHmhXVyNghbdH9dRx9unFCot3NcMU4nMj5vb3ZF Xt8g/y0Q2mmnrcNxV9x9KGjXLBkY7STFOGXxLNPJ6ESq/TLrfJCXxI4is9UlFrRI 0ehuih9pYJS4xQiOW4cgO8hQkENvp8U7Vpk2H80fEwUak5/gIp5X3FCTlUycTP1M euWjd8HcB49orQUtBw7o11liJ3tq8xSFiYexKPApVf5i1oR9b0iJz5oaLZCf68WE GVy6LWwrxNSuF11GI7ctzq4ONjo1gan8b2LaG+4xXXYEpep2wROOGUeWyIbSCPxa RhStl4xiz6Ct+90jf71QhHDb+/LELfavAXazqTdn8y8u8Jl6HlI= =hb1t -----END PGP SIGNATURE----- --ZPt4rx8FFjLCG7dd--