bodsch.users
Ansible Rolle: users
Rolle zur Verwaltung mehrerer Benutzer auf Linux.
Fügen Sie Benutzer hinzu, ändern Sie Passwörter, sperren/entsperren Sie Benutzerkonten, verwalten Sie den sudo-Zugriff (pro Benutzer) und fügen Sie SSH-Key(s) für die Authentifizierung mit SSH-Key hinzu.
Betriebssysteme
Getestet auf
- Arch Linux
- Debian-basiert
- Debian 10 / 11 / 12
- Ubuntu 20.04 / 22.04
RedHat-basierte Systeme werden nicht mehr offiziell unterstützt! Funktioniert möglicherweise, muss aber nicht.
So generieren Sie ein Passwort
- auf Ubuntu - Installieren Sie das Paket
whois
mkpasswd --method=SHA-512
- auf RedHat - Verwenden Sie Python
python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'
# MD5 (VERALTET!)
openssl passwd -1 -salt 5RPVAd klartext-passwort43
# SHA-256
openssl passwd -5 -salt 5RPVAd klartext-passwort43
# SHA-512
openssl passwd -6 -salt 5RPVAd klartext-passwort43
# Blowfish
python -c 'import bcrypt; print(bcrypt.hashpw(b"klartext-passwort43", bcrypt.gensalt(rounds=15)).decode("ascii"))'
Standardeinstellungen
---
users_output: "compact" # oder: 'full' für mehr Ausgabe
users: []
Benutzereinstellungen
Parameter | Standard | Beschreibung | |
---|---|---|---|
username |
erforderlich | Benutzername - keine Leerzeichen | |
uid |
optional | Der numerische Wert der Benutzer-ID | |
state |
erforderlich | present / absent / lock |
|
password |
optional | sha512-verschlüsseltes Passwort. Wenn nicht gesetzt, wird das Passwort auf ! gesetzt |
|
update_password |
always |
optional | always / on_create .HINWEIS: Bei always wird das Passwort auf den Passwortwert geändert.Wenn Sie always für bestehende Benutzer verwenden, stellen Sie sicher, dass das Passwort gesetzt ist. |
comment |
optional | Vollständiger Name und Abteilung oder Beschreibung der Anwendung (aber Sie sollten dies setzen!) | |
groups |
optional | Komma-getrennte Liste von Gruppen, zu denen der Benutzer hinzugefügt wird (angehängt). Wenn die Gruppe nicht existiert, wird sie auf dem entsprechenden Server erstellt. Dies ist nicht die primäre Gruppe (die primäre Gruppe wird nicht geändert) |
|
shell |
/bin/bash |
optional | Pfad zur Eingabeschale |
authorized_key_directory |
- |
optional | Pfad für zentral gespeicherten SSH-Schlüssel z.B. /etc/ssh/authorized_key |
authorized_keys |
[] |
optional | Eine Liste mit autorisierten Schlüsseln. Gespeichert in $HOME/.ssh/authorized_keys oder unter authorized_key_directory |
ssh_keys |
optional | Wörterbuch mit verschiedenen SSH-Schlüsseln. Sie können dies verwenden, um statische öffentliche oder private Schlüsseldateien bereitzustellen. | |
sudo |
{} |
optional | Ein Wörterbuch mit sudo-Einstellungen. (siehe unten) |
remove |
False |
optional | Dies betrifft nur state=absent , es versucht, Verzeichnisse zu entfernen, die mit dem Benutzer verbunden sind. |
ssh_keys
Wenn Sie statische öffentliche oder private SSH-Schlüssel über Ansible bereitstellen müssen, können Sie diese hier definieren. Die Daten können als Klartext oder als base64-codierte Strings verfügbar sein.
users:
- username: foo-bar
ssh_keys:
id_ed25519: |
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAXYpRZio
BDw+o+oic9MwrqAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIK6jjUFopFO9kV4G
WIkR0gNzpoaOgpwFFRLWKcpeG8THAAAAkHtt03xiYPgAEc7T0nEtnCjt67sN6msNP2Nxgv
+Fd8BANdzbYFzsMoQ45Ldja2gsOt1KAecwO+xY+5BRCA0huWCTHwbd7Y6BqCKLEpHwXWG1
UI4GzDt6+hD1LZSbYTFpi+LhiQ1PlrmG5eRQOXzlEAY6AziN7gajlQRsOxkmTW98DuVzWw
S/KVZZ/wwzyaIPYQ==
-----END OPENSSH PRIVATE KEY-----
id_ed25519.pub: ssh-ed25519 AAAAC3NzaC1lYDI1NTE5AAAAIL+LmfwIhn8kxZcyusbcITtwsAOnI1I/d/c40XnGBg7J bar.foo <[email protected]>
id_rsa: "LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KaCtmZVZZQVg1Sm1EM2QvdEx6UkxUbTBmUm5CL1NVTDFFQ21jK1gwZ3dLL3UvUG4zU2RJOE0zVk9aMUJkUWJNNjkrU2oyYgozLzRRN1NsbUZObEVXaG43M2VHUFhTTTBLU1VUcGk5bFk0dVJndEhDdGYrejhsaVNBNFlvRlJKcTcxYi9JWHZ1SkUxVks1Ck5jQ3dSUFZRSGRUc0VEdG52M09lNDdFbW9XWFgzOUdFazRoQWNqV1BoeVRvZWFvSWNYTXZDbkVTMXp6SS8wQ2RsVUo2TGEKU1p4Njk2aFE0a1dPZ2k5UE0vVERHdytBRDZGbGVNTUtTK0FtalNuWHBYTjMwTzVacTFuMEhEWGd4ak55VVZ4SjdEVUNDMgpwZ2p1RHpPdDF3QUFBOGhNeC9oMlRNZjRkZ0FBQUFkemMyZ3Rjbk5oQUFBQkFRQytDRGdQYzllZnhvcWZQKzNoc0FBOFMvCm1Kb04wR2xwc2haNEZNNnVrWFdWc3RTQS9ONmJPSDU5NVZnQmZrbVlQZDMrMHZORXRPYlI5R2NIOUpRdlVRS1p6NWZTREEKcis3OCtmZEowand6ZFU1blVGMUJzenIzNUtQWnZmL2hEdEtXWVUyVVJhR2Z2ZDRZOWRJelFwSlJPbUwyVmppNUdDMGNLMQovN1B5V0pJRGhpZ1ZFbXJ2VnY4aGUrNGtUVlVyazF3TEJFOVZBZDFPd1FPMmUvYzU3anNTYWhaZGZmMFlTVGlFQnlOWStICklqNTlnck8ydldDa3JSTTd1Vk9sTUEzSnQ2ZDVkSDE4RDN5Vk5HWHB5dnVROUxXWUxWUGdvMlVUV0lVV3VHR2djVXNydVYKVm8xYm1HUTBsSnlQTkpVUmdUTnJ4dGd0emdEdUdoWWZGMzU2QVJkaHVUeXhBQUFBZ1FDT2hlMHF1bzhlakphalM0dUxydApqTkg2b1FNaWF3NGxMMkJtTWlMc3I5STdVWE5BMXZhRzl6R2J6Ym5wS3pSV0VKMWIxRExUWm42bnRMR2l1UVlCaGNuRUx5CnF3aVdrUDlqNnFZd2NtNlJ3b2tkTGMzWHkvdzdrZXluUVU5SlR4YlVtSGpLQnNKRW9YaGUyS1JVNlhDK0pLYm16cHF3M1QKbkpKcXdodVFNWjBXN3lBMzdheWtYenpLejV2Qlpac1pvekY4MEpXc3FITHBXMTh4ZCtoM1JxWDB3c1dUcjVLcUxWdEN6bgp0UzBKYTl6TXppTWp6S2Z2RDRlT0wwR3NWTXdFc042SUM1bGhkYjdBcGRHTkwyVVpzQUFBQ0JBTVZIc2EwaEFTYW01MVdUCkJkRW5HNjNJZkhwcjhFWjFBQUFBRDJKdlpITmphRUJrWVhKclkybDBlUUVDQXc9PQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K"
authorized_keys
Um authorized_keys
bereitzustellen, wird ein entsprechendes .ssh
-Verzeichnis im $HOME
erstellt und dort gespeichert.
Wenn es gewünscht ist, dass die Benutzer ihre SSH-Schlüssel nicht selbst verwalten, können sie auch in einem nicht zugänglichen Verzeichnis (z. B. /etc/ssh/authorized_key
) gespeichert werden.
Der sshd muss jedoch vorher entsprechend konfiguriert werden!
Der folgende Konfigurationszeile wäre sinnvoll: AuthorizedKeysFile: /etc/ssh/authorized_keys/%u .ssh/authorized_keys
.
sudo
Eine einfache sudo-Regel kann für jeden Benutzer konfiguriert werden. Der Schwerpunkt liegt auf einfach!
Die folgende Konfiguration
- username: foo-bar
sudo:
nopassword: true
runas: "ALL"
commands: ALL
würde zu dieser sudoers-Datei führen
foo-bar ALL=(ALL)NOPASSWD: ALL
Die folgenden Konfigurationsoptionen stehen zur Verfügung:
Parameter | Standard | Typ | Beschreibung |
---|---|---|---|
nopassword |
False |
bool |
Ob ein Passwort erforderlich ist, um den sudo-Befehl auszuführen. |
runas |
- |
string |
Geben Sie an, als welcher Benutzer die Befehl(e) ausgeführt werden. |
commands |
- |
string oder list |
Die durch die sudoers-Regel erlaubten Befehle. Mehrere können durch Übergeben einer Liste von Befehlen hinzugefügt werden. |
group |
- |
string |
Der Name der Gruppe für die sudoers-Regel. |
Verwendung
siehe Molekül-Tests
- hosts: all
any_errors_fatal: false
vars:
users:
- username: foo-bar
update_password: always
comment: Foo Bar
# password: foo-barbar
shell: /bin/bash
ssh_keys:
id_ed25519: |
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAXYpRZio
BDw+o+oic9MwrqAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIK6jjUFopFO9kV4G
WIkR0gNzpoaOgpwFFRLWKcpeG8THAAAAkHtt03xiYPgAEc7T0nEtnCjt67sN6msNP2Nxgv
+Fd8BANdzbYFzsMoQ45Ldja2gsOt1KAecwO+xY+5BRCA0huWCTHwbd7Y6BqCKLEpHwXWG1
UI4GzDt6+hD1LZSbYTFpi+LhiQ1PlrmG5eRQOXzlEAY6AziN7gajlQRsOxkmTW98DuVzWw
S/KVZZ/wwzyaIPYQ==
-----END OPENSSH PRIVATE KEY-----
id_ed25519.pub: ssh-ed25519 AAAAC3NzaC1lYDI1NTE5AAAAIL+LmfwIhn8kxZcyusbcITtwsAOnI1I/d/c40XnGBg7J bar.foo <[email protected]>
id_rsa: "LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KaCtmZVZZQVg1Sm1EM2QvdEx6UkxUbTBmUm5CL1NVTDFFQ21jK1gwZ3dLL3UvUG4zU2RJOE0zVk9aMUJkUWJNNjkrU2oyYgozLzRRN1NsbUZObEVXaG43M2VHUFhTTTBLU1VUcGk5bFk0dVJndEhDdGYrejhsaVNBNFlvRlJKcTcxYi9JWHZ1SkUxVks1Ck5jQ3dSUFZRSGRUc0VEdG52M09lNDdFbW9XWFgzOUdFazRoQWNqV1BoeVRvZWFvSWNYTXZDbkVTMXp6SS8wQ2RsVUo2TGEKU1p4Njk2aFE0a1dPZ2k5UE0vVERHdytBRDZGbGVNTUtTK0FtalNuWHBYTjMwTzVacTFuMEhEWGd4ak55VVZ4SjdEVUNDMgpwZ2p1RHpPdDF3QUFBOGhNeC9oMlRNZjRkZ0FBQUFkemMyZ3Rjbk5oQUFBQkFRQytDRGdQYzllZnhvcWZQKzNoc0FBOFMvCm1Kb04wR2xwc2haNEZNNnVrWFdWc3RTQS9ONmJPSDU5NVZnQmZrbVlQZDMrMHZORXRPYlI5R2NIOUpRdlVRS1p6NWZTREEKcis3OCtmZEowand6ZFU1blVGMUJzenIzNUtQWnZmL2hEdEtXWVUyVVJhR2Z2ZDRZOWRJelFwSlJPbUwyVmppNUdDMGNLMQovN1B5V0pJRGhpZ1ZFbXJ2VnY4aGUrNGtUVlVyazF3TEJFOVZBZDFPd1FPMmUvYzU3anNTYWhaZGZmMFlTVGlFQnlOWStICklqNTlnck8ydldDa3JSTTd1Vk9sTUEzSnQ2ZDVkSDE4RDN5Vk5HWHB5dnVROUxXWUxWUGdvMlVUV0lVV3VHR2djVXNydVYKVm8xYm1HUTBsSnlQTkpVUmdUTnJ4dGd0emdEdUdoWWZGMzU2QVJkaHVUeXhBQUFBZ1FDT2hlMHF1bzhlakphalM0dUxydApqTkg2b1FNaWF3NGxMMkJtTWlMc3I5STdVWE5BMXZhRzl6R2J6Ym5wS3pSV0VKMWIxRExUWm42bnRMR2l1UVlCaGNuRUx5CnF3aVdrUDlqNnFZd2NtNlJ3b2tkTGMzWHkvdzdrZXluUVU5SlR4YlVtSGpLQnNKRW9YaGUyS1JVNlhDK0pLYm16cHF3M1QKbkpKcXdodVFNWjBXN3lBMzdheWtYenpLejV2Qlpac1pvekY4MEpXc3FITHBXMTh4ZCtoM1JxWDB3c1dUcjVLcUxWdEN6bgp0UzBKYTl6TXppTWp6S2Z2RDRlT0wwR3NWTXdFc042SUM1bGhkYjdBcGRHTkwyVVpzQUFBQ0JBTVZIc2EwaEFTYW01MVdUCkJkRW5HNjNJZkhwcjhFWjFBQUFBRDJKdlpITmphRUJrWVhKclkybDBlUUVDQXc9PQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K"
id_rsa.pub: "c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCQTVWZ0Jma21ZUGQzKzB2TkV0T2JSOUdjSDlKUXZVUUtaejVmU0RBTzJlL2M1N2pzU2FoWmRmZjBZU1RpRUJ5TlkrSEpPaGRlbGMzZlE3bG1yV2ZRY05lREdNM0pSWEVuc05RSUxhbUNPNFBNNjNYIGJhckBkZm9vYmFyLmNvbQo="
sudo:
nopassword: true
runas: "ALL"
commands:
- ALL
- /bin/systemctl restart my-service
- /bin/systemctl reload my-service
group: wheel
state: present
roles:
- role: ansible-users
Autor und Lizenz
- Bodo Schulz
Lizenz
KOSTENLOSE SOFTWARE, HELL JA!
ansible-galaxy install bodsch.users