summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-10-25 22:53:02 +0200
committerGitHub <noreply@github.com>2022-10-25 22:53:02 +0200
commit27f3a824c6fce4a829a36e7834abeb087afeba7b (patch)
tree67c5ee8ca223db474305ef5d5ba3a260b11cff9a
parentdcb20bb39068128c208acd6e4ef47402ba792c63 (diff)
parente85d69efab1601ce8d5191f14c2075e796cfbbff (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.go76
-rw-r--r--client/go/vespa/find_user_test.go27
-rw-r--r--client/go/vespa/load_env.go35
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)