Skip to content

Commit 213e0d0

Browse files
committed
condition user and group creation on users and groups not existing. fix os.OpenFile() usage
1 parent ec95dd9 commit 213e0d0

File tree

1 file changed

+23
-9
lines changed

1 file changed

+23
-9
lines changed

main.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"log"
88
"os"
99
"os/exec"
10+
"os/user"
1011
"strings"
1112
"unicode"
1213

@@ -128,23 +129,25 @@ func processUserData(configDriveDir string) error {
128129
return fmt.Errorf("could not parse user-data file as YAML: %s", err)
129130
}
130131

131-
/*
132-
// create groups
133-
for _, group := range cc.Groups {
132+
// create groups
133+
for _, group := range cc.Groups {
134+
if !groupExists(group) {
134135
output, err := exec.Command("groupadd", group).CombinedOutput()
135136
if err != nil {
136137
log.Printf("Error creating group '%s': %s\n%s", group, err, output)
137138
}
138-
}*/
139+
}
140+
}
139141

140142
// create users
141143
var sudoers []string
142144
for _, user := range cc.Users {
143-
/*
145+
if !userExists(user.Name) {
144146
err = createUser(user)
145147
if err != nil {
146148
log.Printf("Error creating user: %s", err)
147-
}*/
149+
}
150+
}
148151

149152
// try to set up ssh keys
150153
err = AuthorizeSSHKeys(user.Name, "rancher-flatcar-cloudinit", user.SSHAuthorizedKeys)
@@ -153,19 +156,20 @@ func processUserData(configDriveDir string) error {
153156
}
154157

155158
// set up sudoers
156-
//sudoers = append(sudoers, user.Name+" "+user.Sudo)
159+
sudoers = append(sudoers, user.Name+" "+user.Sudo)
157160
}
158161

159162
// write sudoers
160163
if len(sudoers) > 0 {
161-
f, err := os.OpenFile("/etc/sudoers.d/rancher-flatcar-cloudinit", os.O_CREATE, 0440)
164+
f, err := os.OpenFile("/etc/sudoers.d/rancher-flatcar-cloudinit", os.O_CREATE|os.O_WRONLY, 0440)
162165
if err != nil {
163166
log.Printf("Error opening sudoers file: %s", err)
164167
}
168+
defer f.Close()
165169

166170
n, err := f.WriteString(strings.Join(sudoers, "\r\n"))
167171
if err != nil {
168-
log.Printf("Error writing suoers file: %s", err)
172+
log.Printf("Error writing sudoers file: %s", err)
169173
} else {
170174
log.Printf("Wrote %d entries to sudoers file", n)
171175
}
@@ -287,3 +291,13 @@ func AuthorizeSSHKeys(user string, keysName string, keys []string) error {
287291

288292
return nil
289293
}
294+
295+
func userExists(u string) bool {
296+
_, err := user.Lookup(u)
297+
return err == nil
298+
}
299+
300+
func groupExists(g string) bool {
301+
_, err := user.LookupGroup(g)
302+
return err == nil
303+
}

0 commit comments

Comments
 (0)