diff --git a/src/admin/admin_server_dispatch.c b/src/admin/admin_server_dispatch.c index b78ff902c0..9f25813ae3 100644 --- a/src/admin/admin_server_dispatch.c +++ b/src/admin/admin_server_dispatch.c @@ -66,6 +66,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;