mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-10-01 01:36:09 -04:00
68092f27dd
* Move `file`, `ssh` and `user` packages to internal * Rename `SSHKey` to `(ssh.)UserKey` * Rename KeyValue / Publickey to PublicKey * Rename SSH key file from "debugd" to "ssh-keys" * Add CreateSSHUsers function to Core * Call CreateSSHUsers users on first control-plane node, when defined in config Tests: * Make StubUserCreator add entries to /etc/passwd * Add NewLinuxUserManagerFake for unit tests * Add unit tests & adjust existing ones to changes
29 lines
770 B
Go
29 lines
770 B
Go
package user
|
|
|
|
import (
|
|
"github.com/spf13/afero"
|
|
"github.com/willdonnelly/passwd"
|
|
)
|
|
|
|
// An Entry contains all the fields for a specific user. Re-exported to allow other module to only import this passwd module.
|
|
type Entries map[string]passwd.Entry
|
|
|
|
type Passwd struct{}
|
|
|
|
// Parse opens the '/etc/passwd' file and parses it into a map from usernames to Entries.
|
|
func (p Passwd) Parse(fs afero.Fs) (Entries, error) {
|
|
return p.parseFile(fs, "/etc/passwd")
|
|
}
|
|
|
|
// parseFile opens the file and parses it into a map from usernames to Entries.
|
|
func (p Passwd) parseFile(fs afero.Fs, path string) (Entries, error) {
|
|
file, err := fs.Open(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer file.Close()
|
|
|
|
entries, err := passwd.ParseReader(file)
|
|
return Entries(entries), err
|
|
}
|