MCPcopy
hub / github.com/getsops/sops / SwitchUser

Function SwitchUser

cmd/sops/subcommand/exec/exec_unix.go:57–102  ·  view source on GitHub ↗
(username string)

Source from the content-addressed store, hash-verified

55}
56
57func SwitchUser(username string) {
58 user, err := user.Lookup(username)
59 if err != nil {
60 log.Fatal(err)
61 }
62
63 uid, _ := strconv.Atoi(user.Uid)
64 gid, _ := strconv.Atoi(user.Gid)
65
66 groupIds, err := user.GroupIds()
67 var intGroupIds []int
68 if err != nil {
69 log.Fatal(err)
70 intGroupIds = []int{gid}
71 } else {
72 intGroupIds = make([]int, len(groupIds))
73 for i, gid := range groupIds {
74 intGroupIds[i], _ = strconv.Atoi(gid)
75 }
76 }
77
78 err = syscall.Setgroups(intGroupIds)
79 if err != nil {
80 log.Fatal(err)
81 }
82
83 err = syscall.Setgid(gid)
84 if err != nil {
85 log.Fatal(err)
86 }
87
88 err = syscall.Setuid(uid)
89 if err != nil {
90 log.Fatal(err)
91 }
92
93 err = syscall.Setreuid(uid, uid)
94 if err != nil {
95 log.Fatal(err)
96 }
97
98 err = syscall.Setregid(gid, gid)
99 if err != nil {
100 log.Fatal(err)
101 }
102}

Callers 2

ExecWithFileFunction · 0.70
ExecWithEnvFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected