mirror of
https://github.com/borgbackup/borg.git
synced 2025-03-19 10:25:49 +00:00
chmod should be called before chown to avoid SUID and SGRP reset.
This commit is contained in:
parent
1dc1411302
commit
b994203c01
2 changed files with 5 additions and 5 deletions
|
@ -285,10 +285,6 @@ class Archive(object):
|
|||
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 @@ class Archive(object):
|
|||
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']))
|
||||
|
|
|
@ -104,7 +104,7 @@ class Test(unittest.TestCase):
|
|||
# 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))
|
||||
|
|
Loading…
Add table
Reference in a new issue