Roles
Five, and they nest: each one has everything the role below it has, and adds to it. Reading needs no permission at all, which is why a viewer is granted none.
Two of these deserve saying out loud.
Opening a shell is a separate permission from changing a server. A shell is
effective root on the machine, so a role can be allowed to configure a server
without being handed a terminal on it.
Writing a recipe is held higher than running one. A recipe is root code
that other people will run across machines they picked from a list, without
reading it, so authoring one sits with the organization’s administrators.
Running one reaches no further than a shell already does, so developers may.