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~