Browse code

Merge pull request #7062 from crosbymichael/fix-lxc-caps

Fix cap drop issues with lxc

Victor Vieux authored on 2014/07/29 08:19:08
Showing 3 changed files
... ...
@@ -139,11 +139,11 @@ func (d *driver) Run(c *execdriver.Command, pipes *execdriver.Pipes, startCallba
139 139
 	}
140 140
 
141 141
 	if len(c.CapAdd) > 0 {
142
-		params = append(params, "-cap-add", strings.Join(c.CapAdd, " "))
142
+		params = append(params, fmt.Sprintf("-cap-add=%s", strings.Join(c.CapAdd, ":")))
143 143
 	}
144 144
 
145 145
 	if len(c.CapDrop) > 0 {
146
-		params = append(params, "-cap-drop", strings.Join(c.CapDrop, " "))
146
+		params = append(params, fmt.Sprintf("-cap-drop=%s", strings.Join(c.CapDrop, ":")))
147 147
 	}
148 148
 
149 149
 	params = append(params, "--", c.Entrypoint)
... ...
@@ -49,7 +49,19 @@ func finalizeNamespace(args *execdriver.InitArgs) error {
49 49
 			return fmt.Errorf("clear keep caps %s", err)
50 50
 		}
51 51
 
52
-		caps, err := execdriver.TweakCapabilities(container.Capabilities, strings.Split(args.CapAdd, " "), strings.Split(args.CapDrop, " "))
52
+		var (
53
+			adds  []string
54
+			drops []string
55
+		)
56
+
57
+		if args.CapAdd != "" {
58
+			adds = strings.Split(args.CapAdd, ":")
59
+		}
60
+		if args.CapDrop != "" {
61
+			drops = strings.Split(args.CapDrop, ":")
62
+		}
63
+
64
+		caps, err := execdriver.TweakCapabilities(container.Capabilities, adds, drops)
53 65
 		if err != nil {
54 66
 			return err
55 67
 		}
... ...
@@ -20,7 +20,7 @@ func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
20 20
 			continue
21 21
 		}
22 22
 		if !utils.StringsContainsNoCase(allCaps, cap) {
23
-			return nil, fmt.Errorf("Unknown capability: %s", cap)
23
+			return nil, fmt.Errorf("Unknown capability drop: %q", cap)
24 24
 		}
25 25
 	}
26 26
 
... ...
@@ -49,9 +49,8 @@ func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
49 49
 			continue
50 50
 		}
51 51
 
52
-		// look for invalid cap in the drop list
53 52
 		if !utils.StringsContainsNoCase(allCaps, cap) {
54
-			return nil, fmt.Errorf("Unknown capability: %s", cap)
53
+			return nil, fmt.Errorf("Unknown capability to add: %q", cap)
55 54
 		}
56 55
 
57 56
 		// add cap if not already in the list
... ...
@@ -59,5 +58,6 @@ func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
59 59
 			newCaps = append(newCaps, strings.ToUpper(cap))
60 60
 		}
61 61
 	}
62
+
62 63
 	return newCaps, nil
63 64
 }