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