12764: Explicitly set desired permissions on copied files/dirs
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 1 Feb 2018 15:59:53 +0000 (10:59 -0500)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 1 Feb 2018 15:59:53 +0000 (10:59 -0500)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

services/crunch-run/crunchrun.go

index 63697b6f3515fea8a74deb1480b91e4292b261a4..3230ca98affefc49bf875bd54f674427d46014c7 100644 (file)
@@ -584,10 +584,19 @@ func (runner *ContainerRunner) SetupMounts() (err error) {
                                if walkerr != nil {
                                        return walkerr
                                }
+                               target := path.Join(cp.bind, walkpath[len(cp.src):])
                                if walkinfo.Mode().IsRegular() {
-                                       return copyfile(walkpath, path.Join(cp.bind, walkpath[len(cp.src):]))
+                                       copyerr := copyfile(walkpath, target)
+                                       if copyerr != nil {
+                                               return copyerr
+                                       }
+                                       return os.Chmod(target, walkinfo.Mode()|0777)
                                } else if walkinfo.Mode().IsDir() {
-                                       return os.MkdirAll(path.Join(cp.bind, walkpath[len(cp.src):]), 0777)
+                                       mkerr := os.MkdirAll(target, 0777)
+                                       if mkerr != nil {
+                                               return mkerr
+                                       }
+                                       return os.Chmod(target, walkinfo.Mode()|os.ModeSetgid|0777)
                                } else {
                                        return fmt.Errorf("Source %q is not a regular file or directory", cp.src)
                                }