diff options
| author | chrislu <chris.lu@gmail.com> | 2022-01-13 02:07:39 -0800 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2022-01-13 02:07:39 -0800 |
| commit | fe5b9e39cc5a3526a0fdadf8b518b67b02d5451b (patch) | |
| tree | fde432a34d34a780d494c21fe5c5e19523c269c9 /weed/filesys/permission.go | |
| parent | 1453263b636b4902184573109f8038a8da6ccb4a (diff) | |
| download | seaweedfs-fe5b9e39cc5a3526a0fdadf8b518b67b02d5451b.tar.xz seaweedfs-fe5b9e39cc5a3526a0fdadf8b518b67b02d5451b.zip | |
POSIX: check permission when removing items
Diffstat (limited to 'weed/filesys/permission.go')
| -rw-r--r-- | weed/filesys/permission.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/weed/filesys/permission.go b/weed/filesys/permission.go index a8c4cd891..2edfd49dd 100644 --- a/weed/filesys/permission.go +++ b/weed/filesys/permission.go @@ -6,6 +6,9 @@ import ( ) func checkPermission(entry *filer_pb.Entry, uid, gid uint32, isWrite bool) error { + if uid == 0 || gid == 0 { + return nil + } if entry == nil { return nil } @@ -15,13 +18,13 @@ func checkPermission(entry *filer_pb.Entry, uid, gid uint32, isWrite bool) error attr := entry.Attributes if attr.Uid == uid { if isWrite { - if attr.FileMode&0002 > 0 { + if attr.FileMode&0200 > 0 { return nil } else { return fuse.EPERM } } else { - if attr.FileMode&0004 > 0 { + if attr.FileMode&0400 > 0 { return nil } else { return fuse.EPERM @@ -43,13 +46,13 @@ func checkPermission(entry *filer_pb.Entry, uid, gid uint32, isWrite bool) error } } else { if isWrite { - if attr.FileMode&0200 > 0 { + if attr.FileMode&0002 > 0 { return nil } else { return fuse.EPERM } } else { - if attr.FileMode&0400 > 0 { + if attr.FileMode&0004 > 0 { return nil } else { return fuse.EPERM |
