diff --git a/src/borg/platform/linux.pyx b/src/borg/platform/linux.pyx index 943f020f..dfbf925b 100644 --- a/src/borg/platform/linux.pyx +++ b/src/borg/platform/linux.pyx @@ -233,16 +233,22 @@ def acl_get(path, item, st, numeric_ids=False, fd=None): cdef acl_t access_acl = NULL cdef char *default_text = NULL cdef char *access_text = NULL + cdef int ret = 0 if stat.S_ISLNK(st.st_mode): # symlinks can not have ACLs return if isinstance(path, str): path = os.fsencode(path) - if (fd is not None and acl_extended_fd(fd) <= 0 - or - fd is None and acl_extended_file(path) <= 0): + if fd is not None: + ret = acl_extended_fd(fd) + else: + ret = acl_extended_file(path) + if ret == 0: + # there is no ACL defining permissions other than those defined by the traditional file permission bits. return + if ret < 0: + raise OSError(errno.errno, os.strerror(errno.errno), os.fsdecode(path)) if numeric_ids: converter = acl_numeric_ids else: