Activité : Gestion des permissions

Situation

Vous êtes chargé d’installer un poste partagé entre plusieurs utilisateurs et vous devez configurer les permissions des répertoires et des fichiers pour que les utilisateurs n’aient accès qu’à ceux dont ils ont besoin.

Consigne

Pour ce travail, on vous demande de réaliser les tâches décrites ci-après.

Objectifs

À la fin de ce travail vous devez :

  1. Connaître les notions de permission et d’autorisation.
  2. Connaître les notions de permission POSIX et d’ACL.
  3. Être capable d’expliquer les liens entre authentification, autorisation et permission.
  4. Être capable de modifier les permissions d’un fichier ou d’un répertoire sous Windows et sous Linux.

Résultat attendu

Le compte rendu de l’activité avec vos observations dans une section de votre rapport de module.

Ressources

Documents :

Logiciel :

  • NetBeans
  • Visual Studio Code

Gestion des permission sous Linux

Reprenez la machine telle que vous l’avez laissée à la fin de l’activité précédente et commencez par lancer Linux. Connectez-vous avec un compte disposant de privilège d’administration (le compte que vous avez créé à la fin de l’installation), ouvrez une fenêtre de terminal, rendez-vous dans le répertoire /home qui contient les répertoires personnels des utilisateurs (équivalent du répertoire C:\Users sous Windows) et listez les permissions des répertoires.

1
2
cd /home
ls -l

Par défaut, les permissions des répertoires personnels des utilisateurs sont drwxr-xr-x où :

  • d indique qu’il s’agit d’un répertoire.
  • rwx indique que l’utilisateur propriétaire peut lister (r), modifier le contenu du répertoire (w), et le traverser (x).
  • r-x indique que les membres du groupe propriétaire peuvent lister (r) le contenu et traverser le répertoire (x) mais pas en modifier le contenu (il y a un - à la place du w).
  • r-x indique que les autres utilisateurs (ceux qui ne sont ni le propriétaire ni membre du group propriétaire) peuvent lister le contenu (r) et traverser le répertoire (x) mais pas en modifier le contenu (il y a un - à la place du w).

Le groupe propriétaire est le groupe primaire de l’utilisateur.

Pour modifier les permissions de ces répertoires, on peut utiliser la commande chmod. Mais commençons par vérifier que les autres utilisateurs disposent bien de la permission de traverser le répertoire et d’en lister le contenu.

Comme on n’est ni l’utilisateur delezej ni membre du groupe accounting, on fait bien partie des « autres » (other) et on devrait donc pouvoir traverser le répertoire et en lister le contenu :

1
2
cd /home/delezej
ls

Revenez dans le répertoire /home et essayez de supprimer la permission de lister le répertoire pour les « autres » à l’aide de la commande :

1
chmod o-r delezej

Le système refuse de le faire, car changer les permissions d’un fichier dont on n’est pas le propriétaire requiert des privilèges d’administrateur. Comme vous devriez être connecté avec un utilisateur privilégié, on peut utiliser la commande sudo pour exécuter la commande en tant qu’utilisateur « root » (le terme UNIX pour administrateur). Réessayez à l’aide de la commande :

1
sudo chmod o-r delezej

Vérifiez que les autres ont maintenant uniquement le droit de traverser. Si c’est bien le cas, vous devriez pouvoir faire de delezej votre répertoire courant, mais vous ne devriez pas avoir le droit d’en lister le contenu.

1
2
cd delezej
ls

Revenez dans le répertoire /home et essayez de supprimer la permission de traverser le répertoire pour les « autres » à l’aide de la commande :

1
sudo chmod o-x delezej

Pour revenir à la situation initiale, vous pouvez remettre les permissions de lister et de traverser le répertoire à l’aide de la commande :

1
sudo chmod o+rx delezej

Les permissions peuvent également être accordées ou supprimées en utilisant 3 chiffres octaux. En effet, un chiffre octal représente un nombre binaire de 3 bits qui représentent les permissions rwx. Par exemple, 1 (001) représente x, 4 (100) représente r, 6 (110) représente rw et 7 (111) représente rwx.

On peut utiliser la commande suivante pour ôter toutes permissions aux autres :

1
sudo chmod -007 delezej

Le signe moins (-) indique qu’on veut enlever des permissions, le premier 0 indique qu’on ne veut rien enlever à l’utilisateur propriétaire, le deuxième 0 indique qu’on ne veut rien enlever aux membres du groupe propriétaire et le 7 indique que l’on veut enlever toutes les permissions rwx aux autres. On peut également ajouter des permissions de la même manière en utilisant le signe plus (+).

Nous allons maintenant créer des répertoires qui pourront être partagés entre les utilisateurs d’un même groupe. Pour cela, ouvrez une session en tant que « root » à l’aide de la commande sudo -i et rendez-vous dans le répertoire /var. Créez un répertoire data à l’aide de la commande mkdir :

1
2
cd /var
mkdir data

