Skip to content

Commit 301ba4b

Browse files
committed
Chmod after creating directories and files to override umask
1 parent 12e96df commit 301ba4b

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

internal/storage/copy.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func Copy(srcPath string, destPath string, dry bool) error {
5656
})
5757

5858
// Ensure destination exists
59-
err = os.MkdirAll(filepath.Dir(destPath), defaultDirPermissions)
59+
err = os.MkdirAll(filepath.Dir(destPath), storageDirPermissions)
6060
if err != nil {
6161
return err
6262
}
@@ -70,6 +70,12 @@ func Copy(srcPath string, destPath string, dry bool) error {
7070
}
7171
defer dst.Close()
7272

73+
// Set destination file permissions
74+
err = os.Chmod(destPath, storageFilePermissions)
75+
if err != nil {
76+
return err
77+
}
78+
7379
// Copy the file
7480
_, err := io.Copy(dst, src)
7581
if err != nil {

internal/storage/init.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import (
77
"path/filepath"
88
)
99

10-
var defaultDirPermissions = os.FileMode(0776)
11-
1210
func Init(rootDir string, storageDir string) error {
1311
// Get storage directory as absolute path
1412
storageDir, err := filepath.Abs(storageDir)
@@ -27,7 +25,7 @@ func Init(rootDir string, storageDir string) error {
2725
fileInfo, err := os.Stat(storageDir)
2826
if err != nil {
2927
// Create storage dir and necessary parents
30-
err = os.MkdirAll(storageDir, defaultDirPermissions)
28+
err = os.MkdirAll(storageDir, storageDirPermissions)
3129
if err != nil {
3230
log.Print(log.ColorRed("✘"), "Failed to create storage directory", log.ColorFile(storageDir))
3331
log.JsonLogger.Issues = append(log.JsonLogger.Issues, log.JsonIssue{
@@ -39,12 +37,27 @@ func Init(rootDir string, storageDir string) error {
3937
return err
4038
}
4139

42-
log.Print(log.ColorGreen("✔"), "Created storage directory")
40+
// Set storage dir permissions
41+
err = os.Chmod(storageDir, storageDirPermissions)
42+
if err != nil {
43+
log.Print(log.ColorRed("✘"), "Failed to set storage directory permissions", log.ColorFile(storageDir))
44+
log.JsonLogger.Issues = append(log.JsonLogger.Issues, log.JsonIssue{
45+
Severity: "error",
46+
Message: "failed to set storage directory permissions",
47+
Location: storageDir,
48+
})
49+
50+
return err
51+
}
52+
53+
log.Print(log.ColorGreen("✔"), "Created storage directory", log.ColorFile(storageDir))
4354
log.JsonLogger.Actions = append(log.JsonLogger.Actions, log.JsonAction{
4455
Action: "created storage directory",
4556
Path: storageDir,
4657
})
4758
} else {
59+
log.Print(log.ColorGreen("✔"), "Storage directory already exists", log.ColorFile(storageDir))
60+
4861
// Ensure destination is a directory
4962
if !fileInfo.IsDir() {
5063
log.Print(log.ColorRed("✘"), "Destination isn't a directory", log.ColorFile(storageDir))
@@ -85,7 +98,6 @@ func Init(rootDir string, storageDir string) error {
8598
}
8699

87100
log.Print(log.ColorGreen("✔"), "Wrote config", log.ColorFile(filepath.Join(rootDir, config.ConfigFileName)))
88-
log.Print(" storage dir", log.ColorFile(storageDir))
89101
log.JsonLogger.Actions = append(log.JsonLogger.Actions, log.JsonAction{
90102
Action: "wrote config",
91103
Path: filepath.Join(rootDir, config.ConfigFileName),

internal/storage/main.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
package storage
22

3-
var FileExtension = ".dvsfile"
3+
import "io/fs"
4+
5+
var (
6+
FileExtension = ".dvsfile"
7+
storageDirPermissions = fs.FileMode(0777)
8+
storageFilePermissions = fs.FileMode(0666)
9+
)

0 commit comments

Comments
 (0)