Browse code

Add cli build warning about chmod bits on windows

This shows a warning message about adjusted file/directory permission bits
when the `docker build` cli command is executed on windows.

Signed-off-by: Ahmet Alp Balkan <ahmetalpbalkan@gmail.com>

Ahmet Alp Balkan authored on 2015/03/16 15:59:10
Showing 2 changed files
... ...
@@ -227,6 +227,13 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
227 227
 			return err
228 228
 		}
229 229
 	}
230
+
231
+	// windows: show error message about modified file permissions
232
+	// FIXME: this is not a valid warning when the daemon is running windows. should be removed once docker engine for windows can build.
233
+	if runtime.GOOS == "windows" {
234
+		log.Warn(`SECURITY WARNING: You are building a Docker image from Windows against a Linux Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.`)
235
+	}
236
+
230 237
 	var body io.Reader
231 238
 	// Setup an upload progress bar
232 239
 	// FIXME: ProgressReader shouldn't be this annoying to use
... ...
@@ -4551,8 +4551,19 @@ func TestBuildStderr(t *testing.T) {
4551 4551
 	if err != nil {
4552 4552
 		t.Fatal(err)
4553 4553
 	}
4554
-	if stderr != "" {
4555
-		t.Fatalf("Stderr should have been empty, instead its: %q", stderr)
4554
+
4555
+	if runtime.GOOS == "windows" {
4556
+		// stderr might contain a security warning on windows
4557
+		lines := strings.Split(stderr, "\n")
4558
+		for _, v := range lines {
4559
+			if v != "" && !strings.Contains(v, "SECURITY WARNING:") {
4560
+				t.Fatalf("Stderr contains unexpected output line: %q", v)
4561
+			}
4562
+		}
4563
+	} else {
4564
+		if stderr != "" {
4565
+			t.Fatalf("Stderr should have been empty, instead its: %q", stderr)
4566
+		}
4556 4567
 	}
4557 4568
 	logDone("build - testing stderr")
4558 4569
 }