#12191: add shutil.chown() to change user and/or group owner of a given path also specifying their names.
diff --git a/Lib/shutil.py b/Lib/shutil.py
index 2955b04..4b75262 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -790,3 +790,34 @@
         total, free = nt._getdiskusage(path)
         used = total - free
         return _ntuple_diskusage(total, used, free)
+
+def chown(path, user=None, group=None):
+    """Change owner user and group of the given path.
+
+    user and group can be the uid/gid or the user/group names, and in that case,
+    they are converted to their respective uid/gid.
+    """
+
+    if user is None and group is None:
+        raise ValueError("user and/or group must be set")
+
+    _user = user
+    _group = group
+
+    # -1 means don't change it
+    if user is None:
+        _user = -1
+    # user can either be an int (the uid) or a string (the system username)
+    elif isinstance(user, str):
+        _user = _get_uid(user)
+        if _user is None:
+            raise LookupError("no such user: {!r}".format(user))
+
+    if group is None:
+        _group = -1
+    elif not isinstance(group, int):
+        _group = _get_gid(group)
+        if _group is None:
+            raise LookupError("no such group: {!r}".format(group))
+
+    os.chown(path, _user, _group)