diff --git a/src/admin/admin_server_dispatch.c b/src/admin/admin_server_dispatch.c index 85e693d76cb39ef5cac3eaceca84d3475cb76014..6e3b99f97d677e4693ec4081d0bbeb6b1ce9cb09 100644 --- a/src/admin/admin_server_dispatch.c +++ b/src/admin/admin_server_dispatch.c @@ -64,6 +64,28 @@ remoteAdmClientNew(virNetServerClientPtr client ATTRIBUTE_UNUSED, void *opaque) { struct daemonAdmClientPrivate *priv; + uid_t clientuid; + gid_t clientgid; + pid_t clientpid; + unsigned long long timestamp; + + if (virNetServerClientGetUNIXIdentity(client, + &clientuid, + &clientgid, + &clientpid, + ×tamp) < 0) + return NULL; + + VIR_DEBUG("New client pid %lld uid %lld", + (long long)clientpid, + (long long)clientuid); + + if (geteuid() != clientuid) { + virReportRestrictedError(_("Disallowing client %lld with uid %lld"), + (long long)clientpid, + (long long)clientuid); + return NULL; + } if (VIR_ALLOC(priv) < 0) return NULL;