Modern go identity manager for UNIX systems.
Entities parses includes file to generate UNIX-compliant /etc/passwd , /etc/shadow and /etc/groups files.
It can be used to handle identities management and honors already existing entities in the system.
$> entities apply <entity.yaml>
$> entities delete <entity.yaml>
$> entities create <entity.yaml>
kind: "user"username: "foo"password: "pass"uid: 0gid: 0info: "Foo!"homedir: "/home/foo"shell: "/bin/bash"To use dynamic uid allocation set the uid field with value -1:
kind: "user"username: "foo"password: "pass"uid: -1gid: 500info: "Foo!"homedir: "/home/foo"shell: "/bin/bash"entities will searching for the first available range specified by the env variable
ENTITY_DYNAMIC_RANGE or by the default the range 500-999.
To set gid with a dynamic id based by the group name you can set the group attribute:
kind: "user"username: "foo"password: "pass"uid: 100group: "foogroup"info: "Foo!"homedir: "/home/foo"shell: "/bin/bash"entities will retrieve the gid from existing /etc/group file.
kind: "gshadow"name: "postmaster"password: "foo"administrators: "barred"members: "baz"kind: "shadow"username: "foo"password: "bar"last_changed: 1minimum_changed: 2maximum_changed: 3warn: 4inactive: 5expire: 6To define last_changed with a value equal to current days from 1970 use now.
kind: "group"group_name: "sddm"password: "xx"gid: 1users: "one,two,tree"To assign a dynamic gid it's possible to use the value -1:
kind: "group"group_name: "foogroup"password: "xx"gid: -1users: "one,two,tree"entities will searching for the first available range specified by the env variable
ENTITY_DYNAMIC_RANGE or by the default the range 500-999.