]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librgw: fix Unix file modes
authorMatt Benjamin <mbenjamin@redhat.com>
Wed, 11 Nov 2015 22:30:00 +0000 (17:30 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Fri, 12 Feb 2016 17:05:55 +0000 (12:05 -0500)
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_file.cc

index 84bcfd59e6325aa35ab192cbdce371fa7d5f0ffe..e4f20fbed18fa391632bcc7f00f6b38a18ba58b8 100644 (file)
@@ -343,6 +343,11 @@ int rgw_fh_rele(struct rgw_fs *rgw_fs, struct rgw_file_handle *fh,
   return 0;
 }
 
+#define RGW_RWXMODE  (S_IRWXU | S_IRWXG | S_IRWXO)
+
+#define RGW_RWMODE (RGW_RWXMODE &                      \
+                     ~(S_IXUSR | S_IXGRP | S_IXOTH))
+
 /*
    get unix attributes for object
 */
@@ -359,7 +364,7 @@ int rgw_getattr(struct rgw_fs *rgw_fs,
     memset(st, 0, sizeof(struct stat));
     st->st_dev = fs->get_inst();
     st->st_ino = rgw_fh->get_fh()->fh_hk.object; // XXX
-    st->st_mode = 755|S_IFDIR;
+    st->st_mode = RGW_RWXMODE|S_IFDIR;
     st->st_nlink = 3;
     st->st_uid = 0; // XXX
     st->st_gid = 0; // XXX
@@ -375,7 +380,7 @@ int rgw_getattr(struct rgw_fs *rgw_fs,
     memset(st, 0, sizeof(struct stat));
     st->st_dev = fs->get_inst();
     st->st_ino = rgw_fh->get_fh()->fh_hk.object; // XXX
-    st->st_mode = 666|S_IFDIR;
+    st->st_mode = RGW_RWXMODE|S_IFDIR;
     st->st_nlink = 3;
     st->st_uid = 0; // XXX
     st->st_gid = 0; // XXX
@@ -403,7 +408,7 @@ int rgw_getattr(struct rgw_fs *rgw_fs,
     memset(st, 0, sizeof(struct stat));
     st->st_dev = fs->get_inst();
     st->st_ino = rgw_fh->get_fh()->fh_hk.object; // XXX
-    st->st_mode = 666|S_IFREG;
+    st->st_mode = RGW_RWMODE|S_IFREG;
     st->st_nlink = 1;
     st->st_uid = 0; // XXX
     st->st_gid = 0; // XXX