Package: rdiff-backup
Version: 1.1.14-1
Severity: normal
Tags: patch
In AFS, non-privileged users can change the high-bit permissions on
files, but not on directories. The enclosed patch makes the
high_perms test try to set bits on both files and directories. The
new test should succeed in less weird filesystems, but fail in afs.
(When a privileged users tries to set high-bit permissions on a
directory, chmod returns 0 but the bits aren't set, which means a
privileged user might fail more subtly and silently. I haven't tested
this case, but this patch won't make the situation any worse.)
-- System Information:
Debian Release: 3.1
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable')
Architecture: sparc (sparc64)
Kernel: Linux 2.6.14-2-sparc64
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
Versions of packages rdiff-backup depends on:
ii libc6 2.6.1-1 GNU C Library: Shared libraries
ii librsync1 0.9.7-1 Library which implements the rsync
ii python 2.4.4-6 An interactive high-level object-o
ii python-support 0.7.4 automated rebuilding support for p
Versions of packages rdiff-backup recommends:
pn python-pylibacl <none> (no description available)
pn python-pyxattr <none> (no description available)
-- no debconf information
*** /tmp/diff
diff -wru rdiff_backup.orig/fs_abilities.py rdiff_backup/fs_abilities.py
--- rdiff_backup.orig/fs_abilities.py 2007-08-13 16:39:22.000000000 +0000
+++ rdiff_backup/fs_abilities.py 2007-11-05 06:31:34.000000000 +0000
@@ -411,14 +411,19 @@
def set_high_perms_readwrite(self, dir_rp):
"""Test for writing high-bit permissions like suid"""
- tmp_rp = dir_rp.append("high_perms")
- tmp_rp.touch()
+ tmpf_rp = dir_rp.append("high_perms_file")
+ tmpf_rp.touch()
+ tmpd_rp = dir_rp.append("high_perms_dir")
+ tmpd_rp.mkdir()
try:
- tmp_rp.chmod(07000)
- tmp_rp.chmod(07777)
+ tmpf_rp.chmod(07000)
+ tmpf_rp.chmod(07777)
+ tmpd_rp.chmod(07000)
+ tmpd_rp.chmod(07777)
except (OSError, IOError): self.high_perms = 0
else: self.high_perms = 1
- tmp_rp.delete()
+ tmpf_rp.delete()
+ tmpd_rp.rmdir()
def set_symlink_perms(self, dir_rp):
"""Test if symlink permissions are affected by umask"""
diff -wru rdiff_backup.orig/fs_abilities.py rdiff_backup/fs_abilities.py
--- rdiff_backup.orig/fs_abilities.py 2007-08-13 16:39:22.000000000 +0000
+++ rdiff_backup/fs_abilities.py 2007-11-05 06:31:34.000000000 +0000
@@ -411,14 +411,19 @@
def set_high_perms_readwrite(self, dir_rp):
"""Test for writing high-bit permissions like suid"""
- tmp_rp = dir_rp.append("high_perms")
- tmp_rp.touch()
+ tmpf_rp = dir_rp.append("high_perms_file")
+ tmpf_rp.touch()
+ tmpd_rp = dir_rp.append("high_perms_dir")
+ tmpd_rp.mkdir()
try:
- tmp_rp.chmod(07000)
- tmp_rp.chmod(07777)
+ tmpf_rp.chmod(07000)
+ tmpf_rp.chmod(07777)
+ tmpd_rp.chmod(07000)
+ tmpd_rp.chmod(07777)
except (OSError, IOError): self.high_perms = 0
else: self.high_perms = 1
- tmp_rp.delete()
+ tmpf_rp.delete()
+ tmpd_rp.rmdir()
def set_symlink_perms(self, dir_rp):
"""Test if symlink permissions are affected by umask"""
Only in rdiff_backup: fs_abilities.py~