# 3.3 - Permissions, UID, GID et ACL

Les erreurs de permissions empêchent souvent Immich ou PostgreSQL de démarrer. Identifier les UID et GID réellement utilisés avant toute correction.

## Valeurs courantes

| Élément | Compte courant |
|---|---|
| Application Immich | `apps`, UID 568, GID 568 |
| PostgreSQL de l'application | UID 999 selon le guide TrueNAS actuel |

Ces valeurs sont des références et non une raison d'appliquer un changement récursif sans vérification.

## Identifier les utilisateurs des conteneurs

```bash
sudo docker inspect NOM_CONTENEUR_IMMICH --format '{{.Config.User}}'
sudo docker exec NOM_CONTENEUR_IMMICH id
sudo docker exec NOM_CONTENEUR_POSTGRES id
```

## Examiner les datasets

```bash
sudo stat -c '%u:%g %a %n' /mnt/HDD_DATA_TRUENAS/IMMICH/data
sudo stat -c '%u:%g %a %n' /mnt/HDD_DATA_TRUENAS/IMMICH/pgData
sudo getfacl /mnt/HDD_DATA_TRUENAS/IMMICH/data
```

## Corriger avec l'interface

Préférer l'éditeur ACL TrueNAS :

1. sélectionner le dataset ;
2. ouvrir les permissions ;
3. donner `Modify` à l'utilisateur ou groupe de l'application ;
4. préserver les accès nécessaires aux sauvegardes ;
5. appliquer récursivement uniquement si le contenu et l'effet sont compris.

Pour un dataset SMB/NFSv4 utilisé avec le modèle de stockage, la documentation TrueNAS demande un mode ACL `Passthrough` afin qu'Immich puisse effectuer les changements nécessaires.

## Bibliothèque externe en lecture seule

L'utilisateur Immich a besoin au minimum de lecture et traversée :

```bash
sudo -u '#568' find /mnt/HDD_DATA_TRUENAS/PHOTOS -maxdepth 1 -type f -print | head
```

Le test peut échouer si l'utilisateur 568 n'existe pas dans la base locale. Dans ce cas, contrôler depuis le conteneur après montage :

```bash
sudo docker exec NOM_CONTENEUR_IMMICH sh -lc 'id; ls -la /mnt/external-libraries/photos | head'
```

## Erreurs à éviter

- `chmod -R 777` sur les datasets ;
- changer récursivement le propriétaire de `pgData` pendant que PostgreSQL fonctionne ;
- appliquer une ACL SMB incompatible avec les opérations POSIX requises ;
- donner l'écriture à Immich sur une archive devant rester immuable ;
- utiliser le même chemin de montage pour deux bibliothèques différentes.

Après correction, redéployer l'application depuis l'interface et examiner les journaux.

Référence : `https://docs.immich.app/install/truenas/`