diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-10-25 22:53:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-25 22:53:02 +0200 |
commit | 27f3a824c6fce4a829a36e7834abeb087afeba7b (patch) | |
tree | 67c5ee8ca223db474305ef5d5ba3a260b11cff9a | |
parent | dcb20bb39068128c208acd6e4ef47402ba792c63 (diff) | |
parent | e85d69efab1601ce8d5191f14c2075e796cfbbff (diff) |
Merge pull request #24587 from vespa-engine/revert-24554-arnej/refactor-find-vespa-user
Revert "move FindVespaUser(), add FindVespaUidAndGid()"
-rw-r--r-- | client/go/vespa/find_user.go | 76 | ||||
-rw-r--r-- | client/go/vespa/find_user_test.go | 27 | ||||
-rw-r--r-- | client/go/vespa/load_env.go | 35 |
3 files changed, 33 insertions, 105 deletions
diff --git a/client/go/vespa/find_user.go b/client/go/vespa/find_user.go deleted file mode 100644 index c3f4e32906f..00000000000 --- a/client/go/vespa/find_user.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -// load default environment variables (from $VESPA_HOME/conf/vespa/default-env.txt) -// Author: arnej - -package vespa - -import ( - "os" - "os/user" - "strconv" -) - -// Which user should vespa services run as? If current user is root, -// we want to change to some non-privileged user. -// Should be run after LoadDefaultEnv() which possibly loads VESPA_USER -// Which user should vespa services run as? If current user is root, -// we want to change to some non-privileged user. -// Should be run after LoadDefaultEnv() which possibly loads VESPA_USER -func FindVespaUser() string { - uName := os.Getenv("VESPA_USER") - if uName != "" { - // no check here, assume valid - return uName - } - if os.Getuid() == 0 { - u, err := user.Lookup("vespa") - if err == nil { - uName = u.Username - } else { - u, err = user.Lookup("nobody") - if err == nil { - uName = u.Username - } - } - } - if uName == "" { - u, err := user.Current() - if err == nil { - uName = u.Username - } - } - if uName != "" { - os.Setenv("VESPA_USER", uName) - } - return uName -} - -// Which user/group should vespa services run as? If current user is root, -// we want to change to some non-privileged user. -// Should be run after LoadDefaultEnv() which possibly loads VESPA_USER - -func FindVespaUidAndGid() (userId, groupId int) { - userId = -1 - groupId = -1 - uName := os.Getenv("VESPA_USER") - gName := os.Getenv("VESPA_GROUP") - if uName == "" { - uName = FindVespaUser() - } - if uName != "" { - u, err := user.Lookup(uName) - if err == nil { - userId, _ = strconv.Atoi(u.Uid) - if gName == "" { - groupId, _ = strconv.Atoi(u.Gid) - } - } - } - if gName != "" { - g, err := user.LookupGroup(gName) - if err == nil { - groupId, _ = strconv.Atoi(g.Gid) - } - } - return -} diff --git a/client/go/vespa/find_user_test.go b/client/go/vespa/find_user_test.go deleted file mode 100644 index 3d533b08c56..00000000000 --- a/client/go/vespa/find_user_test.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package vespa - -import ( - "fmt" - "os" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestFindVespaUser(t *testing.T) { - var uName string - - t.Setenv("VESPA_USER", "nobody") - uName = FindVespaUser() - assert.Equal(t, "nobody", uName) - - t.Setenv("VESPA_USER", "") - uName = FindVespaUser() - assert.NotEqual(t, "", uName) -} - -func TestFindVespaUidAndGid(t *testing.T) { - uid, gid := FindVespaUidAndGid() - fmt.Fprintln(os.Stderr, "INFO: result from FindVespaUidAndGid() is", uid, "and", gid) -} diff --git a/client/go/vespa/load_env.go b/client/go/vespa/load_env.go index ec60305e1cc..8eb7c841235 100644 --- a/client/go/vespa/load_env.go +++ b/client/go/vespa/load_env.go @@ -8,6 +8,7 @@ import ( "bufio" "fmt" "os" + "os/user" "strings" ) @@ -20,12 +21,42 @@ func LoadDefaultEnv() error { func ExportDefaultEnvToSh() error { holder := newShellEnvExporter() err := loadDefaultEnvTo(holder) - holder.overrideVar("VESPA_HOME", FindHome()) - holder.overrideVar("VESPA_USER", FindVespaUser()) holder.dump() return err } +// Which user should vespa services run as? If current user is root, +// we want to change to some non-privileged user. +// Should be run after LoadDefaultEnv() which possibly loads VESPA_USER +func FindVespaUser() string { + uName := os.Getenv("VESPA_USER") + if uName != "" { + // no check here, assume valid + return uName + } + if os.Getuid() == 0 { + u, err := user.Lookup("vespa") + if err == nil { + uName = u.Username + } else { + u, err = user.Lookup("nobody") + if err == nil { + uName = u.Username + } + } + } + if uName == "" { + u, err := user.Current() + if err == nil { + uName = u.Username + } + } + if uName != "" { + os.Setenv("VESPA_USER", uName) + } + return uName +} + type loadEnvReceiver interface { fallbackVar(varName, varVal string) overrideVar(varName, varVal string) |