From 73b0733f082b62eabd032e417d24de5e34068155 Mon Sep 17 00:00:00 2001 From: unclejack Date: Mon, 15 Jun 2015 16:36:19 +0300 Subject: [PATCH] docker/daemon: set umask to the default on startup This sets up the umask so that it's the same on all systems. Signed-off-by: Cristian Staretu Upstream-commit: 6578ad90c307c5500a7998819743be88f63ef2b3 Component: engine --- components/engine/docker/daemon.go | 4 ++++ components/engine/docker/daemon_unix.go | 14 ++++++++++++++ components/engine/docker/daemon_windows.go | 5 +++++ 3 files changed, 23 insertions(+) diff --git a/components/engine/docker/daemon.go b/components/engine/docker/daemon.go index 1add3c90c2..8ff0fe1cf0 100644 --- a/components/engine/docker/daemon.go +++ b/components/engine/docker/daemon.go @@ -91,6 +91,10 @@ func mainDaemon() { logrus.SetFormatter(&logrus.TextFormatter{TimestampFormat: timeutils.RFC3339NanoFixed}) + if err := setDefaultUmask(); err != nil { + logrus.Fatalf("Failed to set umask: %v", err) + } + var pfile *pidfile.PidFile if daemonCfg.Pidfile != "" { pf, err := pidfile.New(daemonCfg.Pidfile) diff --git a/components/engine/docker/daemon_unix.go b/components/engine/docker/daemon_unix.go index d1d7f53546..c64ae967fe 100644 --- a/components/engine/docker/daemon_unix.go +++ b/components/engine/docker/daemon_unix.go @@ -3,7 +3,9 @@ package main import ( + "fmt" "os" + "syscall" apiserver "github.com/docker/docker/api/server" "github.com/docker/docker/daemon" @@ -28,3 +30,15 @@ func currentUserIsOwner(f string) bool { } return false } + +// setDefaultUmask sets the umask to 0022 to avoid problems +// caused by custom umask +func setDefaultUmask() error { + desiredUmask := 0022 + syscall.Umask(desiredUmask) + if umask := syscall.Umask(desiredUmask); umask != desiredUmask { + return fmt.Errorf("failed to set umask: expected %#o, got %#o", desiredUmask, umask) + } + + return nil +} diff --git a/components/engine/docker/daemon_windows.go b/components/engine/docker/daemon_windows.go index 2ba15ee65a..9a57d8734f 100644 --- a/components/engine/docker/daemon_windows.go +++ b/components/engine/docker/daemon_windows.go @@ -16,3 +16,8 @@ func setPlatformServerConfig(serverConfig *apiserver.ServerConfig, daemonCfg *da func currentUserIsOwner(f string) bool { return false } + +// setDefaultUmask doesn't do anything on windows +func setDefaultUmask() error { + return nil +}