From 5e94745f265e97f9fc75446f7963a98a417139f7 Mon Sep 17 00:00:00 2001 From: acetang Date: Wed, 24 Mar 2021 20:17:51 +0800 Subject: [PATCH] ctr: add --user for task exec set user in exec container $ ctr t exec --exec-id e1 --user admin container id uid=500(admin) gid=500(admin) groups=500(admin) Signed-off-by: chuangxue Signed-off-by: acetang --- cmd/ctr/commands/tasks/exec.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/cmd/ctr/commands/tasks/exec.go b/cmd/ctr/commands/tasks/exec.go index fc18da4ac..3f31e2796 100644 --- a/cmd/ctr/commands/tasks/exec.go +++ b/cmd/ctr/commands/tasks/exec.go @@ -26,6 +26,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/cio" "github.com/containerd/containerd/cmd/ctr/commands" + "github.com/containerd/containerd/oci" "github.com/sirupsen/logrus" "github.com/urfave/cli" ) @@ -61,6 +62,10 @@ var execCommand = cli.Command{ Name: "log-uri", Usage: "log uri for custom shim logging", }, + cli.StringFlag{ + Name: "user", + Usage: "user id or name", + }, }, Action: func(context *cli.Context) error { var ( @@ -85,15 +90,25 @@ var execCommand = cli.Command{ if err != nil { return err } - task, err := container.Task(ctx, nil) - if err != nil { - return err + if user := context.String("user"); user != "" { + c, err := container.Info(ctx) + if err != nil { + return err + } + if err := oci.WithUser(user)(ctx, client, &c, spec); err != nil { + return err + } } pspec := spec.Process pspec.Terminal = tty pspec.Args = args + task, err := container.Task(ctx, nil) + if err != nil { + return err + } + var ( ioCreator cio.Creator stdinC = &stdinCloser{