Machine Room github

Project · Python

ldap_admin_flask

A Flask-based LDAP administration tool for schools and small organisations, built to make the common OpenLDAP tasks safer and easier than a shelf of one-off shell scripts.

Everything in this tool exists because a shell script was the wrong place for it. Creating four hundred accounts in September, changing a class's passwords before a lesson, or finding out why one student cannot log in — all of it was being done by hand, which is to say by memory, which is to say unreliably.

What it covers

TaskWhat it does
UsersCreate, check and edit attributes, delete.
PasswordsChange one, or bulk-change from CSV, with kid-friendly or stronger temporary passwords.
Bulk importCreate users from a CSV export of the student information system.
GroupsManage supplementary memberUid groups; bulk add members from CSV.
AuditCheck primary gidNumber / posixGroup / memberUid consistency before changing anything.
ExportWrite users to XLSX, grouped by primary group.

Home directory styles

Two schemes are supported, because schools outgrow the simple one:

  • classic_unix — /home/{username}
  • graduation_year_group — school-style staff and class-year paths

The home path can be recomputed from the configured style, which is how a change of policy gets applied to accounts that already exist rather than only to new ones.

The audit is the point

The group audit checks three things that must agree and often do not: the user's primary gidNumber, the existence of the matching posixGroup, and the supplementary memberUid entries. When they disagree, the symptom is not an error message — it is a student who can log in but cannot write to a course share, or one who appears to own another student's files. Finding that before a change is worth more than any feature on the list.

Status

Useful, and still site-admin oriented: it assumes you know your suffix, your bind account and what you are doing. The README is explicit about reading the configuration before running it against a live directory, and that advice is worth taking literally — this tool writes.

There is optional Zimbra provisioning output for sites that run it alongside OpenLDAP.

The source, the issues and the history are in the repository.

View on GitHub →