sep examples python operating-system chown

examples - os.system() python



¿Cómo cambiar los permisos de usuario y grupo para un directorio, por nombre? (4)

Como la versión de shutil admite que group sea opcional, copio y pegué el código en mi proyecto de Python2.

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)

os.chown es exactamente lo que quiero, pero quiero especificar el usuario y el grupo por nombre, no por ID (no sé qué son). ¿Cómo puedo hacer eso?


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

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

Cambiar usuario propietario y / o grupo de la ruta dada.

el usuario puede ser un nombre de usuario del sistema o un uid; lo mismo se aplica al grupo.

Al menos se requiere un argumento

Disponibilidad: Unix.


Puede usar id -u wong2 para obtener el usuario de un usuario
Puedes hacer esto con Python:

import os def getUidByUname(uname): return os.popen("id -u %s" % uname).read().strip()

A continuación, use la identificación para os.chown


import pwd import grp import os uid = pwd.getpwnam("nobody").pw_uid gid = grp.getgrnam("nogroup").gr_gid path = ''/tmp/f.txt'' os.chown(path, uid, gid)