aboutsummaryrefslogtreecommitdiff
path: root/weed/command/mount_std.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/command/mount_std.go')
-rw-r--r--weed/command/mount_std.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/weed/command/mount_std.go b/weed/command/mount_std.go
index e238fafbf..9ab21010e 100644
--- a/weed/command/mount_std.go
+++ b/weed/command/mount_std.go
@@ -4,7 +4,10 @@ package command
import (
"fmt"
+ "os"
+ "os/user"
"runtime"
+ "strconv"
"strings"
"time"
@@ -28,6 +31,24 @@ func runMount(cmd *Command, args []string) bool {
fuse.Unmount(*mountOptions.dir)
+ // detect mount folder mode
+ mountMode := os.ModeDir | 0755
+ if fileInfo, err := os.Stat(*mountOptions.dir); err == nil {
+ mountMode = os.ModeDir | fileInfo.Mode()
+ println(*mountOptions.dir, "mount mode", mountMode)
+ }
+
+ // detect current user
+ uid, gid := uint32(0), uint32(0)
+ if u, err := user.Current(); err == nil {
+ if parsedId, pe := strconv.ParseUint(u.Uid, 10, 32); pe == nil {
+ uid = uint32(parsedId)
+ }
+ if parsedId, pe := strconv.ParseUint(u.Gid, 10, 32); pe == nil {
+ gid = uint32(parsedId)
+ }
+ }
+
util.SetupProfiling(*mountCpuProfile, *mountMemProfile)
c, err := fuse.Mount(
@@ -77,6 +98,9 @@ func runMount(cmd *Command, args []string) bool {
DataCenter: *mountOptions.dataCenter,
DirListingLimit: *mountOptions.dirListingLimit,
EntryCacheTtl: 3 * time.Second,
+ MountUid: uid,
+ MountGid: gid,
+ MountMode: mountMode,
}))
if err != nil {
fuse.Unmount(*mountOptions.dir)