mirror of
https://github.com/containers/podman.git
synced 2025-10-20 12:43:58 +08:00
Properly handle default capabilities listed in containers.conf
If user/admin specifies a different list of default capabilties we need to honor these. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
5
vendor/github.com/containers/buildah/imagebuildah/executor.go
generated
vendored
5
vendor/github.com/containers/buildah/imagebuildah/executor.go
generated
vendored
@ -113,7 +113,10 @@ func NewExecutor(store storage.Store, options BuildOptions, mainNode *parser.Nod
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
capabilities := defaultContainerConfig.Capabilities("", options.AddCapabilities, options.DropCapabilities)
|
||||
capabilities, err := defaultContainerConfig.Capabilities("", options.AddCapabilities, options.DropCapabilities)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
devices := []configs.Device{}
|
||||
for _, device := range append(defaultContainerConfig.Containers.Devices, options.Devices...) {
|
||||
|
28
vendor/github.com/containers/common/pkg/config/config.go
generated
vendored
28
vendor/github.com/containers/common/pkg/config/config.go
generated
vendored
@ -709,7 +709,7 @@ func (c *Config) GetDefaultEnv() []string {
|
||||
|
||||
// Capabilities returns the capabilities parses the Add and Drop capability
|
||||
// list from the default capabiltiies for the container
|
||||
func (c *Config) Capabilities(user string, addCapabilities, dropCapabilities []string) []string {
|
||||
func (c *Config) Capabilities(user string, addCapabilities, dropCapabilities []string) ([]string, error) {
|
||||
|
||||
userNotRoot := func(user string) bool {
|
||||
if user == "" || user == "root" || user == "0" {
|
||||
@ -718,36 +718,12 @@ func (c *Config) Capabilities(user string, addCapabilities, dropCapabilities []s
|
||||
return true
|
||||
}
|
||||
|
||||
var caps []string
|
||||
defaultCapabilities := c.Containers.DefaultCapabilities
|
||||
if userNotRoot(user) {
|
||||
defaultCapabilities = []string{}
|
||||
}
|
||||
|
||||
mapCap := make(map[string]bool, len(defaultCapabilities))
|
||||
for _, c := range addCapabilities {
|
||||
if strings.ToLower(c) == "all" {
|
||||
defaultCapabilities = capabilities.AllCapabilities()
|
||||
addCapabilities = nil
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
for _, c := range append(defaultCapabilities, addCapabilities...) {
|
||||
mapCap[c] = true
|
||||
}
|
||||
for _, c := range dropCapabilities {
|
||||
if "all" == strings.ToLower(c) {
|
||||
return caps
|
||||
}
|
||||
mapCap[c] = false
|
||||
}
|
||||
for cap, add := range mapCap {
|
||||
if add {
|
||||
caps = append(caps, cap)
|
||||
}
|
||||
}
|
||||
return caps
|
||||
return capabilities.MergeCapabilities(defaultCapabilities, addCapabilities, dropCapabilities)
|
||||
}
|
||||
|
||||
// Device parses device mapping string to a src, dest & permissions string
|
||||
|
Reference in New Issue
Block a user