From 9bb4e93d65fc00dc725a9d034f1e47057c7d866a Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Fri, 1 Jul 2022 09:58:22 +0200 Subject: [PATCH] fix(bootstraper): adding system group management --- pkg/templater/system_group.go | 49 +++++++++++++++++++++++++++++++++++ pkg/templater/system_users.go | 10 ++++++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 pkg/templater/system_group.go diff --git a/pkg/templater/system_group.go b/pkg/templater/system_group.go new file mode 100644 index 0000000..deffa8a --- /dev/null +++ b/pkg/templater/system_group.go @@ -0,0 +1,49 @@ +package templater + +import ( + "fmt" + "log" + + "forge.cadoles.com/pcaseiro/templatefile/pkg/utils" +) + +type SystemGroup struct { + GroupName string `json:"groupname"` +} + +func (sg *SystemGroup) exists() (bool, error) { + _, _, err := utils.RunSystemCommand("getent", "group", sg.GroupName) + if err != nil { + return false, err + } + return true, nil +} + +func (sg *SystemGroup) Manage() error { + exist, _ := sg.exists() + if exist { + log.Printf("\tGroup %s already exists", sg.GroupName) + return nil + } + return sg.Create() +} + +func (sg *SystemGroup) Create() error { + _, stdErr, err := utils.RunSystemCommand("groupadd", "-r", sg.GroupName) + if err != nil { + return fmt.Errorf("Group %s creation failed with error: %s %v", sg.GroupName, stdErr, err) + } + return nil +} + +func (sg *SystemGroup) Delete() error { + _, _, err := utils.RunSystemCommand("userdel", sg.GroupName) + if err != nil { + return err + } + return nil +} + +func (sg *SystemGroup) Update() error { + return nil +} diff --git a/pkg/templater/system_users.go b/pkg/templater/system_users.go index bd870a9..4b66925 100644 --- a/pkg/templater/system_users.go +++ b/pkg/templater/system_users.go @@ -1,6 +1,7 @@ package templater import ( + "fmt" "log" "forge.cadoles.com/pcaseiro/templatefile/pkg/utils" @@ -31,10 +32,17 @@ func (su *SystemUser) Manage() error { } func (su *SystemUser) Create() error { - _, _, err := utils.RunSystemCommand("useradd", "-b", su.Home, "-m", "-G", su.Group, su.UserName) + // Manage System Group + grp := SystemGroup{GroupName: su.Group} + err := grp.Manage() if err != nil { return err } + + _, stdErr, err := utils.RunSystemCommand("useradd", "-b", su.Home, "-m", "-N", "-g", su.Group, su.UserName) + if err != nil { + return fmt.Errorf("User %s creation failed with error: %s %v", su.UserName, stdErr, err) + } return nil }