Browse Source

condition user and group creation on users and groups not existing. fix os.OpenFile() usage

main
Andy Cobaugh 4 years ago
parent
commit
213e0d0fe1
  1. 32
      main.go

32
main.go

@ -7,6 +7,7 @@ import (
"log"
"os"
"os/exec"
"os/user"
"strings"
"unicode"
@ -128,23 +129,25 @@ func processUserData(configDriveDir string) error {
return fmt.Errorf("could not parse user-data file as YAML: %s", err)
}
/*
// create groups
for _, group := range cc.Groups {
// create groups
for _, group := range cc.Groups {
if !groupExists(group) {
output, err := exec.Command("groupadd", group).CombinedOutput()
if err != nil {
log.Printf("Error creating group '%s': %s\n%s", group, err, output)
}
}*/
}
}
// create users
var sudoers []string
for _, user := range cc.Users {
/*
if !userExists(user.Name) {
err = createUser(user)
if err != nil {
log.Printf("Error creating user: %s", err)
}*/
}
}
// try to set up ssh keys
err = AuthorizeSSHKeys(user.Name, "rancher-flatcar-cloudinit", user.SSHAuthorizedKeys)
@ -153,19 +156,20 @@ func processUserData(configDriveDir string) error {
}
// set up sudoers
//sudoers = append(sudoers, user.Name+" "+user.Sudo)
sudoers = append(sudoers, user.Name+" "+user.Sudo)
}
// write sudoers
if len(sudoers) > 0 {
f, err := os.OpenFile("/etc/sudoers.d/rancher-flatcar-cloudinit", os.O_CREATE, 0440)
f, err := os.OpenFile("/etc/sudoers.d/rancher-flatcar-cloudinit", os.O_CREATE|os.O_WRONLY, 0440)
if err != nil {
log.Printf("Error opening sudoers file: %s", err)
}
defer f.Close()
n, err := f.WriteString(strings.Join(sudoers, "\r\n"))
if err != nil {
log.Printf("Error writing suoers file: %s", err)
log.Printf("Error writing sudoers file: %s", err)
} else {
log.Printf("Wrote %d entries to sudoers file", n)
}
@ -287,3 +291,13 @@ func AuthorizeSSHKeys(user string, keysName string, keys []string) error {
return nil
}
func userExists(u string) bool {
_, err := user.Lookup(u)
return err == nil
}
func groupExists(g string) bool {
_, err := user.LookupGroup(g)
return err == nil
}

Loading…
Cancel
Save