Bug 205180 - bsdtar does not restore group with -p
Summary: bsdtar does not restore group with -p
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: bin (show other bugs)
Version: 9.3-STABLE
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-bugs (Nobody)
URL:
Keywords: patch
Depends on:
Blocks:
 
Reported: 2015-12-10 09:16 UTC by Andre Albsmeier
Modified: 2019-05-22 16:10 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andre Albsmeier 2015-12-10 09:16:54 UTC
man bsdtar says:

     -p, --insecure, --preserve-permissions
             (x mode only) Preserve file permissions.  Attempt to restore the
             full permissions, including owner, file modes, file flags and
             ACLs, if available, for each item extracted from the archive.
             This is the default, if tar is being run by root and can be over-
             riden by also specifying --no-same-owner and
             --no-same-permissions.

This description of -p makes one think that it does for
ordinary user the same as for root. But if I (as ordinary--same-owner
user) extract an archive with -xpf groups won't get restored.
They get restored with --same-owner.

IMHO -p should actually include --same-owner, the fix would be

--- bsdtar.c.ORI        2012-09-24 18:09:20.000000000 +0200
+++ bsdtar.c    2015-12-10 10:14:27.085470000 +0100
@@ -438,6 +438,7 @@
                        bsdtar->option_absolute_paths = 1;
                        break;
                case 'p': /* GNU tar, star */
+                       bsdtar->extract_flags |= ARCHIVE_EXTRACT_OWNER;
                        bsdtar->extract_flags |= ARCHIVE_EXTRACT_PERM;
                        bsdtar->extract_flags |= ARCHIVE_EXTRACT_ACL;
                        bsdtar->extract_flags |= ARCHIVE_EXTRACT_XATTR;

If not, the manpage should be corrected.
Comment 1 ali@mashtizadeh.com 2019-05-22 16:10:08 UTC
https://github.com/libarchive/libarchive/pull/1204