mholt / archiver

DEPRECATED. Please use mholt/archives instead.
https://github.com/mholt/archives
MIT License
4.45k stars 392 forks source link

Unarchiving read-only folders fails #391

Open omerzi opened 11 months ago

omerzi commented 11 months ago

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.

mholt commented 11 months ago

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.