Bei der Anmeldung am System greifen Programme wie
		login oder gdm3 über eine Bibliothek namens
		PAM
		auf die Benutzer- und Gruppen-Datenbanken zu. In größeren
		Netzwerken verwaltet man diese Datenbanken gerne zentral in einem
		LDAP-Verzeichnis und realisiert
		SSO über Kerberos.
Dem Administrator stehen folgende Werkzeuge zur Verfügung:
| adduser | User [Group] | Legt neues Benutzerkonto mit Standardwerten aus /etc/adduser.conf an | |
| oder ordnet Benutzer weiteren Gruppen zu | |||
| addgroup | Group | Legt neue Benutzergruppe an | |
| useradd | User | Erzeugt nur den Eintrag in der Passwortdatenbank | |
| usermod | User | Ändert einzelne Attribute eines Benutzerkontos | |
| userdel | User | Löscht ein Benutzerkonto | 
Der Benutzer selbst kann nur bestimmte Attribute seines Kontos ändern:
| passwd | [User] | Ändert das eigene Passwort | |
| chsh | [User] | Ändert die Login-Shell | |
| chfn | [User] | Ändert Vor- und Nachname im Gecos Feld | 
Traditionell verwaltet Unix Benutzer in der Textdatei
		/etc/passwd. Ursprünglich wurde dort auch
		ein Streuwert des Passworts gespeichert. Da alle Benutzer die
		Datei lesen können, steht in dieser Spalte nur noch
		ein x
 oder ein !
 für gesperrte Konten.
		Das Paket base-passwd reserviert die kleinen
		Nummern für traditionell fest zugeordnete Rollen. Daemonen erhalten
		UIDs
		ab 100 und Menschen ab 1000.
| passwd | posixAccount | Beispiel | Beschreibung | 
|---|---|---|---|
| pw_user | uid | phrank | Benutzername | 
| pw_passwd | userPassword | x | Streuwert des Passworts | 
| pw_uid | uidNumber | 1000 | Numerische Identifikation des Benutzers | 
| pw_gid | gidNumber | 1000 | Numerische Identifikation der primäre Gruppe | 
| pw_gecos | cn | Frank Hoffmann | Vor- und Nachname | 
| pw_dir | homeDirectory | /home/phrank | Benutzerverzeichnis | 
| pw_shell | loginShell | /bin/bash | Befehlsinterpreter | 
Die Textdatei /etc/group listet Gruppen und
		deren Mitglieder auf. Normalerweise ist die Zuordnung
		festgelegt. Der Administrator kanne einer Gruppe aber auch ein
		Passwort geben, mit dem Nicht-Mitglieder für die Dauer einer
		Sitzung der Gruppe beitreten können. Die Streuwerte der Passwörter
		selbst sind dann in /etc/gshadow ausgelagert.
| group | posixGroup | Beispiel | Beschreibung | 
|---|---|---|---|
| gr_name | cn | sudo | Gruppenname | 
| gr_passwd | userPassword | x | Streuwert des Passworts | 
| gr_gid | gidNumber | 27 | Numerische Gruppen-ID | 
| gr_mem | memberUid | phrank | Benutzerliste | 
Um Einbrechern das knacken von Passwörtern zu erschweren,
		werden die Streuwerte der Passwörter in der nur vom Administrator
		lesbaren Datei /etc/shadow gespeichert oder von
		einem Dienst wie Kerberos verwaltet.
| spwd | shadowAccount | Beispiel | Beschreibung | 
|---|---|---|---|
| sp_namp | uid | phrank | Benutzername | 
| sp_pwdp | userPassword | $6$9Ah… | Streuwert des Passworts | 
| sp_lastchg | shadowLastChange | 17370 | Epochen-Tag der letzten Änderung | 
| sp_min | shadowMin | 0 | Nächste Änderung frühestens | 
| sp_max | shadowMax | 99999 | Nächste Änderung spätestens | 
| sp_warn | shadowWarning | 7 | Tage bis Ablaufwarnung | 
| sp_inact | shadowInactive | Tage bis Kontosperrung | |
| sp_expire | shadowExpire | Datum der Kontosperrung | |
| sp_flag | shadowFlag | Reserviert | 
Mit diesen Mitteln lassen sich häufige Änderungen des Passworts erzwingen und Konten zu einem Stichtag sperren, zum Beispiel, wenn ein Mitarbeiter die Firma verlässt. Zeiteinheiten werden in Tagen seit Beginn der Unix-Epoche berechnet.
| Schema | Salz | Streuwert | Algorithmus | POSIX | GNU | BSD | 
| 2 | 8 | DES | ☑ | ☑ | ☑ | |
| _ | ? | ? | BSD | ☐ | ☐ | ☑ | 
| 1 | 16 | 22 | MD5 | ☐ | ☑ | ☑ | 
| 2 | 16 | ? | bcrypt | ☐ | ☐ | ☑ | 
| 3 | ? | NTHASH | ☐ | ☐ | ☑ | |
| 5 | 16 | 43 | SHA-256 | ☐ | ☑ | ☑ | 
| 6 | 16 | 86 | SHA-512 | ☐ | ☑ | ☑ | 
| sha1 | 40000 | 38 | PBKDF | ☐ | ☐ | ☑ | 
Der NSS
		assoziiert die verfügbaren Datenbanken mit einer oder mehreren Quellen
		(Services). Im einfachsten Fall sind es
		die oben beschriebenen Textdateien, es können aber auch zentralisierte
		Dienste angezapft werden. Die Implementierung befindet sich in einer
		Bibliothek namens /lib/x86_64-linux-gnu/libnss_Service.so.
