PAMMySQLTools: libnss-mysql und pam-mysql user über die shell verwalten

Durch meine Arbeit stand ich vor dem Problem, dass wir Nutzer Zentral über MySQL authentifizieren wollten. Dies ist an sich kein Problem dank libnss-mysql und pam-mysql, doch leider mangelt es an Programmen um die Nutzer sinnvoll zu verwalten.

Deshalb habe ich nun Tools dafür geschrieben die die Linuxprogramme user{add,mod,del} und group{add,mod,del} imitieren und diese als PAMMySQLTools auf PyPI veröffentlicht.

Installation

Dank pip muss man nur den Befehl

pip install pammysqltools

bzw

pip3 install pammysqltools

ausführen um die Tools zu installieren. Dadurch, werden folgende Programme installiert:

  • myuseradd
  • myusermod
  • myuserdel
  • mygroupadd
  • mygroupmod
  • mygroupdel
  • myimportusers
  • myimportgroups

Die myuser* und mygroup* Tools sind größtenteils nach dem Vorbild der Linuxprogramme aufgebaut und verhalten sich größtenteils gleich.

Die Tools myimportusers und myimportgroups importieren die Benutzer aus der /etc/passwd und /etc/groups bzw. /etc/shadow und /etc/gshadow.

Für eine Übersicht die Argumente kann einfach --help angehangen werden.

Beispiel: myuseradd

$ myuseradd --help
Usage: myuseradd [OPTIONS] LOGIN

Options:
  -b, --basedir BASE_DIR          base directory for the home directory of the
                                  new account
  -c, --comment COMMENT           GECOS field of the new account
  -d, --home-dir HOME_DIR         home directory of the new account
  -e, --expiredate EXPIRE_DATE    expiration date of the new account
  -f, --inactive INACTIVE         password inactivity period of the new
                                  account
  -g, --gid GROUP                 name or ID of the primary group of the new
                                  account
  -G, --groups GROUPS             list of supplementary groups of the new
                                  account
  -k, --skel SKEL_DIR             use this alternative skeleton directory
  -K, --key KEY=VALUE             override /etc/login.defs defaults
  -M, --no-create-home / -m, --create-home
                                  do not create the user's home directory
  -U, --no-user-group / -N, --user-group
                                  do not create a group with the same name as
                                  the user
  -o, --non-unique                allow to create users with duplicate (non-
                                  unique) UID
  -p, --password PASSWORD         encrypted password of the new account
  -r, --system                    create a system account
  -s, --shell SHELL               login shell of the new account
  -u, --uid UID                   user ID of the new account
  --config CONF_PATH              path to the config file for this tool
  --help                          Show this message and exit.

Konfiguration

Um die Verbindung zur Datenbank und die Benennung der Tabellen und Spalten anzupassen muss die Datein /etc/pam_mysql_manager.conf nach diesem Schema angelegt werden. Alternativ kann der Pfad zur Konfigurationsdateien auch mit dem argument --config übergeben werden. Für alle Optionen die hierbei nicht angegeben werden, sind die Werte in der Beispieldatei der Defaultwert.

Sobald alles eingestellt wurde kann es los gehen.

Beispiele

Benutzer anlegen:

$ myuseradd testuser

Shell ändern:

$ myusermod -s /bin/zsh testuser

Gruppen ohne passwörter importieren:

$ mygroupimport -i