aboutsummaryrefslogtreecommitdiff
path: root/libpod
diff options
context:
space:
mode:
authorDan Čermák <dcermak@suse.com>2022-09-21 23:09:10 +0200
committerDan Čermák <dcermak@suse.com>2022-09-22 16:44:26 +0200
commit5a2405ae1b3a51a7fb1f01de89bd6b2c60416f08 (patch)
tree75d118cca1ec243b737e883651bbb6229e41722f /libpod
parent828fae12971c5a7b9807c8c4f8e029fe5d0ddc2f (diff)
downloadpodman-5a2405ae1b3a51a7fb1f01de89bd6b2c60416f08.tar.gz
podman-5a2405ae1b3a51a7fb1f01de89bd6b2c60416f08.tar.bz2
podman-5a2405ae1b3a51a7fb1f01de89bd6b2c60416f08.zip
Don't mount /dev/tty* inside privileged containers running systemd
According to https://systemd.io/CONTAINER_INTERFACE/, systemd will try take control over /dev/ttyN if exported, which can cause conflicts with the host's tty in privileged containers. Thus we will not expose these to privileged containers in systemd mode, as this is a bad idea according to systemd's maintainers. Additionally, this commit adds a bats regression test to check that no /dev/ttyN are present in a privileged container in systemd mode This fixes https://github.com/containers/podman/issues/15878 Signed-off-by: Dan Čermák <dcermak@suse.com>
Diffstat (limited to 'libpod')
-rw-r--r--libpod/container_internal_common.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/libpod/container_internal_common.go b/libpod/container_internal_common.go
index 874e9affe..29107d4b6 100644
--- a/libpod/container_internal_common.go
+++ b/libpod/container_internal_common.go
@@ -109,7 +109,11 @@ func (c *Container) generateSpec(ctx context.Context) (*spec.Spec, error) {
// If the flag to mount all devices is set for a privileged container, add
// all the devices from the host's machine into the container
if c.config.MountAllDevices {
- if err := util.AddPrivilegedDevices(&g); err != nil {
+ systemdMode := false
+ if c.config.Systemd != nil {
+ systemdMode = *c.config.Systemd
+ }
+ if err := util.AddPrivilegedDevices(&g, systemdMode); err != nil {
return nil, err
}
}