os.MkdirAll creates directory before umask so make sure that a desired permission is set after creating a directory with MkdirAll. Use the existing TouchDirAll function which checks for permission if dir is already exist and when create a new dir.