diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex
index 7a63890..d5f9a34 100644
--- a/Doc/lib/libos.tex
+++ b/Doc/lib/libos.tex
@@ -641,6 +641,13 @@
 Availability: \UNIX.
 \end{funcdesc}
 
+\begin{funcdesc}{lchown}{path, uid, gid}
+Change the owner and group id of \var{path} to the numeric \var{uid}
+and gid. This function will not follow symbolic links.
+Availability: \UNIX.
+\versionadded{2.3}
+\end{funcdesc}
+
 \begin{funcdesc}{link}{src, dst}
 Create a hard link pointing to \var{src} named \var{dst}.
 Availability: \UNIX.
diff --git a/Misc/NEWS b/Misc/NEWS
index f8f3b7f..f7a0bcd 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -162,8 +162,8 @@
   This will create a temporary in-memory bsddb that won't be
   written to disk.
 
-- posix.killpg, posix.mknod, and posix.getpgid have been added where
-  available.
+- posix.lchown, posix.killpg, posix.mknod, and posix.getpgid have been
+  added where available.
 
 - The locale module now exposes the C library's gettext interface.
 
@@ -339,7 +339,7 @@
   to require editing the core to teach the trashcan mechanism about the
   new type.
 
-- Accoring to Annex F of the current C standard,
+- According to Annex F of the current C standard,
 
     The Standard C macro HUGE_VAL and its float and long double analogs,
     HUGE_VALF and HUGE_VALL, expand to expressions whose values are
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 47bea6f..6100067 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -930,6 +930,33 @@
 }
 #endif /* HAVE_CHOWN */
 
+#ifdef HAVE_LCHOWN
+PyDoc_STRVAR(posix_lchown__doc__,
+"lchown(path, uid, gid)\n\n\
+Change the owner and group id of path to the numeric uid and gid.\n\
+This function will not follow symbolic links.");
+
+static PyObject *
+posix_lchown(PyObject *self, PyObject *args)
+{
+	char *path = NULL;
+	int uid, gid;
+	int res;
+	if (!PyArg_ParseTuple(args, "etii:lchown",
+	                      Py_FileSystemDefaultEncoding, &path,
+	                      &uid, &gid))
+		return NULL;
+	Py_BEGIN_ALLOW_THREADS
+	res = lchown(path, (uid_t) uid, (gid_t) gid);
+	Py_END_ALLOW_THREADS
+	if (res < 0)
+		return posix_error_with_allocated_filename(path);
+	PyMem_Free(path);
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+#endif /* HAVE_LCHOWN */
+
 
 #ifdef HAVE_GETCWD
 PyDoc_STRVAR(posix_getcwd__doc__,
@@ -6225,6 +6252,9 @@
 #ifdef HAVE_CHOWN
 	{"chown",	posix_chown, METH_VARARGS, posix_chown__doc__},
 #endif /* HAVE_CHOWN */
+#ifdef HAVE_LCHOWN
+	{"lchown",	posix_lchown, METH_VARARGS, posix_lchown__doc__},
+#endif /* HAVE_LCHOWN */
 #ifdef HAVE_CHROOT
 	{"chroot",	posix_chroot, METH_VARARGS, posix_chroot__doc__},
 #endif
diff --git a/configure b/configure
index 7fc3bfd..9024bcb 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 1.334 .
+# From configure.in Revision: 1.335 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.53.
 #
@@ -11438,11 +11438,12 @@
 
 
 
+
 for ac_func in alarm chown chroot clock confstr ctermid ctermid_r execv \
  fchdir flock fork fsync fdatasync fpathconf ftime ftruncate \
  gai_strerror getgroups getlogin getpeername getpgid getpid getpwent getwd \
- hstrerror inet_pton kill killpg link lstat mkfifo mknod mktime mremap \
- nice pathconf pause plock poll pthread_init \
+ hstrerror inet_pton kill killpg lchown link lstat mkfifo mknod mktime \
+ mremap nice pathconf pause plock poll pthread_init \
  putenv readlink \
  select setegid seteuid setgid setgroups \
  setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \
diff --git a/configure.in b/configure.in
index 98d54d1..88a285f 100644
--- a/configure.in
+++ b/configure.in
@@ -1619,8 +1619,8 @@
 AC_CHECK_FUNCS(alarm chown chroot clock confstr ctermid ctermid_r execv \
  fchdir flock fork fsync fdatasync fpathconf ftime ftruncate \
  gai_strerror getgroups getlogin getpeername getpgid getpid getpwent getwd \
- hstrerror inet_pton kill killpg link lstat mkfifo mknod mktime mremap \
- nice pathconf pause plock poll pthread_init \
+ hstrerror inet_pton kill killpg lchown link lstat mkfifo mknod mktime \
+ mremap nice pathconf pause plock poll pthread_init \
  putenv readlink \
  select setegid seteuid setgid setgroups \
  setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 8a9a1ad..05a355b 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -211,6 +211,9 @@
    Solaris and Linux, the necessary defines are already defined.) */
 #undef HAVE_LARGEFILE_SUPPORT
 
+/* Define to 1 if you have the `lchown' function. */
+#undef HAVE_LCHOWN
+
 /* Define to 1 if you have the `dl' library (-ldl). */
 #undef HAVE_LIBDL
 
