SQL erweitert, neu: ansible, Linux umd passwd und shadows erweitert

This commit is contained in:
Sven Riwoldt
2026-08-19 13:50:00 +02:00
parent 2a8733f8f8
commit d696ff35e7
3 changed files with 1226 additions and 11 deletions
+488 -2
View File
@@ -346,7 +346,7 @@ Diese Variante ist oft einfacher und ebenso effizient.
**MIB wird nicht geladen**
- MIB liegt nicht in einem durchsuchten Verzeichnis. Prüfen mit `net-snmp-config --default-mibdirs`; übliche Pfade sind `~/.snmp/mibs`, `/usr/share/snmp/mibs`.
- MIB liegt nicht in einem durchsuchten Verzeichnis. Prüfen mit `net-snmp-config --default-mibdirs`; übliche Pfade sind `~/.snmp/mibs`, <mark>`/usr/share/snmp/mibs</mark>`.
- MIB nicht per `-m` oder Konfiguration aktiviert. Test: `snmpwalk -m ALL ...` oder in `~/.snmp/snmp.conf` bzw. `/etc/snmp/snmp.conf`: `mibs +MEIN-MIB`.
- net-snmp lädt standardmäßig nur ein Minimalset. `mibs :` deaktiviert alles.
@@ -529,4 +529,490 @@ openssl req -new -days 1095 -key dlsea3tim01.server.key -out dlsea3tim01.server.
##### Zertifikatsrequest ansehen
openssl req -text -in dlsea3tim01.server.csr|less
openssl req -text -in dlsea3tim01.server.csr|less
Bei Apache/mod_ssl ist der Unterschied:
- **`SSLCertificateFile`** → enthält das **öffentliche Zertifikat** des Servers. Darin stecken u. a. der öffentliche Schlüssel, Domainname und die Signatur der CA. Dieses Zertifikat wird beim TLS-Handshake an den Client geschickt.
- **`SSLCertificateKeyFile`** → enthält den dazugehörigen **privaten Schlüssel**. Er bleibt ausschließlich auf dem Server und darf **niemals veröffentlicht** werden.
# SCP
```bash
scp [Optionen] [Quelle] [Ziel]
```
### Optionen
Dies sind optionale Flags, die das Verhalten des SCP-Befehls verändern. Sie können verschiedene Optionen verwenden, um den Übertragungsprozess individuell zu gestalten. Hier sind einige gängige Optionen:
**-r:** Kopiert Verzeichnisse und deren Inhalte rekursiv.
**-p:** Behält die Berechtigungen, Zeitstempel und Modi der Originaldatei bei.
–**P**: Gibt die Portnummer für die SSH-Verbindung an.
–**i**: Gibt die private Schlüsseldatei für die SSH-Authentifizierung an.
**-C:** Verwenden Sie die Komprimierung, um die Datenübertragung zu beschleunigen.
**-l:** Begrenzen Sie die für die Übertragung verwendete Bandbreite (in Kbit/s).
**-v:** Ausführlicher Modus – zeigt Debugging-Meldungen während der Übertragung an.
**-o:** Übergibt eine Option an den SSH-Client. Sie kann verwendet werden, um die strenge Prüfung des Hostschlüssels zu deaktivieren.
# Linux: `/etc/passwd` und `/etc/shadow`
Unter Linux werden Benutzerinformationen hauptsächlich in den Dateien `/etc/passwd` und `/etc/shadow` gespeichert.
- `/etc/passwd` enthält allgemeine Informationen über Benutzerkonten.
- `/etc/shadow` enthält sensible Informationen zur Passwort- und Accountverwaltung.
---
## 1. `/etc/passwd`
Die Datei `/etc/passwd` enthält pro Benutzer eine Zeile.
### Beispiel
```text
max:x:1001:1001:Max Mustermann:/home/max:/bin/bash
```
Die einzelnen Felder werden durch einen Doppelpunkt (`:`) getrennt.
```text
max:x:1001:1001:Max Mustermann:/home/max:/bin/bash
 │  │   │    │         │           │          │
 │  │   │    │         │           │          └─ Login-Shell
 │  │   │    │         │           └─ Home-Verzeichnis
 │  │   │    │         └─ Kommentar / GECOS
 │  │   │    └─ primäre GID
 │  │   └─ UID
 │  └─ Passwort-Platzhalter
 └─ Benutzername
```
### Aufbau
| Feld | Beispiel | Bedeutung |
|---|---|---|
| 1 | `max` | Benutzername |
| 2 | `x` | Passwort-Platzhalter |
| 3 | `1001` | UID – User ID |
| 4 | `1001` | GID – primäre Group ID |
| 5 | `Max Mustermann` | Kommentar / GECOS |
| 6 | `/home/max` | Home-Verzeichnis |
| 7 | `/bin/bash` | Login-Shell |
### Feld 1 – Benutzername
```text
max
```
Der eindeutige Name, unter dem der Benutzer im System bekannt ist.
---
### Feld 2 – Passwort-Platzhalter
```text
x
```
Das `x` bedeutet, dass sich die eigentlichen Passwortinformationen in `/etc/shadow` befinden.
Historisch konnten Passwort-Hashes direkt in `/etc/passwd` gespeichert werden. Das wäre heute problematisch, da `/etc/passwd` normalerweise für alle Benutzer lesbar sein muss.
---
### Feld 3 – UID
```text
1001
```
Die **UID (User ID)** ist die numerische Kennung des Benutzers.
Linux arbeitet intern an vielen Stellen mit der UID und nicht mit dem Benutzernamen.
Beispielsweise besitzt `root` normalerweise die UID:
```text
0
```
---
### Feld 4 – GID
```text
1001
```
Die **GID (Group ID)** gibt die primäre Gruppe des Benutzers an.
Weitere Gruppenzugehörigkeiten werden normalerweise über `/etc/group` bzw. entsprechende Benutzerverwaltungsdienste bestimmt.
---
### Feld 5 – GECOS / Kommentar
```text
Max Mustermann
```
Dieses Feld kann zusätzliche Informationen über den Benutzer enthalten, beispielsweise:
- vollständiger Name
- Raumnummer
- Telefonnummer
- sonstige Informationen
---
### Feld 6 – Home-Verzeichnis
```text
/home/max
```
Das Home-Verzeichnis des Benutzers.
Nach einem normalen Login befindet sich der Benutzer üblicherweise in diesem Verzeichnis.
---
### Feld 7 – Login-Shell
```text
/bin/bash
```
Die Shell, die nach einem Login gestartet werden soll.
Beispiele:
```text
/bin/bash
/bin/sh
/bin/zsh
```
Bei Systemkonten findet man häufig auch:
```text
/usr/sbin/nologin
```
oder:
```text
/bin/false
```
Damit soll normalerweise ein interaktiver Login verhindert werden.
---
# 2. `/etc/shadow`
Die Datei `/etc/shadow` enthält die sensiblen Passwort- und Ablaufinformationen eines Benutzers.
Sie ist deshalb im Gegensatz zu `/etc/passwd` normalerweise nur für `root` bzw. entsprechend privilegierte Prozesse lesbar.
### Beispiel
```text
max:$6$...:20680:0:99999:7:::
```
Eine Zeile besteht aus **9 Feldern**:
```text
max:$6$...:20680:0:99999:7:::
 │      │      │   │    │   │ │ │ │
 │      │      │   │    │   │ │ │ └─ reserviert
 │      │      │   │    │   │ │ └─ Account-Ablauf
 │      │      │   │    │   │ └─ Inaktivität
 │      │      │   │    │   └─ Warnzeit
 │      │      │   │    └─ maximales Passwortalter
 │      │      │   └─ minimales Passwortalter
 │      │      └─ letzte Passwortänderung
 │      └─ Passwort-Hash / Passwortstatus
 └─ Benutzername
```
## Aufbau
| Feld | Bedeutung |
|---|---|
| 1 | Benutzername |
| 2 | Passwort-Hash / Passwortstatus |
| 3 | Letzte Passwortänderung |
| 4 | Minimales Passwortalter |
| 5 | Maximales Passwortalter |
| 6 | Warnzeit vor Passwortablauf |
| 7 | Inaktivitätszeit |
| 8 | Ablaufdatum des Accounts |
| 9 | Reserviert |
---
## 3. Benutzername
Das erste Feld muss zum entsprechenden Benutzerkonto passen.
Beispiel:
```text
max
```
Damit können die Informationen aus `/etc/passwd` und `/etc/shadow` demselben Benutzer zugeordnet werden.
---
## 4. Passwort-Hash / Passwortstatus
Das zweite Feld ist besonders wichtig.
Ein Eintrag könnte beispielsweise folgendermaßen aussehen:
```text
$6$salt$hash
```
Dabei steht `$6$` bei klassischen `crypt`-Passwörtern für **SHA-512**.
Auf modernen Linux-Systemen können auch andere Verfahren eingesetzt werden, beispielsweise **yescrypt**, das häufig an einem Präfix wie `$y$` erkennbar ist.
Das Passwort selbst wird nicht gespeichert. Stattdessen wird ein daraus berechneter Hash gespeichert.
---
## 5. Besondere Werte im Passwortfeld
Das zweite Feld kann auch Werte enthalten, die keinen gültigen Passwort-Hash darstellen.
### Übersicht
| Eintrag | Typische Bedeutung |
|---|---|
| `$6$...` | Passwort-Hash, z. B. SHA-512 |
| `$y$...` | Passwort-Hash, z. B. yescrypt |
| `!$6$...` | Passwort gesperrt, ursprünglicher Hash noch vorhanden |
| `!!` | Kein verwendbares Passwort gesetzt / Passwort-Login gesperrt |
| `*` | Passwort-Authentifizierung nicht möglich |
| leer | Potenziell kein Passwort erforderlich – sicherheitskritisch |
---
# 6. Was bedeutet `!!`?
Beispiel:
```text
max:!!:20680:0:99999:7:::
```
Hier steht im zweiten Feld:
```text
!!
```
`!!` ist **kein gültiger Passwort-Hash**.
Es bedeutet typischerweise:
> Für diesen Benutzer ist kein verwendbares lokales Passwort gesetzt. Eine Authentifizierung über dieses Passwortfeld ist daher nicht möglich.
Das sieht man beispielsweise bei neu angelegten oder bewusst für Passwort-Logins gesperrten Accounts.
Wichtig ist dabei:
**Ein gesperrtes Passwort ist nicht automatisch dasselbe wie ein vollständig gesperrter Benutzeraccount.**
Abhängig von der Systemkonfiguration könnten andere Authentifizierungsverfahren weiterhin funktionieren, beispielsweise:
- SSH Public Keys
- Kerberos
- LDAP / zentrale Authentifizierung
- SSO
- andere PAM-basierte Verfahren
Vereinfacht:
```text
max:!!:20680:0:99999:7:::
    ^^
    │
    └── kein gültiger Passwort-Hash
        → lokale Passwortauthentifizierung nicht möglich
```
---
# 7. Passwortalter und Ablauf
Die restlichen Felder von `/etc/shadow` steuern unter anderem die Gültigkeitsdauer eines Passworts.
Beispiel:
```text
max:$6$...:20680:0:99999:7:::
```
Hier bedeuten die Werte:
```text
20680 : 0 : 99999 : 7
  │      │     │     │
  │      │     │     └─ Warnung vor Ablauf
  │      │     └─ maximales Passwortalter
  │      └─ minimales Passwortalter
  └─ letzte Passwortänderung
```
Die Datumswerte werden grundsätzlich als Anzahl der **Tage seit dem 01.01.1970** angegeben.
---
# 8. Warum gibt es zwei Dateien?
Der Grund für die Trennung ist hauptsächlich die Sicherheit.
`/etc/passwd` muss von vielen Programmen gelesen werden können.
Beispielsweise müssen Programme herausfinden können:
```text
UID 1001 → Benutzer max
```
Daher ist `/etc/passwd` normalerweise für alle Benutzer lesbar.
Passwort-Hashes sollen dagegen geschützt werden.
Deshalb wurden sie in die stärker geschützte Datei `/etc/shadow` ausgelagert.
---
# 9. Zusammenhang von `/etc/passwd` und `/etc/shadow`
Für denselben Benutzer könnten die Einträge beispielsweise so aussehen:
### `/etc/passwd`
```text
max:x:1001:1001:Max Mustermann:/home/max:/bin/bash
```
### `/etc/shadow`
```text
max:!!:20680:0:99999:7:::
```
Beide Einträge gehören über den Benutzernamen `max` zusammen.
Zusammengefasst:
```text
/etc/passwd
     │
     ├── Benutzername
     ├── UID
     ├── GID
     ├── Home-Verzeichnis
     └── Login-Shell
/etc/shadow
     │
     ├── Benutzername
     ├── Passwort-Hash / Passwortstatus
     ├── Passwortalter
     ├── Warnzeit
     └── Account-Ablauf
```
## Merksatz
> **`/etc/passwd` beschreibt den Benutzer, `/etc/shadow` beschreibt vor allem seinen Passwort- und Ablaufstatus.**