Skip to main content

Creds is a library for managing Linux, FreeBSD and OpenBSD user accounts and credentials.

Project description

Documentation Status https://coveralls.io/repos/github/jonhadfield/creds/badge.svg?branch=master https://circleci.com/gh/jonhadfield/creds.svg?style=svg https://travis-ci.org/jonhadfield/creds.svg?branch=master

Creds

Creds is a library that simplifies the management of user accounts and their credentials on Linux, FreeBSD and OpenBSD.

Instead of issuing commands to create, update and delete users and their ssh keys, supply Creds with details of the users you want and it will take care of the implementation.

The supported inputs are currently YAML, JSON or python dictionaries.

User vs System accounts

Linux has a default range of user ids to provide to system and user accounts, found in /etc/login.defs.
Creds will attempt to read this file to determine which accounts are in scope for management and, if unavailable, will default to:
UID_MIN = 1000 # User accounts will have an id of 1000 or more
UID_MAX = 60000 # User accounts will not have an id higher than 60000

Example Usage

Read a list of users from users.yml and create them (if missing) or update (if existing):

from creds.users import Users
from creds.plan import (create_plan, execute_plan)

existing_users = Users.from_passwd()  # Get a list of existing users and their keys
proposed_users = Users.from_yaml('users.yml')  # Read the proposed list of users and their keys

# Generate a list of operations to transition from current to existing
plan = create_plan(existing_users=existing_users, proposed_users=proposed_users)
execute_plan(plan=plan)  # Execute the plan

Deleting users

If your input defines all of the user accounts you want to exist, you can choose to purge any that are undefined by adding a parameter to create_plan:

plan = create_plan(existing_users=existing_users, proposed_users=proposed_users,
                   purge_undefined=True)

Protecting users

If there are users you want to protect from change, e.g. you want to make sure that certain users are not deleted or updated under any circumstances, then you can supply a list of usernames for Creds to ignore:

plan = create_plan(existing_users=existing_users, proposed_users=proposed_users,
                   purge_undefined=True, protected_users=['rod', 'jane', 'freddy'])

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

creds-1.0.16.tar.gz (26.7 kB view details)

Uploaded Source

Built Distribution

creds-1.0.16-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

File details

Details for the file creds-1.0.16.tar.gz.

File metadata

  • Download URL: creds-1.0.16.tar.gz
  • Upload date:
  • Size: 26.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for creds-1.0.16.tar.gz
Algorithm Hash digest
SHA256 7553178164cfe1f9a2043bc22c7ee156b6156bd82704418571cf1d8eb9cf1c51
MD5 0a3f73bf5ecde9621486714b6f849f5e
BLAKE2b-256 05e0fa0ff3435105239140587a13f838ca47b2a9b2289162db1ee4f226c73f6f

See more details on using hashes here.

File details

Details for the file creds-1.0.16-py3-none-any.whl.

File metadata

  • Download URL: creds-1.0.16-py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for creds-1.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 7c7d880ec7bc82751dd38051c862986d3b77e759c7b49d900cbe43c5b6ef5421
MD5 444e58c1418f8e8e413cd42c5a9a6329
BLAKE2b-256 34af1c23f3d6c8107750e6e5a375cd4dc6f69f4dbf669e23768a048afbb8312f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page