You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When the tar utility runs with --strip-components and -p (or as root), no existing directories have their permissions changed. However, when node-tar does the equivalent, the existing filesystem can be mutated.
How
Steps to Reproduce
In an empty directory, run
mkdir dir
sudo chown 501 dir
tar -czf tarball.tgz dir
sudo node - <<JSconst tar = require('tar')tar.x({file: 'tarball.tgz',strip:1})JS
ls -an
Expected Behavior
When I run
mkdir dir
sudo chown 501 dir
tar -czf tarball.tgz dir
sudo tar --strip-components=1 -xzf tarball.tgz
ls -an
What / Why
When the
tar
utility runs with--strip-components
and-p
(or as root), no existing directories have their permissions changed. However, when node-tar does the equivalent, the existing filesystem can be mutated.How
Steps to Reproduce
In an empty directory, run
Expected Behavior
When I run
which should be roughly equivalent, the output is
total 8 drwxr-xr-x 4 502 20 128 17 Sep 18:08 . drwxr-xr-x 46 502 20 1472 17 Sep 18:08 .. drwxr-xr-x 2 501 20 64 17 Sep 18:08 dir -rw-r--r-- 1 502 20 110 17 Sep 18:08 tarball.tgz
Actual Behavior
When I run the above script using node-tar, the output is
total 8 drwxr-xr-x 4 501 20 128 17 Sep 18:09 . drwxr-xr-x 46 502 20 1472 17 Sep 18:09 .. drwxr-xr-x 2 501 20 64 17 Sep 18:09 dir -rw-r--r-- 1 502 20 110 17 Sep 18:09 tarball.tgz
The results are almost identical, except in the node-tar case the current directory has changed ownership from UID 502 to UID 501.
References
I encountered this while investigating a problem with running backstage's tests.
The text was updated successfully, but these errors were encountered: