62 lines
2.0 KiB
Markdown
62 lines
2.0 KiB
Markdown
|
---
|
||
|
title: "User commands"
|
||
|
weight: 2
|
||
|
description: This is dedicated to user commands.
|
||
|
---
|
||
|
|
||
|
This is dedicated to `user` commands. The command `type` field must be `user`. User is a type that allows one to perform user operations. There are several additional options available when `type` is `user`:
|
||
|
|
||
|
| name | notes | type | required |
|
||
|
| --- | --- | --- | --- |
|
||
|
| `userName` | The name of a user to be configured. | `string` | yes |
|
||
|
| `userOperation` | The type of operation to perform. | `string` | yes |
|
||
|
| `userID` | The user ID to use. | `string` | yes |
|
||
|
| `userGroups` | The groups the user should be added to. | `[]string` | yes |
|
||
|
| `userShell` | The shell for the user. | `string` | yes |
|
||
|
| `userHome` | The user's home directory. | `string` | no |
|
||
|
|
||
|
|
||
|
#### example
|
||
|
|
||
|
The following is an example of a package command:
|
||
|
|
||
|
```yaml
|
||
|
addUser:
|
||
|
name: add user backy with custom home dir
|
||
|
type: user
|
||
|
userName: backy
|
||
|
userHome: /opt/backy
|
||
|
userOperation: add
|
||
|
host: some-host
|
||
|
```
|
||
|
|
||
|
#### userOperation
|
||
|
|
||
|
The following package operations are supported:
|
||
|
|
||
|
- `add`
|
||
|
- `remove`
|
||
|
- `modify`
|
||
|
- `password`
|
||
|
- `checkIfExists`
|
||
|
|
||
|
### Development
|
||
|
|
||
|
The UserManager interface provides an way easy to add new commands. There is one interface `Usermanager` in directory `pkg/usermanager`.
|
||
|
|
||
|
#### UserManager
|
||
|
|
||
|
```go
|
||
|
// UserManager defines the interface for user management operations.
|
||
|
// All functions but one return a string for the command and any args.
|
||
|
type UserManager interface {
|
||
|
AddUser(username, homeDir, shell string, isSystem bool, groups, args []string) (string, []string)
|
||
|
RemoveUser(username 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
|
||
|
// Should return a password as the last argument
|
||
|
// TODO: refactor when adding more systems instead of Linux
|
||
|
ModifyPassword(username, password string) (string, *strings.Reader, string)
|
||
|
UserExists(username string) (string, []string)
|
||
|
}
|
||
|
```
|