diff options
-rw-r--r-- | rdiff-backup/CHANGELOG | 4 | ||||
-rw-r--r-- | rdiff-backup/rdiff_backup/backup.py | 9 |
2 files changed, 13 insertions, 0 deletions
diff --git a/rdiff-backup/CHANGELOG b/rdiff-backup/CHANGELOG index 8df3b18..baf131b 100644 --- a/rdiff-backup/CHANGELOG +++ b/rdiff-backup/CHANGELOG @@ -1,6 +1,10 @@ New in v1.1.16 (????/??/??) --------------------------- +Correctly handle updates to nested directories with unreadable permissions. +Thanks to John Goerzen for the bug report. Closes Debian bugs #389134 and +#411849. (Andrew Ferguson) + Manpage improvements from Justin Pryzby. Improve the handling of directories with many small files when backing-up diff --git a/rdiff-backup/rdiff_backup/backup.py b/rdiff-backup/rdiff_backup/backup.py index 0cdad16..eab6c75 100644 --- a/rdiff-backup/rdiff_backup/backup.py +++ b/rdiff-backup/rdiff_backup/backup.py @@ -651,6 +651,15 @@ class PatchITRB(rorpiter.ITRBranch): """Finish processing directory""" if self.dir_update: assert self.base_rp.isdir() + + if (Globals.process_uid != 0 and + self.dir_update.getperms() % 01000 < 0700): + # Directory's permissions were adjusted at the start to + # make it readable -- remove it from the list since they + # will be reset by the copy_attribs() call + self.CCPP.dir_perms_list.remove((self.base_rp, + self.dir_update.getperms())) + rpath.copy_attribs(self.dir_update, self.base_rp) elif self.dir_replacement: self.base_rp.rmdir() |