Bug 205180

Summary: bsdtar does not restore group with -p
Product: Base System Reporter: Andre Albsmeier <mail>
Component: binAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Some People CC: ali
Priority: --- Keywords: patch
Version: 9.3-STABLE   
Hardware: Any   
OS: Any   

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