How to change the user and group permissions for a directory, by name? How to change the user and group permissions for a directory, by name? python python

How to change the user and group permissions for a directory, by name?


import pwdimport grpimport osuid = pwd.getpwnam("nobody").pw_uidgid = grp.getgrnam("nogroup").gr_gidpath = '/tmp/f.txt'os.chown(path, uid, gid)


Since Python 3.3https://docs.python.org/3.3/library/shutil.html#shutil.chown

import shutilshutil.chown(path, user=None, group=None)

Change owner user and/or group of the given path.

user can be a system user name or a uid; the same applies to group.

At least one argument is required.

Availability: Unix.


Since the shutil version supports group being optional, I copy and pasted the code to my Python2 project.

https://hg.python.org/cpython/file/tip/Lib/shutil.py#l1010

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, basestring):        _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)