]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
global: record target uid/gid in cct
authorSage Weil <sage@redhat.com>
Mon, 8 Feb 2016 16:19:08 +0000 (11:19 -0500)
committerSage Weil <sage@redhat.com>
Mon, 8 Feb 2016 19:12:48 +0000 (14:12 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/common/ceph_context.cc
src/common/ceph_context.h
src/global/global_init.cc

index 5470807e9527c536ee53167a5c05f69ca2ca694c..9cf85874701efd5450bedad3ad1122e4a8e95d57 100644 (file)
@@ -438,6 +438,8 @@ CephContext::CephContext(uint32_t module_type_, int init_flags_)
     _log(NULL),
     _module_type(module_type_),
     _init_flags(init_flags_),
+    _set_uid(0),
+    _set_gid(0),
     _crypto_inited(false),
     _service_thread(NULL),
     _log_obs(NULL),
index 99b2181b844e4ddcfef404847a9286205ff1cfb3..b91b7e7a3a81bebd575a069dd119f9165b5be24f 100644 (file)
@@ -153,6 +153,17 @@ public:
     return _plugin_registry;
   }
 
+  void set_uid_gid(uid_t u, gid_t g) {
+    _set_uid = u;
+    _set_gid = g;
+  }
+  uid_t get_set_uid() const {
+    return _set_uid;
+  }
+  gid_t get_set_gid() const {
+    return _set_gid;
+  }
+
 private:
   struct SingletonWrapper : boost::noncopyable {
     virtual ~SingletonWrapper() {}
@@ -179,6 +190,9 @@ private:
 
   int _init_flags;
 
+  uid_t _set_uid; ///< uid to drop privs to
+  gid_t _set_gid; ///< gid to drop privs to
+
   bool _crypto_inited;
 
   /* libcommon service thread.
index bca47eb5af14370b668c61d158a1f798d141abc5..e8c12f4f96079ee7dc6d3eaeea3b66b4c3b789bf 100644 (file)
@@ -202,6 +202,7 @@ void global_init(std::vector < const char * > *alt_def_args,
                << st.st_uid << ":" << st.st_gid << ". ";
       }
     }
+    g_ceph_context->set_uid_gid(uid, gid);
     if (setgid(gid) != 0) {
       int r = errno;
       cerr << "unable to setgid " << gid << ": " << cpp_strerror(r)