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
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;
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.