summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordgaudet <dgaudet@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2006-11-05 01:19:37 +0000
committerdgaudet <dgaudet@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2006-11-05 01:19:37 +0000
commit45ac0f7e02ee7a05ba09bab60a781a7fdc22ec96 (patch)
tree9497fb6e2ccc9bcadd9f4657f8ab1d11df74162f
parent599cbc7c411f446541eec15fd6729af5115506ba (diff)
downloadrdiff-backup-45ac0f7e02ee7a05ba09bab60a781a7fdc22ec96.tar.gz
Set symlink permissions properly. (Patch from Andrew Ferguson.)
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/branches/r1-0@758 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
-rw-r--r--rdiff-backup/CHANGELOG2
-rw-r--r--rdiff-backup/rdiff_backup/rpath.py7
2 files changed, 8 insertions, 1 deletions
diff --git a/rdiff-backup/CHANGELOG b/rdiff-backup/CHANGELOG
index e7af956..3746d0d 100644
--- a/rdiff-backup/CHANGELOG
+++ b/rdiff-backup/CHANGELOG
@@ -1,6 +1,8 @@
New in v1.0.5 (????/??/??)
--------------------------
+Set symlink permissions properly. (Patch from Andrew Ferguson.)
+
Fix a traceback due to an off-by-1 error in "--remove-older-than nB".
Fix a security violation when restoring from a remote repository.
diff --git a/rdiff-backup/rdiff_backup/rpath.py b/rdiff-backup/rdiff_backup/rpath.py
index ac24a31..6727f9a 100644
--- a/rdiff-backup/rdiff_backup/rpath.py
+++ b/rdiff-backup/rdiff_backup/rpath.py
@@ -95,7 +95,12 @@ def copy(rpin, rpout, compress = 0):
if rpin.isreg(): copy_reg_file(rpin, rpout, compress)
elif rpin.isdir(): rpout.mkdir()
- elif rpin.issym(): rpout.symlink(rpin.readlink())
+ elif rpin.issym():
+ # some systems support permissions for symlinks, but
+ # only by setting at creation via the umask
+ os.umask(0777 - rpin.getperms())
+ rpout.symlink(rpin.readlink())
+ os.umask(077) # restore rdiff-backup standard umask
elif rpin.ischardev():
major, minor = rpin.getdevnums()
rpout.makedev("c", major, minor)