By default tar strips leading '/'s from file names. However if we have a symlink inside an archive with link which starts with '/' then this slash will be removed. [1] This will result as error "Cannot open:Permission denied" [2] when tar tries to create the symlink with the invalid target path. Steps to reproduce: $ mkdir /tmp/foo $ cd /tmp/foo $ touch file $ ln -s /tmp/foo/file link $ tar -cf archive.tar link $ mkdir /tmp/foo/dest $ virt-sandbox -c qemu:///session \ -m host-bind:/mnt=/tmp/foo/dest \ -- /bin/tar xf /tmp/foo/archive.tar -C /mnt Error message: tar: link: Cannot open: Permission denied tar: Exiting with failure status due to previous errors Append the flag "--absolute-names" to disable strip leading '/'s. --- src/virtBootstrap/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/virtBootstrap/utils.py b/src/virtBootstrap/utils.py index 63ef57a..2fe23d9 100644 --- a/src/virtBootstrap/utils.py +++ b/src/virtBootstrap/utils.py @@ -106,7 +106,8 @@ def safe_untar(src, dest): # Compression type is auto detected from tar # Exclude files under /dev to avoid "Cannot mknod: Operation not permitted" - params = ['--', '/bin/tar', 'xf', src, '-C', '/mnt', '--exclude', 'dev/*'] + params = ['--', '/bin/tar', 'xf', src, '-C', '/mnt', '--exclude', 'dev/*', + '--absolute-names'] execute(virt_sandbox + params) -- 2.13.3 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list