Skip to content
This repository was archived by the owner on Jun 3, 2025. It is now read-only.

Commit 6575516

Browse files
committed
Fix home and group set for user command
1 parent a2aae62 commit 6575516

3 files changed

Lines changed: 19 additions & 14 deletions

File tree

pkg/commands/run.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,12 @@ func (r *RunCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.Bui
6868
cmd.Stdout = os.Stdout
6969
cmd.Stderr = os.Stderr
7070
replacementEnvs := buildArgs.ReplacementEnvs(config.Env)
71-
cmd.Env = addDefaultHOME(config.User, replacementEnvs)
7271
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
73-
72+
var userStr string
7473
// If specified, run the command as a specific user
7574
if config.User != "" {
7675
userAndGroup := strings.Split(config.User, ":")
77-
userStr := userAndGroup[0]
76+
userStr = userAndGroup[0]
7877
var groupStr string
7978
if len(userAndGroup) > 1 {
8079
groupStr = userAndGroup[1]
@@ -101,6 +100,7 @@ func (r *RunCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.Bui
101100
}
102101
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uid, Gid: gid}
103102
}
103+
cmd.Env = addDefaultHOME(userStr, replacementEnvs)
104104

105105
if err := cmd.Start(); err != nil {
106106
return errors.Wrap(err, "starting command")

pkg/commands/user.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,16 @@ func (r *UserCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.Bu
4040
if err != nil {
4141
return err
4242
}
43-
var groupStr string
43+
groupStr := userStr
4444
if len(userAndGroup) > 1 {
4545
groupStr, err = util.ResolveEnvironmentReplacement(userAndGroup[1], replacementEnvs, false)
4646
if err != nil {
4747
return err
4848
}
4949
}
5050

51-
if groupStr != "" {
52-
userStr = userStr + ":" + groupStr
53-
}
51+
userStr = userStr + ":" + groupStr
52+
5453
config.User = userStr
5554
return nil
5655
}

pkg/commands/user_test.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,23 @@ import (
2828
var userTests = []struct {
2929
user string
3030
expectedUID string
31+
expectedGID string
3132
}{
3233
{
3334
user: "root",
34-
expectedUID: "root",
35+
expectedUID: "root:root",
3536
},
3637
{
3738
user: "root-add",
38-
expectedUID: "root-add",
39+
expectedUID: "root-add:root-add",
3940
},
4041
{
4142
user: "0",
42-
expectedUID: "0",
43+
expectedUID: "0:0",
4344
},
4445
{
4546
user: "fakeUser",
46-
expectedUID: "fakeUser",
47+
expectedUID: "fakeUser:fakeUser",
4748
},
4849
{
4950
user: "root:root",
@@ -56,18 +57,23 @@ var userTests = []struct {
5657
{
5758
user: "root:0",
5859
expectedUID: "root:0",
60+
expectedGID: "f0",
5961
},
6062
{
6163
user: "0:0",
6264
expectedUID: "0:0",
6365
},
6466
{
6567
user: "$envuser",
66-
expectedUID: "root",
68+
expectedUID: "root:root",
6769
},
6870
{
6971
user: "root:$envgroup",
70-
expectedUID: "root:root",
72+
expectedUID: "root:grp",
73+
},
74+
{
75+
user: "some:grp",
76+
expectedUID: "some:grp",
7177
},
7278
}
7379

@@ -76,7 +82,7 @@ func TestUpdateUser(t *testing.T) {
7682
cfg := &v1.Config{
7783
Env: []string{
7884
"envuser=root",
79-
"envgroup=root",
85+
"envgroup=grp",
8086
},
8187
}
8288
cmd := UserCommand{

0 commit comments

Comments
 (0)