Skip to content

Commit 96d1587

Browse files
Merge pull request #2326 from dfr/freebsd-nocaps
pkg/config: make Capabilities() a no-op stub on non-linux platforms
2 parents 1e4c9bf + 0b8cc83 commit 96d1587

File tree

4 files changed

+42
-32
lines changed

4 files changed

+42
-32
lines changed

pkg/config/config.go

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212

1313
"github.com/containers/common/internal/attributedstring"
1414
"github.com/containers/common/libnetwork/types"
15-
"github.com/containers/common/pkg/capabilities"
1615
"github.com/containers/storage/pkg/fileutils"
1716
"github.com/containers/storage/pkg/homedir"
1817
"github.com/containers/storage/pkg/unshare"
@@ -979,24 +978,6 @@ func (c *Config) GetDefaultEnvEx(envHost, httpProxy bool) []string {
979978
return append(env, c.Containers.Env.Get()...)
980979
}
981980

982-
// Capabilities returns the capabilities parses the Add and Drop capability
983-
// list from the default capabilities for the container
984-
func (c *Config) Capabilities(user string, addCapabilities, dropCapabilities []string) ([]string, error) {
985-
userNotRoot := func(user string) bool {
986-
if user == "" || user == "root" || user == "0" {
987-
return false
988-
}
989-
return true
990-
}
991-
992-
defaultCapabilities := c.Containers.DefaultCapabilities.Get()
993-
if userNotRoot(user) {
994-
defaultCapabilities = []string{}
995-
}
996-
997-
return capabilities.MergeCapabilities(defaultCapabilities, addCapabilities, dropCapabilities)
998-
}
999-
1000981
// Device parses device mapping string to a src, dest & permissions string
1001982
// Valid values for device looklike:
1002983
//

pkg/config/config_linux.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package config
22

33
import (
4+
"github.com/containers/common/pkg/capabilities"
45
selinux "github.com/opencontainers/selinux/go-selinux"
56
)
67

@@ -26,3 +27,21 @@ var defaultHelperBinariesDir = []string{
2627
"/usr/libexec/podman",
2728
"/usr/lib/podman",
2829
}
30+
31+
// Capabilities returns the capabilities parses the Add and Drop capability
32+
// list from the default capabilities for the container
33+
func (c *Config) Capabilities(user string, addCapabilities, dropCapabilities []string) ([]string, error) {
34+
userNotRoot := func(user string) bool {
35+
if user == "" || user == "root" || user == "0" {
36+
return false
37+
}
38+
return true
39+
}
40+
41+
defaultCapabilities := c.Containers.DefaultCapabilities.Get()
42+
if userNotRoot(user) {
43+
defaultCapabilities = []string{}
44+
}
45+
46+
return capabilities.MergeCapabilities(defaultCapabilities, addCapabilities, dropCapabilities)
47+
}

pkg/config/config_test.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -439,18 +439,21 @@ image_copy_tmp_dir="storage"`
439439
},
440440
}
441441

442-
defCaps := []string{
443-
"CAP_CHOWN",
444-
"CAP_DAC_OVERRIDE",
445-
"CAP_FOWNER",
446-
"CAP_FSETID",
447-
"CAP_KILL",
448-
"CAP_NET_BIND_SERVICE",
449-
"CAP_SETFCAP",
450-
"CAP_SETGID",
451-
"CAP_SETPCAP",
452-
"CAP_SETUID",
453-
"CAP_SYS_CHROOT",
442+
var defCaps []string
443+
if runtime.GOOS == "linux" {
444+
defCaps = []string{
445+
"CAP_CHOWN",
446+
"CAP_DAC_OVERRIDE",
447+
"CAP_FOWNER",
448+
"CAP_FSETID",
449+
"CAP_KILL",
450+
"CAP_NET_BIND_SERVICE",
451+
"CAP_SETFCAP",
452+
"CAP_SETGID",
453+
"CAP_SETPCAP",
454+
"CAP_SETUID",
455+
"CAP_SYS_CHROOT",
456+
}
454457
}
455458

456459
envs := []string{
@@ -480,7 +483,8 @@ image_copy_tmp_dir="storage"`
480483
gomega.Expect(config.Engine.OCIRuntimes["runc"]).To(gomega.Equal(OCIRuntimeMap["runc"]))
481484
gomega.Expect(config.Containers.CgroupConf.Get()).To(gomega.BeEmpty())
482485

483-
caps, _ := config.Capabilities("", nil, nil)
486+
caps, err := config.Capabilities("", nil, nil)
487+
gomega.Expect(err).ToNot(gomega.HaveOccurred())
484488
gomega.Expect(caps).Should(gomega.Equal(defCaps))
485489

486490
if useSystemd() {

pkg/config/config_unsupported.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,9 @@ package config
55
func selinuxEnabled() bool {
66
return false
77
}
8+
9+
// Capabilities returns the capabilities parses the Add and Drop capability
10+
// list from the default capabilities for the container
11+
func (c *Config) Capabilities(user string, addCapabilities, dropCapabilities []string) ([]string, error) {
12+
return nil, nil
13+
}

0 commit comments

Comments
 (0)