# Gestió de les contrasenyes en GNU/Linux

La configuració de la complexitat de contrasenyes en Linux es fa principalment mitjançant el mòdul **PAM (Pluggable Authentication Modules)**, concretament amb `pam_pwquality` (o l'antic `pam_cracklib`).

# 1. Instal·lar `pam_pwquality`

```bash
sudo apt install libpam-pwquality
```

# 2. Configurar `/etc/security/pwquality.conf`

Aquest és el fitxer principal de configuració:

```nano
# Longitud mínima
minlen = 12

# Mínim de dígits
dcredit = -1

# Mínim de majúscules
ucredit = -1

# Mínim de minúscules
lcredit = -1

# Mínim de caràcters especials
ocredit = -1

# Nombre màxim de caràcters repetits consecutius
maxrepeat = 3

# Nombre de caràcters nous respecte l'anterior contrasenya
difok = 5

# Rebutjar contrasenyes que continguin el nom d'usuari
usercheck = 1

# Nombre d'intents abans de fallada
retry = 3
```

Els valors negatius en `dcredit`, `ucredit`, etc. signifiquen **mínim obligatori**. Els positius sumen punts (sistema de crèdits).

# 3. Activar-ho a PAM

Edita `/etc/pam.d/common-password`:

```bash
sudo nano /etc/pam.d/common-password
```

```nano
password requisite pam_pwquality.so retry=3
```

# 4. Historial de contrasenyes

Per evitar reutilitzar contrasenyes antigues, al mateix fitxer PAM:

```nano
password required pam_pwhistory.so remember=5 use_authok
```

# 5. Caducitat de contrasenyes

Amb `chage` per a un usuari concret:

```bash
# Caducitat màxima de 90 dies
sudo chage -M 90 usuari

# Avís 7 dies abans
sudo chage -W 7 usuari

# Veure configuració actual
sudo chage -l usuari
```

O de forma global a `/etc/login.defs`:

```ini
PASS_MAX_DAYS   90
PASS_MIN_DAYS   1
PASS_WARN_AGE   7
```

# 6. Resum

| Paràmetre | Fitxer | Funció |
|---|----|---|
| `minlen`, `dcredit`... | `/etc/security/pwquality.conf` | Complexitat |
| `pam_pwhistory` | `/etc/pam.d/...` | Historial |
| `PASS_MAX_DAYS` | `/etc/login.defs` | Caducitat |
| `chage` | Comanda | Caducitat per usuari |

#### Versions d'aquest document

+ HTML - [contrasenyes.html](https://proferamon.com/tic/contrasenyes.html)
+ PDF - [contrasenyes.pdf](https://proferamon.com/tic/docs/contrasenyes.pdf)
+ ODT - [contrasenyes.odt](https://proferamon.com/tic/odt/contrasenyes.odt)
+ MD - [contrasenyes.md](https://proferamon.com/tic/md/contrasenyes.md)

[Domini Públic (CC0)](https://creativecommons.org/publicdomain/zero/1.0/deed.ca)

