From 91a46b197be580d16ed90bcbda6888406cab4afd Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Tue, 18 Oct 2016 17:44:31 +0800 Subject: [PATCH] client: get caller's uid/gid on every libcephfs operation Fixes: http://tracker.ceph.com/issues/17591 Signed-off-by: Yan, Zheng --- src/client/Client.h | 8 ++++---- src/client/UserPerm.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) 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) { -- 2.47.3