UserCommands: add field CreateUserHome

This commit is contained in:
Andrew Woodlee 2025-03-11 15:30:07 -05:00
parent 95e85e8b45
commit 99c622b69f
5 changed files with 11 additions and 6 deletions

View File

@ -223,11 +223,8 @@ func (command *Command) RunCmd(cmdCtxLogger zerolog.Logger, opts *ConfigOpts) ([
if err != nil { if err != nil {
return collectOutput(&cmdOutBuf, command.Name, cmdCtxLogger, command.OutputToLog), fmt.Errorf("error creating file %s/authorized_keys: %v", userSshDir, err) return collectOutput(&cmdOutBuf, command.Name, cmdCtxLogger, command.OutputToLog), fmt.Errorf("error creating file %s/authorized_keys: %v", userSshDir, err)
} }
}
}
if err != nil {
return collectOutput(&cmdOutBuf, command.Name, cmdCtxLogger, command.OutputToLog), fmt.Errorf("error opening file %s/authorized_keys: %v", userSshDir, err)
}
f, err = os.OpenFile(fmt.Sprintf("%s/authorized_keys", userSshDir), 0700, os.ModeAppend) f, err = os.OpenFile(fmt.Sprintf("%s/authorized_keys", userSshDir), 0700, os.ModeAppend)
if err != nil { if err != nil {
return collectOutput(&cmdOutBuf, command.Name, cmdCtxLogger, command.OutputToLog), fmt.Errorf("error opening file %s/authorized_keys: %v", userSshDir, err) return collectOutput(&cmdOutBuf, command.Name, cmdCtxLogger, command.OutputToLog), fmt.Errorf("error opening file %s/authorized_keys: %v", userSshDir, err)

View File

@ -115,6 +115,8 @@ type (
UserShell string `yaml:"userShell,omitempty"` UserShell string `yaml:"userShell,omitempty"`
UserCreateHome bool `yaml:"userCreateHome,omitempty"`
SystemUser bool `yaml:"systemUser,omitempty"` SystemUser bool `yaml:"systemUser,omitempty"`
UserPassword string `yaml:"userPassword,omitempty"` UserPassword string `yaml:"userPassword,omitempty"`

View File

@ -294,6 +294,7 @@ func getCommandTypeAndSetCommandInfo(command *Command) *Command {
command.UserHome, command.UserHome,
command.UserShell, command.UserShell,
command.SystemUser, command.SystemUser,
command.UserCreateHome,
command.UserGroups, command.UserGroups,
command.Args) command.Args)
case "modify": case "modify":

View File

@ -15,7 +15,7 @@ func (l LinuxUserManager) NewLinuxManager() *LinuxUserManager {
} }
// AddUser adds a new user to the system. // AddUser adds a new user to the system.
func (l LinuxUserManager) AddUser(username, homeDir, shell string, isSystem bool, groups, args []string) (string, []string) { func (l LinuxUserManager) AddUser(username, homeDir, shell string, createHome, isSystem bool, groups, args []string) (string, []string) {
baseArgs := []string{} baseArgs := []string{}
if isSystem { if isSystem {
@ -38,6 +38,11 @@ func (l LinuxUserManager) AddUser(username, homeDir, shell string, isSystem bool
baseArgs = append(baseArgs, args...) baseArgs = append(baseArgs, args...)
} }
if createHome {
baseArgs = append(baseArgs, "-m")
}
args = append(baseArgs, username) args = append(baseArgs, username)
cmd := "useradd" cmd := "useradd"

View File

@ -10,7 +10,7 @@ import (
// UserManager defines the interface for user management operations. // UserManager defines the interface for user management operations.
// All functions but one return a string for the command and any args. // All functions but one return a string for the command and any args.
type UserManager interface { type UserManager interface {
AddUser(username, homeDir, shell string, isSystem bool, groups, args []string) (string, []string) AddUser(username, homeDir, shell string, createHome, isSystem bool, groups, args []string) (string, []string)
RemoveUser(username string) (string, []string) RemoveUser(username string) (string, []string)
ModifyUser(username, homeDir, shell string, groups []string) (string, []string) ModifyUser(username, homeDir, shell string, groups []string) (string, []string)
// Modify password uses chpasswd for Linux systems to build the command to change the password // Modify password uses chpasswd for Linux systems to build the command to change the password