Affichez les permissions du répertoire data à l’aide la commande ls -l et assurez-vous que les « autres » ont la permission de lister et de traverser ce répertoire. Si tel est bien le cas, rendez-vous dans ce répertoire et créez les répertoire suivants :

  • accounting
  • secretaria
  • common

Donnez toutes les permissions (rwx) au propriétaire et aux membres du groupe propriétaire, et ôtez toutes permissions aux « autres ». Notez la ou les commande que vous avez utilisées pour effectuer cette tâche.

Nous voulons maintenant que le groupe propriétaire du répertoire accounting soit le group accounting. Pour cela, on doit utiliser la commande chown (change owner) comme suit :

1
chown root:accounting accounting

Dans cette commande, root:accounting spécifie l’utilisateur propriétaire (ici root) et le groupe propriétaire (ici accounting) pour un répertoire ou un fichier (ici accounting). On peut également spécifier l’utilisateur propriétaire uniquement (chown root acconting), ou le groupe propriétaire uniquement (chown :accounting accounting).

Procédez de la même manière pour accorder les pleins pouvoirs aux membres du groupe secretaria au répertoire secretaria, et pour accorder les pleins pouvoirs aux membres du groupe employees pour le répertoire common. Avant d’aller plus loins, répondez aux questions suivantes en argumentant votre réponse :

  • Quels sont les utilisateurs qui peuvent accéder au répertoire accounting ?
  • Quels sont les utilisateurs qui peuvent accéder au répertoire secretaria ?
  • Quels sont les utilisateurs qui peuvent accéder au répertoire common ?

Connectez-vous avec chacun des utilisateurs et vérifiez que chacun d’eux a bien accès aux répertoires auxquels il a doit.

Connectez-vous avec n’importe quel utilisateur, ouvrez une fenêtre de terminal et rendez-vous dans le répertoire personnel (home directory) à l’aide de la commande cd sans argument ou avec la commande cd ~. Dans le shell (sh ou bash), le tilde (~) représente le répertoire personnel.

Nous allons maintenant utiliser la commande touch pour créer un fichier et voir quelles sont les permissions qui sont données à un nouveau fichier sous Linux. La commande touch permet en principe d’actualiser la date d’accès du fichier passé en paramètre, mais s’il n’existe pas, la commande crée un fichier vide.

1
2
touch test1
ls -l

Vous pouvez constater que les permissions qui sont accordées au fichier test1 sont -rw-rw-r– ce qui signifie que l’utilisateur et le groupe propriétaire ont la permission de lire et d’écrire (rw) alors que les « autres » ont uniquement la permission de lire. Sous Linux, personne n’a la permission d’exécuter un nouveau fichier. La permission d’exécution (x) doit toujours être donnée explicitement avec la commande chmod.

Les permissions par défaut d’un nouveau fichier ou d’un nouveau répertoire sont accordées à l’utilisateur qui crée le fichier ou le répertoire et aux membres du groupe principal de cet utilisateur et sont définies par un masque. Par défaut, le masque est 002 en octal ou 000 000 010 en binaire. Les bits à 1 masquent la permission correspondante, c’est-à-dire que la permission correpondate est enlevée. Les bits qui correspondent au droit d’exécution (001 001 001) n’ont d’effet que pour les répertoires pour lesquels ils masquent la permission de les traverser.

Par exemple, on peut enlever toutes permissions aux autres pour les nouveaux fichiers ou répertoires avec la commande umask 007. Cela n’affecte pas les permissions des fichiers et répertoires existant, mais uniquement les fichiers et répertoires créés à la suite de cette commande. Par exemple :

1
2
3
umask 007
touch test2
ls -l

Vous pouvez constater que les permissions de test1 n’ont pas changées alors que les permissions de test2 sont -rw-rw-r–. Vous pouvez revenir à la situation initiale en avec la commande umask 002.

Gestion des permissions sous Windows

Lancez Windows et connectez-vous avec un compte disposant de privilèges administrateur (le compte que vous avez créé à la fin de l’installation) et rendez-vous à l’aide de l’explorateur de fichiers dans le répertoire C:\Utilisateurs.

Dans ce répertoire, utilisez le menu contextuel du répertoire delezej pour ouvrir les propriétés des dossiers et rendez-vous sur l’onglet Sécurité. Cet onglet vous permet de consulter et de modifier les permissions.

Cliquez sur le bouton Avancé et observez le petit écusson sur le bouton Continuer.

  • Que signifie-t-il ?
  • Que se passe-t-il lorsque vous cliquez sur ce bouton ?
  • Pourquoi avez-vous le droit de continuer ?
  • Quelle est la particularité de ce compte ? Est-il possible de créer d’autre compte comme celui-ci ?

