我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用os.lchown()。
def chown(self, tarinfo, targetpath): """Set owner of targetpath according to tarinfo. """ if pwd and hasattr(os, "geteuid") and os.geteuid() == 0: # We have to be root to do so. try: g = grp.getgrnam(tarinfo.gname)[2] except KeyError: g = tarinfo.gid try: u = pwd.getpwnam(tarinfo.uname)[2] except KeyError: u = tarinfo.uid try: if tarinfo.issym() and hasattr(os, "lchown"): os.lchown(targetpath, u, g) else: if sys.platform != "os2emx": os.chown(targetpath, u, g) except EnvironmentError as e: raise ExtractError("could not change owner")
def chown(self, tarinfo, targetpath): """Set owner of targetpath according to tarinfo. """ if pwd and hasattr(os, "geteuid") and os.geteuid() == 0: # We have to be root to do so. try: g = grp.getgrnam(tarinfo.gname)[2] except KeyError: g = tarinfo.gid try: u = pwd.getpwnam(tarinfo.uname)[2] except KeyError: u = tarinfo.uid try: if tarinfo.issym() and hasattr(os, "lchown"): os.lchown(targetpath, u, g) else: if sys.platform != "os2emx": os.chown(targetpath, u, g) except EnvironmentError, e: raise ExtractError("could not change owner")
def chown(self, cpioinfo, cpiogetpath): """Set owner of cpiogetpath according to cpioinfo. """ if PWD and hasattr(os, "geteuid") and os.geteuid() == 0: # We have to be root to do so. try: g = GRP.getgrgid(cpioinfo.gid)[2] except KeyError: g = os.getgid() try: u = PWD.getpwuid(cpioinfo.uid)[2] except KeyError: u = os.getuid() try: if cpioinfo.issym() and hasattr(os, "lchown"): os.lchown(cpiogetpath, u, g) else: if sys.platform != "os2emx": os.chown(cpiogetpath, u, g) except EnvironmentError: raise ExtractError("could not change owner")
def map_id(path, map_uid, map_gid): """ Remapping ownership of all files inside a container's rootfs. map_gid and map_uid: Contain integers in a list with format: [<start>, <target>, <count>] """ if map_uid: uid_opts = get_mapping_opts(map_uid) if map_gid: gid_opts = get_mapping_opts(map_gid) for root, _ignore, files in os.walk(os.path.realpath(path)): for name in [root] + files: file_path = os.path.join(root, name) stat_info = os.lstat(file_path) old_uid = stat_info.st_uid old_gid = stat_info.st_gid new_uid = get_map_id(old_uid, uid_opts) if map_uid else -1 new_gid = get_map_id(old_gid, gid_opts) if map_gid else -1 os.lchown(file_path, new_uid, new_gid)
def apply_mapping_in_image(uid, gid, rootfs_tree, g): """ Apply mapping of new ownership """ if uid: uid_opts = get_mapping_opts(uid) if gid: gid_opts = get_mapping_opts(gid) for member in rootfs_tree: old_uid = rootfs_tree[member]['uid'] old_gid = rootfs_tree[member]['gid'] new_uid = get_map_id(old_uid, uid_opts) if uid else -1 new_gid = get_map_id(old_gid, gid_opts) if gid else -1 if new_uid != -1 or new_gid != -1: g.lchown(new_uid, new_gid, os.path.join('/', member))
def _test_all_chown_common(self, chown_func, first_param): """Common code for chown, fchown and lchown tests.""" if os.getuid() == 0: try: # Many linux distros have a nfsnobody user as MAX_UID-2 # that makes a good test case for signedness issues. # http://bugs.python.org/issue1747858 # This part of the test only runs when run as root. # Only scary people run their tests as root. ent = pwd.getpwnam('nfsnobody') chown_func(first_param, ent.pw_uid, ent.pw_gid) except KeyError: pass else: # non-root cannot chown to root, raises OSError self.assertRaises(OSError, chown_func, first_param, 0, 0) # test a successful chown call chown_func(first_param, os.getuid(), os.getgid())
def chown(self, tarinfo, targetpath, numeric_owner): """Set owner of targetpath according to tarinfo. If numeric_owner is True, use .gid/.uid instead of .gname/.uname. """ if pwd and hasattr(os, "geteuid") and os.geteuid() == 0: # We have to be root to do so. if numeric_owner: g = tarinfo.gid u = tarinfo.uid else: try: g = grp.getgrnam(tarinfo.gname)[2] except KeyError: g = tarinfo.gid try: u = pwd.getpwnam(tarinfo.uname)[2] except KeyError: u = tarinfo.uid try: if tarinfo.issym() and hasattr(os, "lchown"): os.lchown(targetpath, u, g) else: os.chown(targetpath, u, g) except OSError: raise ExtractError("could not change owner")
def chown(self, tarinfo, targetpath, numeric_owner): """Set owner of targetpath according to tarinfo. If numeric_owner is True, use .gid/.uid instead of .gname/.uname. """ if pwd and hasattr(os, "geteuid") and os.geteuid() == 0: # We have to be root to do so. if numeric_owner: g = tarinfo.gid u = tarinfo.uid else: try: g = grp.getgrnam(tarinfo.gname)[2] except KeyError: g = tarinfo.gid try: u = pwd.getpwnam(tarinfo.uname)[2] except KeyError: u = tarinfo.uid try: if tarinfo.issym() and hasattr(os, "lchown"): os.lchown(targetpath, u, g) else: os.chown(targetpath, u, g) except OSError as e: raise ExtractError("could not change owner")