Vue d’ensemble
Dans l’écosystème Linux, l’utilitaire chcon constitue l’outil de référence lorsqu’il s’agit d’ajuster rapidement et à chaud les contextes de sécurité SELinux. Ce tutoriel détaille quatre cas d’usage concrets de cette commande en environnement de production, tout en mettant en lumière ses limites critiques face aux réinitialisations et aux redémarrages système.
Inspection des contextes SELinux et syntaxe fondamentale de chcon
Pour préparer un environnement de test isolé dédié à l’expérimentation de chcon, générez un répertoire de travail temporaire puis basculez dedans via l’instruction mkdir -p /tmp/chcon_lab && cd /tmp/chcon_lab.

Créez ensuite un fichier témoin servant de cible d’évaluation grâce à la commande touch web_sample.html.

L’inspection du label de sécurité attribué au document s’effectue au moyen de ls -Z web_sample.html.
La présence d’un point d’interrogation (?) dans la sortie indique que le sous-système SELinux se trouve désactivé sur la machine hôte ou qu’aucun attribut contextuel n’a encore été associé à la ressource.
La structure élémentaire de l’outil suit le schéma chcon [options] contexte fichier.
⚙️ [Paramètres essentiels]
-t : redéfinit le type (Type) au sein du contexte cible.-u : modifie l’identité utilisateur (User) rattachée à la règle.-r : réassigne le rôle (Role) du contexte SELinux.-R : applique la modification de manière récursive à toute l’arborescence.--reference : duplique fidèlement le profil de sécurité d’un fichier source donné.-v : affiche le déroulement détaillé des opérations dans la console.

Cas pratique : réassigner un type de sécurité avec l’option -t
Afin de simuler la configuration requise par un service web, instanciez un répertoire de démonstration et une page d’accueil avec mkdir -p /tmp/chcon_lab && touch /tmp/chcon_lab/index.html.

Pour garantir qu’un démon HTTP tel qu’Apache ou Nginx puisse lire le contenu sans être bloqué par les politiques de contrôle d’accès obligatoire, ajustez le type du fichier vers httpd_sys_content_t en lançant chcon -t httpd_sys_content_t /tmp/chcon_lab/index.html.

Contrôlez la bonne prise en compte du nouveau paramétrage en exécutant ls -Z /tmp/chcon_lab/index.html.
Le caractère ? qui s’affiche confirme simplement l’inactivité de SELinux sur cette distribution, empêchant la matérialisation effective du contexte au niveau du système de fichiers.

Clonage de contexte via –reference et propagation récursive avec -R
Préparez les éléments nécessaires à l’évaluation du traitement récursif en créant un sous-dossier public assorti d’une feuille de style par le biais de mkdir -p /tmp/chcon_lab/public_html && touch /tmp/chcon_lab/public_html/style.css.

Générez ensuite une page HTML complémentaire destinée à recevoir les attributs d’un fichier existant avec touch /tmp/chcon_lab/target_page.html.

La commande chcon --reference=/tmp/chcon_lab/index.html /tmp/chcon_lab/target_page.html permet de dupliquer à l’identique les permissions contextuelles définies sur index.html vers target_page.html.
Cette méthode évite toute faute de frappe lors de la saisie manuelle de contextes complexes en s’appuyant sur un modèle fonctionnel validé.

Pour propager l’étiquette httpd_sys_content_t à l’intégralité d’un dossier et de ses éléments descendants, recourez à chcon -R -t httpd_sys_content_t /tmp/chcon_lab/public_html.
Le commutateur -R parcourt en profondeur l’ensemble de la hiérarchie pour harmoniser les accès en une seule passe.

Inspectez le statut attribué aux entrées du dossier à l’aide de ls -laZ /tmp/chcon_lab/public_html.
Le symbole ? visible dans le résultat réitère l’état désactivé du moteur SELinux au sein de cet environnement.

Pièges et limites fondamentales de chcon en production
Pour expérimenter le mécanisme de réinitialisation contextuelle restorecon, installez au préalable la suite logicielle requise en exécutant apt-get update -qq && apt-get install -y policycoreutils.

Mettez en place un document textuel dédié à cette vérification à l’aide de touch /tmp/chcon_lab/warning_test.txt.

Assignez provisoirement le type de contexte tmp_t sur ce document via chcon -t tmp_t /tmp/chcon_lab/warning_test.txt.
Il convient de garder à l’esprit que les modifications apportées par chcon restent purement éphémères et ne sont jamais enregistrées dans la base de règles permanentes de SELinux.

Validez la déclaration du nouveau contexte en exécutant ls -Z /tmp/chcon_lab/warning_test.txt.
Le point d’interrogation (?) signale une nouvelle fois que le sous-système SELinux n’est pas actif pour enregistrer cette métadonnée.

Tentez de restaurer l’étiquetage d’origine tel que consigné dans la politique centrale du système avec restorecon -v /tmp/chcon_lab/warning_test.txt.
Tout étiquetage opéré via chcon s’efface lors d’un appel à restorecon ou d’un réétiquetage complet du système de fichiers (autorelabel). Dès lors qu’une configuration pérenne s’avère indispensable, il est impératif de configurer la politique via semanage fcontext.

Réexaminez le fichier après l’opération de restauration au moyen de ls -Z /tmp/chcon_lab/warning_test.txt.
Le résultat confirme l’absence de gestion active des contextes par le noyau en raison de la désactivation de SELinux.

Vous disposez désormais d’une vision d’ensemble sur l’emploi de chcon sous Linux pour manipuler les contextes SELinux ainsi que sur ses répercussions opérationnelles.
Bien qu’extrêmement pratique pour le débogage rapide, cet utilitaire doit toujours être manié en pleine connaissance de cause face aux mécanismes de persistance des politiques globales.