<xi:include href="version-info.xml" xpointer="v258"/></listitem>
</varlistentry>
+ <varlistentry>
+ <term><option>--seize=</option></term>
+
+ <listitem><para>Takes a boolean argument. When used with <command>create</command> or
+ <command>register</command>, controls whether to strip cryptographic signatures from the provided
+ JSON user records, which has the effect of signing them with the local signing key
+ (<filename>local.public</filename>) instead. If this switch is set to true, added user records
+ hence become locally managed (and thus can be modified locally), while if it is set to false the user
+ records remain managed and owned by its origin (and thus cannot be modified locally). This switch
+ defaults to true for <command>create</command> and false for <command>register</command>.</para>
+
+ <xi:include href="version-info.xml" xpointer="v258"/></listitem>
+ </varlistentry>
+
<xi:include href="user-system-options.xml" xpointer="host" />
<xi:include href="user-system-options.xml" xpointer="machine" />
static Hashmap *arg_blob_files = NULL;
static char *arg_key_name = NULL;
static bool arg_dry_run = false;
+static bool arg_seize = true;
STATIC_DESTRUCTOR_REGISTER(arg_identity_extra, sd_json_variant_unrefp);
STATIC_DESTRUCTOR_REGISTER(arg_identity_extra_this_machine, sd_json_variant_unrefp);
USER_RECORD_ALLOW_PER_MACHINE|
USER_RECORD_STRIP_BINDING|
USER_RECORD_STRIP_STATUS|
- USER_RECORD_STRIP_SIGNATURE|
+ (arg_seize ? USER_RECORD_STRIP_SIGNATURE : USER_RECORD_ALLOW_SIGNATURE) |
USER_RECORD_LOG|
USER_RECORD_PERMISSIVE);
if (r < 0)
" --prompt-new-user firstboot: Query user interactively for user\n"
" to create\n"
" --key-name=NAME Key name when adding a signing key\n"
+ " --seize=no Do not strip existing signatures of user record\n"
+ " when creating\n"
"\n%4$sGeneral User Record Properties:%5$s\n"
" -c --real-name=REALNAME Real name for user\n"
" --realm=REALM Realm to create user in\n"
ARG_DEV_SHM_LIMIT,
ARG_DEFAULT_AREA,
ARG_KEY_NAME,
+ ARG_SEIZE,
};
static const struct option options[] = {
{ "dev-shm-limit", required_argument, NULL, ARG_DEV_SHM_LIMIT },
{ "default-area", required_argument, NULL, ARG_DEFAULT_AREA },
{ "key-name", required_argument, NULL, ARG_KEY_NAME },
+ { "seize", required_argument, NULL, ARG_SEIZE },
{}
};
break;
+ case ARG_SEIZE:
+ r = parse_boolean_argument("--seize=", optarg, &arg_seize);
+ if (r < 0)
+ return r;
+ break;
+
case '?':
return -EINVAL;