diff --git a/cmd/lxcri/cli.go b/cmd/lxcri/cli.go index 4f0c4d47..1470908f 100644 --- a/cmd/lxcri/cli.go +++ b/cmd/lxcri/cli.go @@ -634,8 +634,40 @@ func doExec(ctxcli *cli.Context) error { } defer clxc.releaseContainer(c) + opts := lxcri.ExecOptions{} + + if ctxcli.Bool("cgroup") { + opts.Namespaces = append(opts.Namespaces, specs.CgroupNamespace) + } + if ctxcli.Bool("ipc") { + opts.Namespaces = append(opts.Namespaces, specs.IPCNamespace) + } + if ctxcli.Bool("mnt") { + opts.Namespaces = append(opts.Namespaces, specs.MountNamespace) + } + if ctxcli.Bool("net") { + opts.Namespaces = append(opts.Namespaces, specs.NetworkNamespace) + } + if ctxcli.Bool("pid") { + opts.Namespaces = append(opts.Namespaces, specs.PIDNamespace) + } + //if ctxcli.Bool("time") { + // opts.Namespaces = append(opts.Namespaces, specs.TimeNamespace) + //} + if ctxcli.Bool("user") { + opts.Namespaces = append(opts.Namespaces, specs.UserNamespace) + } + if ctxcli.Bool("uts") { + opts.Namespaces = append(opts.Namespaces, specs.UTSNamespace) + } + + c.Log.Info().Str("cmd", procSpec.Args[0]). + Uint32("uid", procSpec.User.UID).Uint32("gid", procSpec.User.GID). + Uints32("groups", procSpec.User.AdditionalGids). + Str("namespaces", fmt.Sprintf("%s", opts.Namespaces)).Msg("execute cmd") + if detach { - pid, err := c.ExecDetached(procSpec, nil) + pid, err := c.ExecDetached(procSpec, &opts) if err != nil { return err } @@ -643,33 +675,6 @@ func doExec(ctxcli *cli.Context) error { return createPidFile(pidFile, pid) } } else { - opts := lxcri.ExecOptions{} - - if ctxcli.Bool("cgroup") { - opts.Namespaces = append(opts.Namespaces, specs.CgroupNamespace) - } - if ctxcli.Bool("ipc") { - opts.Namespaces = append(opts.Namespaces, specs.IPCNamespace) - } - if ctxcli.Bool("mnt") { - opts.Namespaces = append(opts.Namespaces, specs.MountNamespace) - } - if ctxcli.Bool("net") { - opts.Namespaces = append(opts.Namespaces, specs.NetworkNamespace) - } - if ctxcli.Bool("pid") { - opts.Namespaces = append(opts.Namespaces, specs.PIDNamespace) - } - //if ctxcli.Bool("time") { - // opts.Namespaces = append(opts.Namespaces, specs.TimeNamespace) - //} - if ctxcli.Bool("user") { - opts.Namespaces = append(opts.Namespaces, specs.UserNamespace) - } - if ctxcli.Bool("uts") { - opts.Namespaces = append(opts.Namespaces, specs.UTSNamespace) - } - status, err := c.Exec(procSpec, &opts) if err != nil { return err diff --git a/container.go b/container.go index 627cd3de..b4ee8c66 100644 --- a/container.go +++ b/container.go @@ -389,10 +389,6 @@ func (c *Container) ExecDetached(proc *specs.Process, execOpts *ExecOptions) (pi return 0, errorf("failed to create attach options: %w", err) } - c.Log.Info().Strs("args", proc.Args). - Int("uid", opts.UID).Int("gid", opts.GID). - Ints("groups", opts.Groups).Msg("execute cmd") - pid, err = c.LinuxContainer.RunCommandNoWait(proc.Args, opts) if err != nil { return pid, errorf("failed to run exec cmd detached: %w", err)