paths: skip unix chmod if state directory is already 0700

Updates #2934

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick 2021-09-26 07:54:53 -07:00 committed by Brad Fitzpatrick
parent 3b3994f0db
commit 5263c8d0b5

View File

@ -8,6 +8,7 @@
package paths
import (
"fmt"
"os"
"path/filepath"
"runtime"
@ -62,10 +63,21 @@ func xdgDataHome() string {
return filepath.Join(os.Getenv("HOME"), ".local/share")
}
func ensureStateDirPerms(dirPath string) error {
if filepath.Base(dirPath) != "tailscale" {
func ensureStateDirPerms(dir string) error {
if filepath.Base(dir) != "tailscale" {
return nil
}
return os.Chmod(dirPath, 0700)
fi, err := os.Stat(dir)
if err != nil {
return err
}
if !fi.IsDir() {
return fmt.Errorf("expected %q to be a directory; is %v", dir, fi.Mode())
}
const perm = 0700
if fi.Mode().Perm() == perm {
// Already correct.
return nil
}
return os.Chmod(dir, perm)
}