Lorsque vous cliquez sur le bouton continuer, la boîte de dialogue affiche les « entrées d’autorisation ».

  • Qu’est-ce qu’un « principal » dans le contexte de la sécurité ?
  • Quels sont les utilisateurs qui peuvent accéder à ce répertoire ?
  • Que se passe-t-il lorsque vous tentez d’ouvrir le répertoire delezej ?
  • Connectez-vous avec l’utilisateur delezej, rendez-vous dans le répertoire C:\Utilisateurs avec l’explorateur de fichiers puis tentez d’accéder au répertoire delezej. Le comportement est-il le même que précédemment ? Expliquez.
  • Toujours avec le compte delezej, retournez dans le répertoire C:\Utilisateurs, ouvrez les propriétés du répertoire delezej et allez dans l’onglet Sécurité. Que se passe-t-il ?
  • Toujours avec le compte delezej, essayer cette fois d’aller dans l’onglet Sécurité du répertoire pitteloude. Que se passe-t-il ?

Avec un compte disposant de privilège administrateur, créez le répertoire C:\Data. Dans ce répertoire, créez les répertoire Accounting, Secretaria et Common et définissez les permissions selon la spécification suivante :

  • Le répertoire C:\Data doit pouvoir être listé et traversé par tous les utilisateurs.
  • Seuls les membres du groupe Accounting peuvent avoir accès au répertoire Accounting et peuvent y faire ce qu’ils veulent.
  • Seuls les membres du groupe Secretaria peuvent avoir accès au répertoire Secretaria et peuvent y faire ce qu’ils veulent.
  • Seuls les membres du groupe Employees peuvent avoir accès au répertoire Common et peuvent y faire ce qu’ils veulent.

Connectez-vous avec les différents utilisateurs et vérifiez que leurs droits correspondent à la spécification.

Questions

  1. Sous Linux, quelle commande permet de changer de répertoire ?
  2. Sous Linux, quelle commande permet de lister le contenu d’un répertoire et comment doit-on utiliser cette commande pour consulter les permissions des fichiers et des répertoires qu’il contient ?
  3. Sous Linux, quelle(s) commande(s) utilise-t-on pour modifier les permissions sur un fichier ou un répertoire ?
  4. Expliquer en quelques mots simples à quoi correspondent les permissions -rwxr-xr– pour un fichier.
  5. Expliquer en quelques mots simples à quoi correspondent les permissions drwxr-x–x pour un répertoire.
  6. Pour Linux et Windows, expliquez comment sont définies les permissions d’un nouveau fichier ou d’un nouveau répertoire et à qui elles sont accordée.

Permissions et sécurité

Les permissions d’un système de fichier ne protègent les données que si tous les utilisateurs sont forcés de passer par la procédure d’authentification et d’ouverture de session du système d’exploitation installé sur l’ordinateur. En effet, par défaut, les données ne sont pas chiffrées sur le disque. De ce fait, s’il est possible de démarrer la machine avec un système d’exploitation avec lequel on a des privilèges administrateur, alors aucune permission ne peut protéger quoi que ce soit.

Pour démontrer cela, insérez le DVD d’installation d’Ubuntu dans le lecteur optique, démarrez l’ordinateur et sélectionnez Essayer Ubuntu. Lorsqu’Ubuntu est lancé, ouvrez une fenêtre de terminal et ouvrez une session en tant qu’utilisateur root avec la commande suso -i. Exécutez la commde fdisk -l pour lister les partitions et montez les partitions de Linux et de Windows avec la commande mount. Par exemple, si la partition de Windows est la partition 2 et la partition de Linux est la partition 5 :

1
2
3
4
5
cd /mnt
mkdir /mnt/win
mkdir /mnt/linux
mount /dev/sda2 /mnt/win
mount /dev/sda5 /mnt/linux

Si vous vous rendez dans le répertoire /mnt/win/Users vous pouvez constater que vous avez accès à toutes les données. De même, si vous vous rendez dans le répertoire /mnt/win/Data, tous les répertoires vous sont accessibles.

Vous pouvez également faire l’expérience avec la partition Linux en vous rendant dans le répertoire /mnt/Linux/home où vous pouvez constater que vous avez également accès à tous les répertoires personnels. Idem pour les répertoires qui se trouvent dans /mnt/Linux/var/data.

Pour se prémunir contre ce genre d’accès, on doit :

  • Interdir l’accès au Setup du firmware à l’aide d’un mot de passe.
  • Interdir le démarrage de la machine sur un autre disque (disque optique, disque ou clé USB).
  • Interdir l’accès à l’intérieur du boîtier de l’ordinateur et particulièrement aux disques.
  • Si possible chiffrer les données du disque.

Avant de quitter la session, démontez les partitions et nettoyez le répertoire /mnt à l’aide des commandes suivantes :

1
2
3
4
umount /mnt/win
umount /mnt/linux
rmdir /mnt/win
rmdir /mnt/linux

Question

  1. Lorsque vous démarrer la machine avec un DVD Live de Ubuntu et que vous montez les partitions de Windows et de Linux, quelles sont les permissions des sous-répertoires de data ?