diff --git a/src/borg/platform/linux.pyx b/src/borg/platform/linux.pyx index 5b7e7a119..e3de7d7b7 100644 --- a/src/borg/platform/linux.pyx +++ b/src/borg/platform/linux.pyx @@ -82,7 +82,7 @@ def _acl_from_numeric_to_named_with_id(acl): """Convert numeric-id ACL entries to name entries and append numeric id as 4th field. Input format (Linux libacl): lines like 'user:1000:rwx' or 'group:100:r-x' or 'user::rwx'. - Output format: for entries with a name/id field, become 'user:name:rwx:uid' or 'group:name:r-x:gid'. + Output format: for entries with a name/id field, become 'user:uname:rwx:uid' or 'group:gname:r-x:gid'. """ assert isinstance(acl, bytes) entries = [] @@ -90,25 +90,25 @@ def _acl_from_numeric_to_named_with_id(acl): if not entry: continue fields = entry.split(':') - # Expected 3 fields: type, name_or_empty, perms + # Expected 3 fields: type, ugid_or_empty, perms if len(fields) >= 3: - typ, name, perm = fields[0], fields[1], fields[2] - if name and typ == 'user': + typ, ugid_str, perm = fields[0], fields[1], fields[2] + if ugid_str and typ == 'user': try: - uid = int(name) + uid = int(ugid_str) except ValueError: uid = None - uname = posix_ug._uid2user(uid, name) if uid is not None else name - entries.append(':'.join([typ, uname, perm, str(uid if uid is not None else name)])) - elif name and typ == 'group': + uname = posix_ug._uid2user(uid, ugid_str) if uid is not None else ugid_str + entries.append(':'.join([typ, uname, perm, str(uid if uid is not None else ugid_str)])) + elif ugid_str and typ == 'group': try: - gid = int(name) + gid = int(ugid_str) except ValueError: gid = None - gname = posix_ug._gid2group(gid, name) if gid is not None else name - entries.append(':'.join([typ, gname, perm, str(gid if gid is not None else name)])) + gname = posix_ug._gid2group(gid, ugid_str) if gid is not None else ugid_str + entries.append(':'.join([typ, gname, perm, str(gid if gid is not None else ugid_str)])) else: - # owner, group_obj, mask, other (empty name field) stay as-is + # owner, group_obj, mask, other (empty ugid_str field) stay as-is entries.append(':'.join([typ, '', perm])) else: entries.append(entry) @@ -124,9 +124,9 @@ def _acl_from_numeric_to_numeric_with_id(acl): continue fields = entry.split(':') if len(fields) >= 3: - typ, name, perm = fields[0], fields[1], fields[2] - if name and (typ == 'user' or typ == 'group'): - entries.append(':'.join([typ, name, perm, name])) + typ, ugid, perm = fields[0], fields[1], fields[2] + if ugid and (typ == 'user' or typ == 'group'): + entries.append(':'.join([typ, ugid, perm, ugid])) else: entries.append(':'.join([typ, '', perm])) else: