1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-02-15 10:56:30 +00:00

chmod should be called before chown to avoid SUID and SGRP reset.

This commit is contained in:
Jonas Borgström 2013-05-18 23:03:16 +02:00
parent 1dc1411302
commit b994203c01
2 changed files with 5 additions and 5 deletions

View file

@ -285,10 +285,6 @@ def restore_attrs(self, path, item, symlink=False):
xa.set(k, v)
except (IOError, KeyError):
pass
if have_lchmod:
os.lchmod(path, item['mode'])
elif not symlink:
os.chmod(path, item['mode'])
uid = gid = None
if not self.numeric_owner:
uid = user2uid(item['user'])
@ -299,6 +295,10 @@ def restore_attrs(self, path, item, symlink=False):
os.lchown(path, uid, gid)
except OSError:
pass
if have_lchmod:
os.lchmod(path, item['mode'])
elif not symlink:
os.chmod(path, item['mode'])
if not symlink:
# FIXME: We should really call futimes here (c extension required)
os.utime(path, (item['mtime'], item['mtime']))

View file

@ -104,7 +104,7 @@ def test_basic_functionality(self):
# File owner
os.chown('input/file1', 100, 200)
# File mode
os.chmod('input/file1', 0600)
os.chmod('input/file1', 7755)
os.chmod('input/dir2', 0700)
# Block device
os.mknod('input/bdev', 0600 | stat.S_IFBLK, os.makedev(10, 20))