import tarfile import os import shutil tdir = '/tmp/sample' rodir = tdir + '/rodir' os.makedirs(rodir) with open(rodir + '/file', 'w') as f: f.write('') # just a dummy file os.chmod(rodir, 0o555) # noone would ruin our precious! os.chmod(rodir + '/file', 0o444) os.chdir('/tmp') with tarfile.open("/tmp/sample.tar", "w") as tar: tar.add('sample/rodir') # adding this r/o directory ruins life of extractall tar.add('sample/rodir/file') # tarfile now would fail to extract os.chdir('/tmp/sample') tarfile.open("../sample.tar").extractall()