From: "Mickaël Salaün" <mic@digikod.net>
To: Matthieu Buffet <matthieu@buffet.re>
Cc: "Günther Noack" <gnoack@google.com>,
"Paul Moore" <paul@paul-moore.com>,
"James Morris" <jmorris@namei.org>,
"Serge E . Hallyn" <serge@hallyn.com>,
linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
"Konstantin Meskhidze" <konstantin.meskhidze@huawei.com>,
"Ivanov Mikhail" <ivanov.mikhail1@huawei-partners.com>
Subject: Re: [RFC PATCH v1 2/7] samples/landlock: Clarify option parsing behaviour
Date: Fri, 20 Sep 2024 15:38:47 +0200 [thread overview]
Message-ID: <20240920.xaeBeed4Ge6o@digikod.net> (raw)
In-Reply-To: <20240916122230.114800-3-matthieu@buffet.re>
On Mon, Sep 16, 2024 at 02:22:25PM +0200, Matthieu Buffet wrote:
> - Clarify which environment variables are optional, which ones are
> mandatory
> - Clarify the difference between unset variables and empty ones
> - Move the (larger) help message to a helper function
>
> Signed-off-by: Matthieu Buffet <matthieu@buffet.re>
> ---
> samples/landlock/sandboxer.c | 86 ++++++++++++++++++++----------------
> 1 file changed, 48 insertions(+), 38 deletions(-)
>
> diff --git a/samples/landlock/sandboxer.c b/samples/landlock/sandboxer.c
> index a84ae3a15482..08704504dc51 100644
> --- a/samples/landlock/sandboxer.c
> +++ b/samples/landlock/sandboxer.c
> @@ -221,6 +221,53 @@ static int populate_ruleset_net(const char *const env_var, const int ruleset_fd,
>
> #define LANDLOCK_ABI_LAST 5
>
> +static void print_help(const char *prog)
> +{
> + fprintf(stderr,
> + "usage: %s=\"...\" %s=\"...\" [other environment variables] %s "
> + "<cmd> [args]...\n\n",
> + ENV_FS_RO_NAME, ENV_FS_RW_NAME, prog);
> + fprintf(stderr,
> + "Execute a command in a restricted environment.\n\n");
> + fprintf(stderr,
> + "Environment variables containing paths and ports "
> + "can be multi-valued, with a colon delimiter.\n"
> + "\n"
> + "Mandatory settings:\n");
> + fprintf(stderr,
> + "* %s: list of paths allowed to be used in a read-only way.\n",
> + ENV_FS_RO_NAME);
> + fprintf(stderr,
> + "* %s: list of paths allowed to be used in a read-write way.\n",
> + ENV_FS_RW_NAME);
> + fprintf(stderr,
> + "\n"
> + "Optional settings (when not set, their associated access "
> + "check is always allowed) (for lists, an empty string means "
> + "to allow nothing, e.g. %s=\"\"):\n",
> + ENV_TCP_BIND_NAME);
> + fprintf(stderr,
> + "* %s: list of ports allowed to bind (server).\n",
> + ENV_TCP_BIND_NAME);
> + fprintf(stderr,
> + "* %s: list of ports allowed to connect (client).\n",
> + ENV_TCP_CONNECT_NAME);
> + fprintf(stderr,
> + "\n"
> + "Example:\n"
> + "%s=\"${PATH}:/lib:/usr:/proc:/etc:/dev/urandom\" "
> + "%s=\"/dev/null:/dev/full:/dev/zero:/dev/pts:/tmp\" "
> + "%s=\"9418\" "
> + "%s=\"80:443\" "
> + "%s bash -i\n\n",
> + ENV_FS_RO_NAME, ENV_FS_RW_NAME, ENV_TCP_BIND_NAME,
> + ENV_TCP_CONNECT_NAME, prog);
> + fprintf(stderr,
> + "This sandboxer can use Landlock features "
> + "up to ABI version %d.\n",
> + LANDLOCK_ABI_LAST);
> +}
> +
> int main(const int argc, char *const argv[], char *const *const envp)
> {
> const char *cmd_path;
> @@ -237,44 +284,7 @@ int main(const int argc, char *const argv[], char *const *const envp)
> };
>
> if (argc < 2) {
> - fprintf(stderr,
> - "usage: %s=\"...\" %s=\"...\" %s=\"...\" %s=\"...\"%s "
> - "<cmd> [args]...\n\n",
> - ENV_FS_RO_NAME, ENV_FS_RW_NAME, ENV_TCP_BIND_NAME,
> - ENV_TCP_CONNECT_NAME, argv[0]);
> - fprintf(stderr,
> - "Execute a command in a restricted environment.\n\n");
> - fprintf(stderr,
> - "Environment variables containing paths and ports "
> - "each separated by a colon:\n");
> - fprintf(stderr,
> - "* %s: list of paths allowed to be used in a read-only way.\n",
> - ENV_FS_RO_NAME);
> - fprintf(stderr,
> - "* %s: list of paths allowed to be used in a read-write way.\n\n",
> - ENV_FS_RW_NAME);
> - fprintf(stderr,
> - "Environment variables containing ports are optional "
> - "and could be skipped.\n");
> - fprintf(stderr,
> - "* %s: list of ports allowed to bind (server).\n",
> - ENV_TCP_BIND_NAME);
> - fprintf(stderr,
> - "* %s: list of ports allowed to connect (client).\n",
> - ENV_TCP_CONNECT_NAME);
> - fprintf(stderr,
> - "\nexample:\n"
> - "%s=\"${PATH}:/lib:/usr:/proc:/etc:/dev/urandom\" "
> - "%s=\"/dev/null:/dev/full:/dev/zero:/dev/pts:/tmp\" "
> - "%s=\"9418\" "
> - "%s=\"80:443\" "
> - "%s bash -i\n\n",
> - ENV_FS_RO_NAME, ENV_FS_RW_NAME, ENV_TCP_BIND_NAME,
> - ENV_TCP_CONNECT_NAME, argv[0]);
> - fprintf(stderr,
> - "This sandboxer can use Landlock features "
> - "up to ABI version %d.\n",
> - LANDLOCK_ABI_LAST);
> + print_help(argv[0]);
Looks good, please rebase on my "next" branch with the new LL_SCOPED
variable and send it in a new series along with the previous fix:
https://git.kernel.org/pub/scm/linux/kernel/git/mic/linux.git/log/?h=next
> return 1;
> }
>
> --
> 2.39.5
>
>
next prev parent reply other threads:[~2024-09-20 13:39 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-16 12:22 [RFC PATCH v1 0/7] landlock: Add UDP access control support Matthieu Buffet
2024-09-16 12:22 ` [RFC PATCH v1 1/7] samples/landlock: Fix port parsing in sandboxer Matthieu Buffet
2024-09-20 13:38 ` Mickaël Salaün
2024-09-23 15:24 ` Mikhail Ivanov
2024-09-16 12:22 ` [RFC PATCH v1 2/7] samples/landlock: Clarify option parsing behaviour Matthieu Buffet
2024-09-20 13:38 ` Mickaël Salaün [this message]
2024-09-16 12:22 ` [RFC PATCH v1 3/7] landlock: Add UDP bind+connect access control Matthieu Buffet
2024-09-20 13:39 ` Mickaël Salaün
2024-09-16 12:22 ` [RFC PATCH v1 4/7] landlock: Add UDP send+recv " Matthieu Buffet
2024-09-21 10:23 ` Mickaël Salaün
2024-10-19 12:47 ` Matthieu Buffet
2024-10-21 9:57 ` Mickaël Salaün
2024-09-16 12:22 ` [RFC PATCH v1 5/7] samples/landlock: Add sandboxer UDP " Matthieu Buffet
2024-10-04 15:04 ` Mickaël Salaün
2024-09-16 12:22 ` [RFC PATCH v1 6/7] selftests/landlock: Adapt existing tests for UDP Matthieu Buffet
2024-09-16 12:22 ` [RFC PATCH v1 7/7] selftests/landlock: Add UDP sendmsg/recvmsg tests Matthieu Buffet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240920.xaeBeed4Ge6o@digikod.net \
--to=mic@digikod.net \
--cc=gnoack@google.com \
--cc=ivanov.mikhail1@huawei-partners.com \
--cc=jmorris@namei.org \
--cc=konstantin.meskhidze@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=matthieu@buffet.re \
--cc=netdev@vger.kernel.org \
--cc=paul@paul-moore.com \
--cc=serge@hallyn.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.