spiegel_podman/pkg/util
Martin Roukala (né Peres) 70057c8b47
Make rootless privileged containers share the same tty devices as rootfull ones
Until Podman v4.3, privileged rootfull containers would expose all the
host devices to the container while rootless ones would exclude
`/dev/ptmx` and `/dev/tty*`.

When 5a2405ae1b ("Don't mount /dev/tty* inside privileged containers
running systemd") landed, rootfull containers started excluding all the
`/dev/tty*` devices when the container would be running in systemd
mode, reducing the disparity between rootless and rootfull containers
when running in this mode.

However, this commit regressed some legitimate use cases: exposing
non-virtual-terminal tty devices (modems, arduinos, serial
consoles, ...) to the container, and the regression was addressed in
f4c81b0aa5 ("Only prevent VTs to be mounted inside privileged
systemd containers").

This now calls into question why all tty devices were historically
prevented from being shared to the rootless non-privileged containers.
A look at the podman git history reveals that the code was introduced
as part of ba430bfe5e ("podman v2 remove bloat v2"), and obviously
was copy-pasted from some other code I couldn't find.

In any case, we can easily guess that this check was put for the same
reason 5a2405ae1b was introduced: to prevent breaking the host
environment's consoles. This also means that excluding *all* tty
devices is overbearing, and should instead be limited to just virtual
terminals like we do on the rootfull path.

This is what this commit does, thus making the rootless codepath behave
like the rootfull one when in systemd mode.

This leaves `/dev/ptmx` as the main difference between the two
codepath. Based on the blog post from the then-runC maintainer[1] and
this Red Hat bug[2], I believe that this is intentional and a needed
difference for the rootless path.

Closes: #16925
Suggested-by: Fabian Holler <mail@fholler.de>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>

[1]: https://www.cyphar.com/blog/post/20160627-rootless-containers-with-runc
[2]: https://bugzilla.redhat.com/show_bug.cgi?id=501718
2023-01-16 16:23:53 +02:00
..
camelcase bump golangci-lint to v1.49.0 2022-10-17 09:19:41 +02:00
filters.go prune filter handling 2022-07-25 09:28:26 -04:00
filters_test.go prune filter handling 2022-07-25 09:28:26 -04:00
kube.go play kube: Allow the user to import the contents of a tar file into a volume 2022-10-25 15:11:25 +03:00
mountOpts.go pkg: switch to golang native error wrapping 2022-07-08 08:54:47 +02:00
mountOpts_linux.go Turn off 'noexec' option by default for named volumes 2020-05-20 16:48:20 -04:00
mountOpts_other.go go fmt: use go 1.18 conditional-build syntax 2022-03-18 09:11:53 +01:00
utils.go Merge pull request #16329 from gupttaru/encryption-decryption-feature 2022-11-28 06:33:59 -05:00
utils_darwin.go pkg: switch to golang native error wrapping 2022-07-08 08:54:47 +02:00
utils_freebsd.go pkg/util: Add pid information descriptors for FreeBSD 2022-10-17 15:33:04 +01:00
utils_linux.go Make rootless privileged containers share the same tty devices as rootfull ones 2023-01-16 16:23:53 +02:00
utils_linux_test.go Fix up errors found by codespell 2020-09-11 06:14:25 -04:00
utils_supported.go Eval symlinks on XDG_RUNTIME_DIR 2022-10-28 14:32:39 -04:00
utils_test.go Merge pull request #11218 from cdoern/untilBug 2021-08-26 10:12:09 -04:00
utils_unsupported.go pkg: Build pkg/util on FreeBSD 2022-08-13 07:53:34 +01:00
utils_windows.go pkg: switch to golang native error wrapping 2022-07-08 08:54:47 +02:00