mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #37831 from cyphar/apparmor-external-templates
apparmor: allow receiving of signals from 'docker kill'
This commit is contained in:
commit
f11b87bfca
2 changed files with 27 additions and 0 deletions
|
@ -23,6 +23,8 @@ var (
|
||||||
type profileData struct {
|
type profileData struct {
|
||||||
// Name is profile name.
|
// Name is profile name.
|
||||||
Name string
|
Name string
|
||||||
|
// DaemonProfile is the profile name of our daemon.
|
||||||
|
DaemonProfile string
|
||||||
// Imports defines the apparmor functions to import, before defining the profile.
|
// Imports defines the apparmor functions to import, before defining the profile.
|
||||||
Imports []string
|
Imports []string
|
||||||
// InnerImports defines the apparmor functions to import in the profile.
|
// InnerImports defines the apparmor functions to import in the profile.
|
||||||
|
@ -70,6 +72,25 @@ func InstallDefault(name string) error {
|
||||||
Name: name,
|
Name: name,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Figure out the daemon profile.
|
||||||
|
currentProfile, err := ioutil.ReadFile("/proc/self/attr/current")
|
||||||
|
if err != nil {
|
||||||
|
// If we couldn't get the daemon profile, assume we are running
|
||||||
|
// unconfined which is generally the default.
|
||||||
|
currentProfile = nil
|
||||||
|
}
|
||||||
|
daemonProfile := string(currentProfile)
|
||||||
|
// Normally profiles are suffixed by " (enforcing)" or similar. AppArmor
|
||||||
|
// profiles cannot contain spaces so this doesn't restrict daemon profile
|
||||||
|
// names.
|
||||||
|
if parts := strings.SplitN(daemonProfile, " ", 2); len(parts) >= 1 {
|
||||||
|
daemonProfile = parts[0]
|
||||||
|
}
|
||||||
|
if daemonProfile == "" {
|
||||||
|
daemonProfile = "unconfined"
|
||||||
|
}
|
||||||
|
p.DaemonProfile = daemonProfile
|
||||||
|
|
||||||
// Install to a temporary directory.
|
// Install to a temporary directory.
|
||||||
f, err := ioutil.TempFile("", name)
|
f, err := ioutil.TempFile("", name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -17,6 +17,12 @@ profile {{.Name}} flags=(attach_disconnected,mediate_deleted) {
|
||||||
capability,
|
capability,
|
||||||
file,
|
file,
|
||||||
umount,
|
umount,
|
||||||
|
{{if ge .Version 208096}}
|
||||||
|
{{/* Allow 'docker kill' to actually send signals to container processes. */}}
|
||||||
|
signal (receive) peer={{.DaemonProfile}},
|
||||||
|
{{/* Allow container processes to send signals amongst themselves. */}}
|
||||||
|
signal (send,receive) peer={{.Name}},
|
||||||
|
{{end}}
|
||||||
|
|
||||||
deny @{PROC}/* w, # deny write for all files directly in /proc (not in a subdir)
|
deny @{PROC}/* w, # deny write for all files directly in /proc (not in a subdir)
|
||||||
# deny write to files not in /proc/<number>/** or /proc/sys/**
|
# deny write to files not in /proc/<number>/** or /proc/sys/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue