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)