| Datenbank | Datei | Beschreibung | |
|---|---|---|---|
| passwd | /etc/passwd | Benutzerliste | |
| group | /etc/group | Gruppen-Mitglieder | |
| shadow | /etc/shadow | Streuwerte der Passwörter der Benutzer | |
| gshadow | /etc/gshadow | Streuwerte der Passwörter von Gruppen | |
| aliases | /etc/aliases | Generische Elektropost-Adressen | |
| hosts | /etc/hosts | Netzwerk-Adressen zu Hostnamen | |
| networks | /etc/networks | Registrierte Netzwerke | |
| services | /etc/services | Namen zu Kanalnummern | |
| protocols | /etc/protocols | Transport-Protokolle | |
| ethers | /etc/ethers | Statische MAC- Adressen. | |
| rpc | /etc/rpc | Portmapper Daemon | |
| publickey | /etc/publickey | Schlüssel für Sun-RPC | |
| netgroup | /etc/netgroup | NIS Netzgruppen | 
Für die Datenbanken passwd, group und
		shadow stehen folgende Service-Module zur Verfügung:
filescompatnis, nisplushesiodsssldapwinbindsystemdroot) und dynamisch in Unit-Dateien angelete Benutzer (DynamicUser=User)mymachinessystemd-nspwan)Abfragen der konfigurierten Datenbanken:
getent passwd User phrank:x:1000:1000:Frank,,,:/home/phrank:/bin/bash
Jedes Programm, das Benutzer via
		PAM
		authentifizieren möchte, legt unter /etc/pam.d
		eine Datei ab, die regelt, wann welche Module befragt werden.
		Die Konfiguration hat 4 Spalten:
typeauth: Passwort prüfenaccount: Zugangsberechtigung prüfensession: Sitzung initialisierenpassword: Passwort ändernflagrequired: Alle Module müssen erfolgreich seinsufficient: Mindestens ein Modul muss erfolgreich seinoptional: Modul darf auch fehlschlagenrequisite: Abbruch beim ersten Fehlerpathargsdebug: Alles protokollierenno_warn: Fehler nicht protokollierenuse_first_pass: Passwort wiederverwendentry_first_pass: Wiederverwenden oder neues Passwort anfordernDie Module selbst liegen unter /lib/x86_64-linux-gnu/security/pam_Module.so.
| Modul | Konfiguration | Beschreibung | |
|---|---|---|---|
| pam_permit.so | Gelingt immer | ||
| pam_deny.so | Versagt immer | ||
| pam_unix.so | /etc/nsswitch.conf | Liest Benutzer- und Passwort-Datenbank | |
| pam_krb5.so | /etc/krb5.conf | Prüft Kerberos-Passwort und erzeugt TGT | |
| pam_ldap.so | /etc/ldap/ldap.conf | Prüft userPassword im LDAP-Verzeichnis | |
| pam_winbind.so | /etc/samba/smb.conf | Verwendet Samba oder Active Directory | |
| pam_sss.so | /etc/sssd.conf | Verwendet die System Security Services | |
| pam_ssh.so | ~/.ssh/id_rsa | Startet den ssh-agent | |
| pam_gnome_keyring.so | Startet den gnome-keyring-daemon | ||
| pam_env.so | /etc/environment | Setzt Umgebungsvariablen | |
| pam_mount.so | /etc/security/pam_mount.conf | Bindet Dateisystem ein | |
| pam_encfs.so | /etc/security/pam_encfs.conf | Bindet verschlüsseltes Verzeichnis ein | |
| pam_fscrypt.so | /etc/fscrypt.conf | Bindet verschlüsseltes Verzeichnis ein | |
| pam_mkhomedir.so | /etc/skel | Erzeugt Benutzerverzeichnis dynamisch | |
| pam_faildelay.so | Verzögert den nächsten Anmeldeversuch | ||
| pam_nologin.so | /etc/nologin | Erlaubt nur noch Anmeldungen von root | |
| pam_issue.so | /etc/issue | Zeigt Anmeldungsinformationen an | |
| pam_motd.so | /etc/motd | Zeigt Motte des Tages an | 
pam-auth-update(8) schaltet interaktiv einzelne Module an- oder aus.
Benutzer in der Gruppe sudo dürfen das gleichnamige
		Kommando verwenden, um nach Eingabe ihres Passworts Befehle mit
		Administrator-Rechten ausführen.
adduser User sudo
Keine gute Idee ist es, ganz auf die Eingabe des Passworts zu verzichten. Das ginge so:
/etc/sudoers# Superuser is omnipotent root ALL=(ALL:ALL) ALL # Members of the sudo group may gain root privileges %sudo ALL=(ALL:ALL) ALL # This user does not need a password. Don't do this! User ALL=NOPASSWD: ALL