--- agent/snmpd.c_orig	2007-04-21 22:34:46.000000000 +0200
+++ agent/snmpd.c	2007-04-22 00:29:00.000000000 +0200
@@ -974,6 +974,16 @@
 #ifdef HAVE_SETUID
     if ((uid = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
 				  NETSNMP_DS_AGENT_USERID)) != 0) {
+        struct passwd *info = getpwuid(uid);
+        DEBUGMSGTL(("snmpd/main", "Using groups from initgroups(3) for user %s.\n", info->pw_name));
+        if (initgroups(info->pw_name, 0) == -1) {
+            snmp_log_perror("initgroups failed");
+            if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                    NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
+                exit(1);
+            }
+        }
+
         DEBUGMSGTL(("snmpd/main", "Changing uid to %d.\n", uid));
         if (setuid(uid) == -1) {
             snmp_log_perror("setuid failed");

