[libvirt] [PATCH] lxc: Don't make container's TTY a controlling TTY
Richard Weinberger
richard.weinberger at gmail.com
Tue Nov 17 21:03:12 UTC 2015
On Tue, Jun 23, 2015 at 3:18 PM, Richard Weinberger <richard at nod.at> wrote:
> Userspace does not expect that the initial console
> is a controlling TTY. systemd can deal with that, others not.
> On sysv init distros getty will fail to spawn a controlling on
> /dev/console or /dev/tty1. Which will cause to whole container
> to reboot upon ctrl-c.
>
> This patch changes the behavior of libvirt to match the kernel
> behavior where the initial TTY is also not controlling.
>
> The only user visible change should be that a container with
> bash as PID 1 would complain. But this matches exactly the kernel
> be behavior with intit=/bin/bash.
> To get a controlling TTY for bash just run "setsid /bin/bash".
>
> Signed-off-by: Richard Weinberger <richard at nod.at>
> ---
> src/lxc/lxc_container.c | 14 +-------------
> 1 file changed, 1 insertion(+), 13 deletions(-)
>
> diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
> index 11e9514..7d531e2 100644
> --- a/src/lxc/lxc_container.c
> +++ b/src/lxc/lxc_container.c
> @@ -278,18 +278,6 @@ static int lxcContainerSetupFDs(int *ttyfd,
> "as the FDs are about to be closed for exec of "
> "the container init process");
>
> - if (setsid() < 0) {
> - virReportSystemError(errno, "%s",
> - _("setsid failed"));
> - goto cleanup;
> - }
> -
> - if (ioctl(*ttyfd, TIOCSCTTY, NULL) < 0) {
> - virReportSystemError(errno, "%s",
> - _("ioctl(TIOCSCTTY) failed"));
> - goto cleanup;
> - }
> -
> if (dup2(*ttyfd, STDIN_FILENO) < 0) {
> virReportSystemError(errno, "%s",
> _("dup2(stdin) failed"));
> @@ -2210,7 +2198,7 @@ static int lxcContainerChild(void *data)
>
> VIR_DEBUG("Container TTY path: %s", ttyPath);
>
> - ttyfd = open(ttyPath, O_RDWR|O_NOCTTY);
> + ttyfd = open(ttyPath, O_RDWR);
> if (ttyfd < 0) {
> virReportSystemError(errno,
> _("Failed to open tty %s"),
Ping?
--
Thanks,
//richard
More information about the libvir-list
mailing list