+
+// chmodNoFollow works like os.Chmod but doesn't follow symlinks.
+func chmodNoFollow(path string, mode fs.FileMode) error {
+ x, err := sync.OpenFileNoSymlinks(path)
+ if err != nil {
+ return err
+ }
+ defer x.Close()
+
+ err = x.Chmod(mode)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}