From: Yan, Zheng Date: Tue, 18 Oct 2016 09:44:31 +0000 (+0800) Subject: client: get caller's uid/gid on every libcephfs operation X-Git-Tag: v11.1.0~566^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=91a46b197be580d16ed90bcbda6888406cab4afd;p=ceph.git client: get caller's uid/gid on every libcephfs operation Fixes: http://tracker.ceph.com/issues/17591 Signed-off-by: Yan, Zheng --- diff --git a/src/client/Client.h b/src/client/Client.h index 91863ff4932..d544e927558 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -292,14 +292,14 @@ public: void tick(); UserPerm pick_my_perms() { - uid_t uid = user_id >= 0 ? user_id : ::geteuid(); - gid_t gid = group_id >= 0 ? group_id : ::getegid(); + uid_t uid = user_id >= 0 ? user_id : -1; + gid_t gid = group_id >= 0 ? group_id : -1; return UserPerm(uid, gid); } static UserPerm pick_my_perms(CephContext *c) { - uid_t uid = c->_conf->client_mount_uid >= 0 ? c->_conf->client_mount_uid : ::geteuid(); - gid_t gid = c->_conf->client_mount_gid >= 0 ? c->_conf->client_mount_gid : ::getegid(); + uid_t uid = c->_conf->client_mount_uid >= 0 ? c->_conf->client_mount_uid : -1; + gid_t gid = c->_conf->client_mount_gid >= 0 ? c->_conf->client_mount_gid : -1; return UserPerm(uid, gid); } protected: diff --git a/src/client/UserPerm.h b/src/client/UserPerm.h index 71775b00334..9ce51041207 100644 --- a/src/client/UserPerm.h +++ b/src/client/UserPerm.h @@ -65,8 +65,8 @@ public: return *this; } - uid_t uid() const { return m_uid; } - gid_t gid() const { return m_gid; } + uid_t uid() const { return m_uid != (uid_t)-1 ? m_uid : ::geteuid(); } + gid_t gid() const { return m_gid != (gid_t)-1 ? m_gid : ::getegid(); } bool gid_in_groups(gid_t gid) const { if (gid == m_gid) return true; for (int i = 0; i < gid_count; ++i) {