Le gardien de la forteresse

LinuxBeginner
Pratiquer maintenant

Introduction

Bienvenue pour votre quatrième jour chez LabEx Corporation, gardien de la forteresse ! Après votre remarquable travail d'enquête hier, qui a permis de résoudre les problèmes critiques du projet Phoenix, le directeur technique de l'entreprise vous a personnellement chargé de diriger la sécurité de l'ensemble du projet.

« Nous ne pouvons pas nous permettre un nouvel incident de sécurité », explique le directeur technique lors de votre briefing matinal. « Votre enquête a révélé que notre précédente configuration de sécurité était insuffisante. Sarah Chen et l'équipe de développement ont besoin d'un environnement parfaitement sécurisé pour terminer le projet Phoenix dans les délais. »

La crise récente a mis en évidence la nécessité de mesures de sécurité robustes. Un nouveau prestataire va rejoindre l'équipe pour accélérer le développement, et vous devez vous assurer que les contrôles d'accès sont configurés avec précision. Vous devrez créer des systèmes de fichiers sécurisés, attribuer une propriété précise, définir des permissions détaillées et mettre en place des espaces de travail collaboratifs qui protègent la propriété intellectuelle de TechNova.

La réussite du projet Phoenix — et l'avenir de l'entreprise — dépendent désormais de la forteresse numérique que vous allez construire aujourd'hui. Sécurisons ce système !

Créer un fichier sécurisé pour un nouveau projet

Votre première tâche consiste à créer un fichier qui contiendra des clés sensibles du projet. Ce fichier doit rester strictement confidentiel et être accessible uniquement à son propriétaire.

Tâches

  • Créez un nouveau fichier vide nommé project_keys.txt dans le répertoire ~/project/phoenix_project.
  • Définissez les permissions de ce fichier afin que seul son propriétaire dispose d'un accès en lecture et en écriture, et que personne d'autre — pas même les utilisateurs du même groupe — n'y ait accès.

Exigences

  • Le fichier doit être nommé project_keys.txt.
  • Le fichier doit se trouver à l'emplacement ~/project/phoenix_project/project_keys.txt.
  • Utilisez la commande chmod avec la notation numérique pour définir les permissions.

Indices

  • Vous pouvez créer un fichier vide avec la commande touch.
  • Souvenez-vous des valeurs numériques des permissions : lecture (4), écriture (2) et exécution (1).
  • La permission finale doit être 600 (lecture et écriture pour le propriétaire, aucune permission pour le groupe et les autres).

Exemples

Après avoir terminé cette tâche, vous devriez voir quelque chose comme :

$ ls -l ~/project/phoenix_project/
-rw------- 1 labex labex 0 Sep 3 16:03 project_keys.txt

Les permissions du fichier affichent -rw-------, ce qui signifie :

  • Le propriétaire dispose des permissions de lecture et d'écriture
  • Le groupe ne dispose d'aucune permission
  • Les autres ne disposent d'aucune permission

Attribuer la propriété des ressources du projet

Le projet Phoenix est dirigé par l'équipe de développement de Sarah Chen, dont le responsable technique dev_lead supervise le développement principal. Cet utilisateur appartient au groupe developers, avec lequel vous travaillez depuis le début de la semaine. Vous devez transférer la propriété de tous les fichiers et répertoires du projet afin de garantir un contrôle d'accès approprié.

Tâches

  • Modifiez le propriétaire du répertoire ~/project/phoenix_project et de tout son contenu pour le définir sur l'utilisateur dev_lead.
  • Modifiez le groupe propriétaire du répertoire ~/project/phoenix_project et de tout son contenu pour le définir sur le groupe developers.

Exigences

  • Le propriétaire utilisateur doit être dev_lead.
  • Le groupe propriétaire doit être developers.
  • Le changement de propriété doit s'appliquer récursivement à tous les fichiers et sous-répertoires de ~/project/phoenix_project.
  • Vous devez utiliser la commande chown.

