archiver icon indicating copy to clipboard operation
archiver copied to clipboard

Unarchiving read-only folders fails

Open omerzi opened this issue 1 year ago • 1 comments

What version of the package or command are you using?

v3.5.1

What are you trying to do?

Trying to extract a tar.gz file (which I suspect might replicate with other archive formats) that contains a read-only folder along with its files.

What steps did you take?

Create an archive with a write-protected folder:

  1. mkdir -p TestArchive/writeprotectedfolder
  2. touch TestArchive/writeprotectedfolder/file1.txt
  3. touch TestArchive/writeprotectedfolder/file2.txt
  4. chmod -w TestArchive/writeprotectedfolder/
  5. tar -xzf example.tar.gz
  6. Untar using the Unarchive function

What did you expect to happen, and what actually happened instead?

An error returned: reading file in tar archive: /path/TestArchive/writeprotectedfolder/file2.txt: creating new file: open /path/TestArchive/writeprotectedfolder/file2.txt: permission denied

How do you think this should be fixed?

The issue arises when the code creates the writeprotectedfolder with its original read-only permissions (https://github.com/mholt/archiver/blob/v3.5.1/tar.go#L264). Consequently, we encounter an inability to write file1.txt and file2.txt into it. I intended to initiate a pull request to address this, but I am unable to do so as the master branch points to v4, and there isn't a v3 branch available.

Please link to any related issues, pull requests, and/or discussion

I believe that this pull request has caused the issue: https://github.com/mholt/archiver/issues/133.

omerzi avatar Dec 18 '23 10:12 omerzi

I'm not working on v3 anymore. But this is good to know for v4, in case we do add unarchiving capabilities: https://github.com/mholt/archiver/issues/311

Maybe a better solution would be to apply folder permissions after extraction is complete.

mholt avatar Dec 18 '23 19:12 mholt