run0: Make --same-root-dir available for run0

This enables running something like
"mkosi box -- run0 --empower --same-root-dir -E PATH" to get an
empowered session as the current user within the "mkosi box" environment.
This commit is contained in:
Daan De Meyer
2025-11-14 09:10:18 +01:00
parent 98ae19d9fe
commit 475729b805
2 changed files with 18 additions and 0 deletions

View File

@@ -302,6 +302,15 @@
<xi:include href="version-info.xml" xpointer="v259"/></listitem>
</varlistentry>
<varlistentry>
<term><option>--same-root-dir</option></term>
<listitem><para>Execute the <command>run0</command> session in the same root directory that the
<command>run0</command> command is executed in.</para>
<xi:include href="version-info.xml" xpointer="v259"/></listitem>
</varlistentry>
<varlistentry>
<term><option>--machine=</option></term>

View File

@@ -899,6 +899,7 @@ static int parse_argv_sudo_mode(int argc, char *argv[]) {
ARG_AREA,
ARG_VIA_SHELL,
ARG_EMPOWER,
ARG_SAME_ROOT_DIR,
};
/* If invoked as "run0" binary, let's expose a more sudo-like interface. We add various extensions
@@ -929,6 +930,7 @@ static int parse_argv_sudo_mode(int argc, char *argv[]) {
{ "lightweight", required_argument, NULL, ARG_LIGHTWEIGHT },
{ "area", required_argument, NULL, ARG_AREA },
{ "empower", no_argument, NULL, ARG_EMPOWER },
{ "same-root-dir", no_argument, NULL, ARG_SAME_ROOT_DIR },
{},
};
@@ -1072,6 +1074,13 @@ static int parse_argv_sudo_mode(int argc, char *argv[]) {
arg_empower = true;
break;
case ARG_SAME_ROOT_DIR:
r = free_and_strdup_warn(&arg_root_directory, "/");
if (r < 0)
return r;
break;
case '?':
return -EINVAL;