Indices

  • La commande chown peut modifier simultanément l'utilisateur et le groupe avec la syntaxe user:group.
  • Recherchez dans la commande chown une option permettant d'agir récursivement sur les fichiers et les répertoires. La commande man chown peut vous aider.
  • Les fichiers appartenant actuellement à root, vous devrez utiliser sudo pour modifier leur propriété.

Exemples

Après avoir terminé cette tâche, vous devriez voir quelque chose comme :

$ ls -ld ~/project/phoenix_project/
drwxrwxr-x 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/

$ ls -l ~/project/phoenix_project/
total 0
drwxrwxr-x 2 dev_lead developers 27 Sep 3 16:00 docs
-rw------- 1 dev_lead developers 0 Sep 3 16:03 project_keys.txt
drwxrwxr-x 2 dev_lead developers 6 Sep 3 16:00 src

Tous les fichiers et répertoires doivent maintenant appartenir à :

  • Utilisateur : dev_lead
  • Groupe : developers

Sécuriser le répertoire principal du projet

Maintenant que la propriété est correcte, vous devez définir les permissions de base du répertoire principal du projet, ~/project/phoenix_project. La règle est la suivante : le propriétaire doit disposer d'un contrôle total, le groupe doit pouvoir lister les fichiers et entrer dans le répertoire, et les utilisateurs extérieurs ne doivent avoir aucun accès.

Tâches

  • Définissez les permissions du répertoire ~/project/phoenix_project.

Exigences

  • Le propriétaire (dev_lead) doit disposer des permissions de lecture, d'écriture et d'exécution.
  • Le groupe (developers) doit disposer des permissions de lecture et d'exécution.
  • Les autres ne doivent disposer d'aucune permission.
  • Utilisez la commande chmod pour appliquer ces permissions au répertoire ~/project/phoenix_project lui-même, et non récursivement.
  • Le répertoire appartenant à dev_lead, vous devrez peut-être utiliser sudo pour modifier ses permissions.

Indices

  • La permission d'exécution sur un répertoire permet d'y entrer avec cd.
  • Calculez la valeur numérique des permissions pour le propriétaire, le groupe et les autres.
  • Propriétaire (rwx) = 4+2+1 = 7
  • Groupe (r-x) = 4+0+1 = 5
  • Autres (---) = 0+0+0 = 0

Exemples

Après avoir terminé cette tâche, vous devriez voir quelque chose comme :

$ ls -ld ~/project/phoenix_project/
drwxr-x--- 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/

Les permissions du répertoire affichent drwxr-x---, ce qui signifie :

  • Le propriétaire (dev_lead) dispose des permissions de lecture, d'écriture et d'exécution
  • Le groupe (developers) dispose des permissions de lecture et d'exécution
  • Les autres ne disposent d'aucune permission

Cela signifie que :

  • dev_lead peut accéder entièrement au répertoire
  • Les membres du groupe developers peuvent lister son contenu et y entrer
  • Les utilisateurs extérieurs n'ont aucun accès au répertoire

Configurer les permissions collaboratives de l'équipe de développement

Remarque : assurez-vous d'avoir terminé l'étape 2, qui définit la propriété de tous les répertoires du projet, y compris src, sur dev_lead:developers. Cette étape s'appuie sur ces paramètres de propriété.

Le script de configuration ajoute l'utilisateur labex au groupe developers, mais votre shell actuel peut ne pas prendre automatiquement en compte cette nouvelle appartenance au groupe. Avant de tester l'accès à ~/project/phoenix_project/src, exécutez newgrp developers dans le terminal. Sinon, vous pourriez obtenir des erreurs Permission denied, même si la propriété et les permissions sont correctes.

L'équipe de développement doit pouvoir collaborer efficacement dans le répertoire ~/project/phoenix_project/src. Pour faciliter cette collaboration, tout nouveau fichier ou répertoire créé dans src doit automatiquement appartenir au groupe developers. Cette permission spéciale concerne uniquement le groupe propriétaire. Le propriétaire utilisateur restera le compte qui crée le fichier, et les permissions de lecture et d'écriture du fichier dépendront toujours de l'umask de cet utilisateur.

