diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex
index 8adcbd5..70552c4 100644
--- a/Doc/lib/libos.tex
+++ b/Doc/lib/libos.tex
@@ -204,6 +204,13 @@
 Availability: \UNIX{}.
 \end{funcdesc}
 
+\begin{funcdesc}{setgroups}{groups}
+Set list of supplemental group ids associated with the current
+process to \var{groups}.
+Availability: \UNIX{}.
+\versionadded{2.2}
+\end{funcdesc}
+
 \begin{funcdesc}{setpgrp}{}
 Calls the system call \cfunction{setpgrp()} or \cfunction{setpgrp(0,
 0)} depending on which version is implemented (if any).  See the
diff --git a/Misc/NEWS b/Misc/NEWS
index 74327c4..e2e9683 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -44,7 +44,7 @@
 
 - readline now supports setting the startup_hook and the pre_event_hook.
 
-- posix supports chroot where available.
+- posix supports chroot and setgroups where available.
 
 - Decompression objects in the zlib module now accept an optional
   second parameter to decompress() that specifies the maximum amount
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index c21f7f8..b26c89e 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -3127,6 +3127,51 @@
 }
 #endif /* HAVE_SETGID */
 
+#ifdef HAVE_SETGROUPS
+static char posix_setgroups__doc__[] =
+"setgroups(list) -> None\n\
+Set the groups of the current process to list.";
+
+static PyObject *
+posix_setgroups(PyObject *self, PyObject *args)
+{
+	PyObject *groups;
+	int i, len;
+        gid_t grouplist[MAX_GROUPS];
+	
+	if (!PyArg_ParseTuple(args, "O:setgid", &groups))
+		return NULL;
+	if (!PySequence_Check(groups)) {
+		PyErr_SetString(PyExc_TypeError, "setgroups argument must be a sequence");
+		return NULL;
+	}
+	len = PySequence_Size(groups);
+	if (len > MAX_GROUPS) {
+		PyErr_SetString(PyExc_ValueError, "too many groups");
+		return NULL;
+	}
+	for(i = 0; i < len; i++) {
+		PyObject *elem;
+		elem = PySequence_GetItem(groups, i);
+		if (!elem)
+			return NULL;
+		if (!PyInt_Check(elem)) {
+			PyErr_SetString(PyExc_TypeError,
+					"groups must be integers");
+			Py_DECREF(elem);
+			return NULL;
+		}
+		/* XXX: check that value fits into gid_t. */
+		grouplist[i] = PyInt_AsLong(elem);
+		Py_DECREF(elem);
+	}
+
+	if (setgroups(len, grouplist) < 0)
+		return posix_error();
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+#endif /* HAVE_SETGROUPS */
 
 #ifdef HAVE_WAITPID
 static char posix_waitpid__doc__[] =
@@ -5467,6 +5512,9 @@
 #ifdef HAVE_SETGID
 	{"setgid",	posix_setgid, METH_VARARGS, posix_setgid__doc__},
 #endif /* HAVE_SETGID */
+#ifdef HAVE_SETGROUPS
+	{"setgroups",	posix_setgroups, METH_VARARGS, posix_setgroups__doc__},
+#endif /* HAVE_SETGROUPS */
 #ifdef HAVE_SETPGRP
 	{"setpgrp",	posix_setpgrp, METH_VARARGS, posix_setpgrp__doc__},
 #endif /* HAVE_SETPGRP */
diff --git a/configure b/configure
index 260ea3f..be57265 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# From configure.in Revision: 1.268 
+# From configure.in Revision: 1.269 
 
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.13 
@@ -4804,7 +4804,7 @@
  hstrerror inet_pton kill link lstat mkfifo mktime mremap \
  nice pathconf pause plock poll pthread_init \
  putenv readlink \
- select setegid seteuid setgid \
+ select setegid seteuid setgid setgroups \
  setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \
  sigaction siginterrupt sigrelse strftime strptime symlink sysconf \
  tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
diff --git a/configure.in b/configure.in
index 108d239..1c2f459 100644
--- a/configure.in
+++ b/configure.in
@@ -1391,7 +1391,7 @@
  hstrerror inet_pton kill link lstat mkfifo mktime mremap \
  nice pathconf pause plock poll pthread_init \
  putenv readlink \
- select setegid seteuid setgid \
+ select setegid seteuid setgid setgroups \
  setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \
  sigaction siginterrupt sigrelse strftime strptime symlink sysconf \
  tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 7057895..8967cc6 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -498,6 +498,9 @@
 /* Define if you have the setgid function.  */
 #undef HAVE_SETGID
 
+/* Define if you have the setgroups function.  */
+#undef HAVE_SETGROUPS
+
 /* Define if you have the setlocale function.  */
 #undef HAVE_SETLOCALE
 
