mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
pkg/archive: strip "write" bits again on Windows
1. Commit1a22418f9f
changed permissions to `0700` on Windows, or more factually, it removed `rw` (`chmod g-rw,o-rw`) and added executable bits (`chmod u+x`). 2. This was too restrictive, andb7dc9040f0
changed permissions to only remove the group- and world-writable bits to give read and execute access to everyone, but setting execute permissions for everyone. 3. However, this also removed the non-permission bits, so41eb61d5c2
updated the code to preserve those, and keep parity with Linux. This changes it back to `2.`. I wonder (_think_) _permission_ bits (read, write) can be portable, except for the _executable_ bit (which is not present on Windows). The alternative could be to keep the permission bits, and only set the executable bit (`perm | 0111`) for everyone (equivalent of `chmod +x`), but that likely would be a breaking change. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
cddaa84777
commit
609d87003a
2 changed files with 5 additions and 2 deletions
|
@ -31,8 +31,11 @@ func CanonicalTarNameForPath(p string) string {
|
|||
// chmodTarEntry is used to adjust the file permissions used in tar header based
|
||||
// on the platform the archival is done.
|
||||
func chmodTarEntry(perm os.FileMode) os.FileMode {
|
||||
// Remove group- and world-writable bits.
|
||||
perm &= 0o755
|
||||
|
||||
// Add the x bit: make everything +x on Windows
|
||||
return perm | 0111
|
||||
return perm | 0o111
|
||||
}
|
||||
|
||||
func setHeaderForSpecialDevice(hdr *tar.Header, name string, stat interface{}) (err error) {
|
||||
|
|
|
@ -71,7 +71,7 @@ func TestChmodTarEntry(t *testing.T) {
|
|||
in, expected os.FileMode
|
||||
}{
|
||||
{0000, 0111},
|
||||
{0777, 0777},
|
||||
{0777, 0755},
|
||||
{0644, 0755},
|
||||
{0755, 0755},
|
||||
{0444, 0555},
|
||||
|
|
Loading…
Add table
Reference in a new issue