Skip to content

Commit

Permalink
Added DropCapabilities() and DropBoundingSet() API to libcontainer.
Browse files Browse the repository at this point in the history
Docker-DCO-1.1-Signed-off-by: Vishnu Kannan <vishnuk@google.com> (github: vishh)
  • Loading branch information
vishh committed Jun 23, 2014
1 parent 4c55db7 commit ece2d83
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 8 deletions.
4 changes: 2 additions & 2 deletions namespaces/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ func FinalizeNamespace(container *libcontainer.Container) error {
}

// drop capabilities in bounding set before changing user
if err := capabilities.DropBoundingSet(&container.Capabilities); err != nil {
if err := capabilities.DropBoundingSet(container.Capabilities); err != nil {
return fmt.Errorf("drop bounding set %s", err)
}

Expand All @@ -213,7 +213,7 @@ func FinalizeNamespace(container *libcontainer.Container) error {
}

// drop all other capabilities
if err := capabilities.DropCapabilities(&container.Capabilities); err != nil {
if err := capabilities.DropCapabilities(container.Capabilities); err != nil {
return fmt.Errorf("drop capabilities %s", err)
}

Expand Down
8 changes: 4 additions & 4 deletions security/capabilities/capabilities.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const allCapabilityTypes = capability.CAPS | capability.BOUNDS

// DropBoundingSet drops the capability bounding set to those specified in the
// container configuration.
func DropBoundingSet(capabilities *[]string) error {
func DropBoundingSet(capabilities []string) error {
c, err := capability.NewPid(os.Getpid())
if err != nil {
return err
Expand All @@ -28,7 +28,7 @@ func DropBoundingSet(capabilities *[]string) error {
}

// DropCapabilities drops all capabilities for the current process expect those specified in the container configuration.
func DropCapabilities(capList *[]string) error {
func DropCapabilities(capList []string) error {
c, err := capability.NewPid(os.Getpid())
if err != nil {
return err
Expand All @@ -45,9 +45,9 @@ func DropCapabilities(capList *[]string) error {
}

// getEnabledCapabilities returns the capabilities that should not be dropped by the container.
func getEnabledCapabilities(capList *[]string) []capability.Cap {
func getEnabledCapabilities(capList []string) []capability.Cap {
keep := []capability.Cap{}
for _, capability := range *capList {
for _, capability := range capList {
if c := GetCapability(capability); c != nil {
keep = append(keep, c.Value)
}
Expand Down
4 changes: 2 additions & 2 deletions security/capabilities/types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ func TestCapabilitiesContains(t *testing.T) {
GetCapability("SETPCAP"),
}

if caps.Contains("SYS_ADMIN") {
if caps.contains("SYS_ADMIN") {
t.Fatal("capabilities should not contain SYS_ADMIN")
}
if !caps.Contains("MKNOD") {
if !caps.contains("MKNOD") {
t.Fatal("capabilities should contain MKNOD but does not")
}
}
8 changes: 8 additions & 0 deletions utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,11 @@ func GetInternalNetworkSpec(net *Network) *network.Network {
func GetAllCapabilities() []string {
return capabilities.GetAllCapabilities()
}

func DropBoundingSet(container *Container) error {
return capabilities.DropBoundingSet(container.Capabilities)
}

func DropCapabilities(container *Container) error {
return capabilities.DropCapabilities(container.Capabilities)
}

0 comments on commit ece2d83

Please sign in to comment.