aboutsummaryrefslogtreecommitdiff
path: root/weed/filesys
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2019-07-24 00:03:05 -0700
committerChris Lu <chris.lu@gmail.com>2019-07-24 00:03:05 -0700
commit5956dfd08d690ee67bcd4a7f5730785f7a6df201 (patch)
tree0ec5f401c2129e9ea5bb9e21b3acfe3d0f5dafe3 /weed/filesys
parent3f851feb59d9ffc80ac366222435eb54f98456ad (diff)
downloadseaweedfs-5956dfd08d690ee67bcd4a7f5730785f7a6df201.tar.xz
seaweedfs-5956dfd08d690ee67bcd4a7f5730785f7a6df201.zip
mount: add umask option
related to https://github.com/chrislusf/seaweedfs/issues/978
Diffstat (limited to 'weed/filesys')
-rw-r--r--weed/filesys/dir.go4
-rw-r--r--weed/filesys/dir_link.go2
-rw-r--r--weed/filesys/filehandle.go2
-rw-r--r--weed/filesys/wfs.go1
4 files changed, 5 insertions, 4 deletions
diff --git a/weed/filesys/dir.go b/weed/filesys/dir.go
index 0e9e92e16..79cf45385 100644
--- a/weed/filesys/dir.go
+++ b/weed/filesys/dir.go
@@ -101,7 +101,7 @@ func (dir *Dir) Create(ctx context.Context, req *fuse.CreateRequest,
Attributes: &filer_pb.FuseAttributes{
Mtime: time.Now().Unix(),
Crtime: time.Now().Unix(),
- FileMode: uint32(req.Mode),
+ FileMode: uint32(req.Mode &^ dir.wfs.option.Umask),
Uid: req.Uid,
Gid: req.Gid,
Collection: dir.wfs.option.Collection,
@@ -146,7 +146,7 @@ func (dir *Dir) Mkdir(ctx context.Context, req *fuse.MkdirRequest) (fs.Node, err
Attributes: &filer_pb.FuseAttributes{
Mtime: time.Now().Unix(),
Crtime: time.Now().Unix(),
- FileMode: uint32(req.Mode),
+ FileMode: uint32(req.Mode &^ dir.wfs.option.Umask),
Uid: req.Uid,
Gid: req.Gid,
},
diff --git a/weed/filesys/dir_link.go b/weed/filesys/dir_link.go
index 92cf04d58..94e443649 100644
--- a/weed/filesys/dir_link.go
+++ b/weed/filesys/dir_link.go
@@ -27,7 +27,7 @@ func (dir *Dir) Symlink(ctx context.Context, req *fuse.SymlinkRequest) (fs.Node,
Attributes: &filer_pb.FuseAttributes{
Mtime: time.Now().Unix(),
Crtime: time.Now().Unix(),
- FileMode: uint32(os.FileMode(0755) | os.ModeSymlink),
+ FileMode: uint32((os.FileMode(0777) | os.ModeSymlink) &^ dir.wfs.option.Umask),
Uid: req.Uid,
Gid: req.Gid,
SymlinkTarget: req.Target,
diff --git a/weed/filesys/filehandle.go b/weed/filesys/filehandle.go
index ceec50e13..1f4754dd1 100644
--- a/weed/filesys/filehandle.go
+++ b/weed/filesys/filehandle.go
@@ -148,7 +148,7 @@ func (fh *FileHandle) Flush(ctx context.Context, req *fuse.FlushRequest) error {
fh.f.entry.Attributes.Gid = req.Gid
fh.f.entry.Attributes.Mtime = time.Now().Unix()
fh.f.entry.Attributes.Crtime = time.Now().Unix()
- fh.f.entry.Attributes.FileMode = uint32(0770)
+ fh.f.entry.Attributes.FileMode = uint32(0777 &^ fh.f.wfs.option.Umask)
}
request := &filer_pb.CreateEntryRequest{
diff --git a/weed/filesys/wfs.go b/weed/filesys/wfs.go
index 9018c36ed..1bd9b5cc9 100644
--- a/weed/filesys/wfs.go
+++ b/weed/filesys/wfs.go
@@ -28,6 +28,7 @@ type Option struct {
DataCenter string
DirListingLimit int
EntryCacheTtl time.Duration
+ Umask os.FileMode
MountUid uint32
MountGid uint32