diff --git a/pkg/specgen/generate/oci_linux.go b/pkg/specgen/generate/oci_linux.go index 2a1afbecc4..87159bbc4f 100644 --- a/pkg/specgen/generate/oci_linux.go +++ b/pkg/specgen/generate/oci_linux.go @@ -255,6 +255,9 @@ func SpecGenToOCI(ctx context.Context, s *specgen.SpecGenerator, rt *libpod.Runt s.HostDeviceList = userDevices // set the devices cgroup when not running in a user namespace + if isRootless && len(s.DeviceCgroupRule) > 0 { + return nil, fmt.Errorf("device cgroup rules are not supported in rootless mode or in a user namespace") + } if !inUserNS && !s.Privileged { for _, dev := range s.DeviceCgroupRule { g.AddLinuxResourcesDevice(true, dev.Type, dev.Major, dev.Minor, dev.Access) diff --git a/test/system/030-run.bats b/test/system/030-run.bats index d46111e862..75cd1e2fba 100644 --- a/test/system/030-run.bats +++ b/test/system/030-run.bats @@ -746,7 +746,11 @@ EOF } @test "podman run --device-cgroup-rule tests" { - skip_if_rootless "cannot add devices in rootless mode" + if is_rootless; then + run_podman 125 run --device-cgroup-rule="b 7:* rmw" --rm $IMAGE + is "$output" "Error: device cgroup rules are not supported in rootless mode or in a user namespace" + return + fi run_podman run --device-cgroup-rule="b 7:* rmw" --rm $IMAGE run_podman run --device-cgroup-rule="c 7:* rmw" --rm $IMAGE