diff --git a/image_creator/bundle_volume.py b/image_creator/bundle_volume.py index a5cc9d79f84f9d1bf84934621462492565f27394..a6fc27a90d21dc329658cf7fb212212b66bd9f0f 100644 --- a/image_creator/bundle_volume.py +++ b/image_creator/bundle_volume.py @@ -401,9 +401,21 @@ class BundleVolume(object): for excl in excluded: dirname = os.path.dirname(excl) stat = os.stat(dirname) - os.mkdir(target + excl, stat.st_mode) + os.mkdir(target + excl) + os.chmod(target + excl, stat.st_mode) os.chown(target + excl, stat.st_uid, stat.st_gid) + # /tmp and /var/tmp are special cases. We exclude then even if + # they aren't mountpoints. Restore their permissions. + for excl in ('/tmp', '/var/tmp'): + if self._is_mpoint(excl): + os.chmod(target + excl, 041777) + os.chown(target + excl, 0, 0) + else: + stat = os.stat(excl) + os.chmod(target + excl, stat.st_mode) + os.chown(target + excl, stat.st_uid, stat.st_gid) + # We need to replace the old UUID referencies with the new # ones in grub configuration files and /etc/fstab for file # systems that have been recreated.