return _set_gid;
}
+ void set_uid_gid_strings(std::string u, std::string g) {
+ _set_uid_string = u;
+ _set_gid_string = g;
+ }
+ std::string get_set_uid_string() const {
+ return _set_uid_string;
+ }
+ std::string get_set_gid_string() const {
+ return _set_gid_string;
+ }
+
private:
struct SingletonWrapper : boost::noncopyable {
virtual ~SingletonWrapper() {}
uid_t _set_uid; ///< uid to drop privs to
gid_t _set_gid; ///< gid to drop privs to
+ std::string _set_uid_string;
+ std::string _set_gid_string;
bool _crypto_inited;
g_conf->setuser.length()) {
uid_t uid = 0; // zero means no change; we can only drop privs here.
gid_t gid = 0;
+ std::string uid_string;
+ std::string gid_string;
if (g_conf->setuser.length()) {
uid = atoi(g_conf->setuser.c_str());
if (!uid) {
}
uid = p->pw_uid;
gid = p->pw_gid;
+ uid_string = g_conf->setuser;
}
}
if (g_conf->setgroup.length() > 0) {
exit(1);
}
gid = g->gr_gid;
+ gid_string = g_conf->setgroup;
}
}
if ((uid || gid) &&
<< std::endl;
uid = 0;
gid = 0;
+ uid_string.erase();
+ gid_string.erase();
} else {
priv_ss << "setuser_match_path "
<< g_conf->setuser_match_path << " owned by "
}
}
g_ceph_context->set_uid_gid(uid, gid);
+ g_ceph_context->set_uid_gid_strings(uid_string, gid_string);
if ((flags & CINIT_FLAG_DEFER_DROP_PRIVILEGES) == 0) {
if (setgid(gid) != 0) {
int r = errno;
<< std::endl;
exit(1);
}
- priv_ss << "set uid:gid to " << uid << ":" << gid;
+ priv_ss << "set uid:gid to " << uid << ":" << gid << " (" << uid_string << ":" << gid_string << ")";
} else {
- priv_ss << "deferred set uid:gid to " << uid << ":" << gid;
+ priv_ss << "deferred set uid:gid to " << uid << ":" << gid << " (" << uid_string << ":" << gid_string << ")";
}
}