mirror of
https://github.com/containers/podman.git
synced 2025-08-06 03:19:52 +08:00
Mask /sys/devices/virtual/powercap
I don't really like this solution because it can't be undone by `--security-opt unmask=all` but I don't see another way to make this retroactive. We can potentially change things up to do this the right way with 5.0 (actually have it in the list of masked paths, as opposed to adding at spec finalization as now). Signed-off-by: Matthew Heon <matthew.heon@pm.me>
This commit is contained in:

committed by
openshift-cherrypick-robot

parent
85b5f57234
commit
bd86a52f09
@ -679,6 +679,8 @@ func (c *Container) generateSpec(ctx context.Context) (s *spec.Spec, cleanupFunc
|
||||
}
|
||||
}
|
||||
|
||||
c.addMaskedPaths(&g)
|
||||
|
||||
return g.Config, cleanupFunc, nil
|
||||
}
|
||||
|
||||
|
@ -385,3 +385,7 @@ func (c *Container) getPlatformRunPath() (string, error) {
|
||||
}
|
||||
return runPath, nil
|
||||
}
|
||||
|
||||
func (c *Container) addMaskedPaths(g *generate.Generator) {
|
||||
// There are currently no FreeBSD-specific masked paths
|
||||
}
|
||||
|
@ -805,3 +805,9 @@ func (c *Container) makePlatformMtabLink(etcInTheContainerFd, rootUID, rootGID i
|
||||
func (c *Container) getPlatformRunPath() (string, error) {
|
||||
return "/run", nil
|
||||
}
|
||||
|
||||
func (c *Container) addMaskedPaths(g *generate.Generator) {
|
||||
if !c.config.Privileged {
|
||||
g.AddLinuxMaskedPaths("/sys/devices/virtual/powercap")
|
||||
}
|
||||
}
|
||||
|
@ -413,6 +413,29 @@ var _ = Describe("Podman run", func() {
|
||||
Expect(session.OutputToString()).To(Not(BeEmpty()))
|
||||
})
|
||||
|
||||
It("podman run powercap is masked", func() {
|
||||
Skip("CI VMs do not have access to powercap")
|
||||
|
||||
testCtr1 := "testctr"
|
||||
run := podmanTest.Podman([]string{"run", "-d", "--name", testCtr1, ALPINE, "top"})
|
||||
run.WaitWithDefaultTimeout()
|
||||
Expect(run).Should(ExitCleanly())
|
||||
|
||||
exec := podmanTest.Podman([]string{"exec", "-ti", testCtr1, "ls", "/sys/devices/virtual/powercap"})
|
||||
exec.WaitWithDefaultTimeout()
|
||||
Expect(exec).To(ExitWithError())
|
||||
|
||||
testCtr2 := "testctr2"
|
||||
run2 := podmanTest.Podman([]string{"run", "-d", "--privileged", "--name", testCtr2, ALPINE, "top"})
|
||||
run2.WaitWithDefaultTimeout()
|
||||
Expect(run2).Should(ExitCleanly())
|
||||
|
||||
exec2 := podmanTest.Podman([]string{"exec", "-ti", testCtr2, "ls", "/sys/devices/virtual/powercap"})
|
||||
exec2.WaitWithDefaultTimeout()
|
||||
Expect(exec2).Should(ExitCleanly())
|
||||
Expect(exec2.OutputToString()).Should(Not(BeEmpty()))
|
||||
})
|
||||
|
||||
It("podman run security-opt unmask on /sys/fs/cgroup", func() {
|
||||
|
||||
SkipIfCgroupV1("podman umask on /sys/fs/cgroup will fail with cgroups V1")
|
||||
|
Reference in New Issue
Block a user