瀏覽代碼

Merge pull request #13941 from unclejack/fix_umask

docker/daemon: set umask to the default on startup
David Calavera 10 年之前
父節點
當前提交
f48fadd05c
共有 3 個文件被更改,包括 23 次插入0 次删除
  1. 4 0
      docker/daemon.go
  2. 14 0
      docker/daemon_unix.go
  3. 5 0
      docker/daemon_windows.go

+ 4 - 0
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)

+ 14 - 0
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
+}

+ 5 - 0
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
+}