Tâches

  • Définissez une permission spéciale sur le répertoire ~/project/phoenix_project/src afin que tous les nouveaux fichiers et sous-répertoires créés à l'intérieur héritent du groupe propriétaire du répertoire src lui-même, à savoir developers.

Exigences

  • La solution doit garantir que les nouveaux fichiers de ~/project/phoenix_project/src héritent automatiquement du groupe developers.
  • Les permissions finales doivent permettre au propriétaire et au groupe developers de lire, d'écrire et d'entrer dans le répertoire src, tandis que les autres ne doivent avoir aucun accès.
  • Vous devez utiliser la commande chmod pour définir cette permission spéciale.
  • Vous devrez peut-être utiliser sudo pour définir les permissions de répertoires appartenant à d'autres utilisateurs.

Indices

  • Cette permission spéciale s'appelle le bit « set group ID », ou bit setgid.
  • Vous pouvez appliquer le bit setgid avec la notation symbolique (g+s) ou numérique.
  • En notation numérique, le bit setgid a la valeur 2. Il se place avant les trois chiffres de permissions standard, par exemple 2770.

Exemples

Après avoir terminé cette tâche, vous devriez voir quelque chose comme :

$ ls -ld ~/project/phoenix_project/src/
drwxrws--- 2 dev_lead developers 6 Sep 3 16:00 ~/project/phoenix_project/src/

Le s à la position de l'exécution pour le groupe indique que le bit setgid est activé et que le groupe dispose de la permission d'exécution. Lorsque vous créez un nouveau fichier :

$ touch ~/project/phoenix_project/src/new_file.txt
$ ls -l ~/project/phoenix_project/src/new_file.txt
-rw-rw-r-- 1 labex developers 0 Apr 15 18:28 /home/labex/project/phoenix_project/src/new_file.txt

Remarquez que le nouveau fichier appartient automatiquement au groupe developers, même si vous êtes connecté avec un autre utilisateur. Le propriétaire du fichier reste l'utilisateur qui l'a créé, tandis que le groupe propriétaire est hérité du répertoire src. Cela permet à l'équipe de développement de travailler en collaboration tout en conservant une propriété de groupe appropriée.

Les permissions indiquent :

  • Le propriétaire (dev_lead) dispose des permissions de lecture, d'écriture et d'exécution
  • Le groupe (developers) dispose des permissions de lecture, d'écriture et d'exécution
  • Les autres ne disposent d'aucune permission
  • Le s minuscule à la position de l'exécution pour le groupe indique que le bit setgid est activé et que le groupe dispose de la permission d'exécution

Résumé

Excellent travail, gardien de la forteresse ! Vous avez réussi à bâtir une base de sécurité imprenable pour le projet Phoenix. Le directeur technique et Sarah Chen sont impressionnés par l'ampleur de votre mise en œuvre. Le répertoire du projet est désormais une forteresse qui protégera la propriété intellectuelle de TechNova tout en permettant une collaboration fluide.

Au cours de ce défi, vous avez maîtrisé des compétences essentielles en matière de sécurité Linux :

  • Création de fichiers et permissions de base : vous avez sécurisé les clés sensibles du projet grâce à des contrôles précis des permissions.
  • Gestion de la propriété : vous avez attribué avec expertise la propriété à l'équipe de développement de Sarah et à sa direction technique.
  • Sécurité des répertoires : vous avez trouvé le bon équilibre entre accès et sécurité pour l'infrastructure principale du projet.
  • Permissions avancées : vous avez configuré les permissions setgid afin de garantir des espaces de travail collaboratifs avec héritage automatique du groupe propriétaire.
  • Espaces de travail collaboratifs : vous avez configuré des espaces de collaboration qui préservent la sécurité tout en favorisant la productivité.

Ces compétences avancées en sécurité prouvent que vous êtes prêt à assumer des responsabilités de niveau senior en administration système. Demain, vous relèverez votre dernier défi en tant que gardien des clés : vous gérerez l'aspect humain de la sécurité du projet Phoenix en contrôlant l'accès des utilisateurs au système !

✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer