[lxc-devel] [PATCH 2/3] lxc-attach: Default to /bin/sh if shell cannot be determined or exec'd
Serge Hallyn
serge.hallyn at ubuntu.com
Wed Mar 6 15:36:32 UTC 2013
Quoting Christian Seiler (christian at iwakd.de):
> If getpwuid() fails and also the fallback of spawning of a 'getent'
> process, and the user specified no command to execute, default to
> /bin/sh and only fail if even that is not available. This should ensure
> that unless the container is *really* weird, no matter what, the user
> should always end up with a shell when calling lxc-attach with no
> further arguments.
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/lxc_attach.c | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/src/lxc/lxc_attach.c b/src/lxc/lxc_attach.c
> index d84c3d8..9c86ffe 100644
> --- a/src/lxc/lxc_attach.c
> +++ b/src/lxc/lxc_attach.c
> @@ -449,15 +449,21 @@ int main(int argc, char *argv[])
> if (!passwd)
> passwd = lxc_attach_getpwuid(uid);
>
> - if (!passwd) {
> - SYSERROR("failed to get passwd " \
> - "entry for uid '%d'", uid);
> - return -1;
> + if (passwd) {
> + char *const args[] = {
> + passwd->pw_shell,
> + NULL,
> + };
> +
> + (void) execvp(args[0], args);
> }
>
> + /* executed if either no passwd entry or execvp fails,
> + * we will fall back on /bin/sh as a default shell
> + */
> {
> char *const args[] = {
> - passwd->pw_shell,
> + "/bin/sh",
> NULL,
> };
>
> --
> 1.7.10.4
>
More information about the lxc-devel
mailing list