Permissions de fichiers Linux : Guide stratégique pour les administrateurs Windows

Si vous gérez Windows depuis un certain temps, vous avez probablement de l’expérience en matière de gestion des comptes utilisateur, du système de fichiers NTFS et de la configuration des autorisations. Si c’est le cas, préparez-vous à un monde différent avec les autorisations de fichiers Linux ! Dans Linux, le système de fichiers est une bête différente que vous devez apprendre à maîtriser en tant qu’administrateur Linux compétent.

Ceci est la deuxième partie de notre série en quatre parties sur l’apprentissage de Linux du point de vue d’un administrateur Windows ! Assurez-vous de lire la première partie si ce n’est pas déjà fait.

Travailler avec le système de fichiers

Commençons par voir comment Linux stocke et gère les fichiers via le système de fichiers.

Remarque : Tous les exemples seront basés sur OpenSUSE Linux.

Plus de lettres de lecteur

Contrairement à Windows, les lecteurs amovibles et autres périphériques ne reçoivent pas automatiquement une lettre de lecteur et ne s’ouvrent pas au redémarrage. Sous Windows, chaque lecteur est monté avec une lettre de lecteur : C:\, D:\, etc. Comment fonctionnent les lettres de lecteur sous Linux ? Il n’y en a pas !

Linux dispose d’un dossier appelé le dossier racine. Ce dossier se trouve à la racine du système de fichiers, c’est-à-dire /. Le slash avant chaque autre fichier du système provient de ce slash avant. Ce slash initial est un peu comme la base C:\, mais uniquement si les autres lettres de lecteur n’existaient que sous la forme de sous-dossiers de C:\.

Le dossier racine est l’endroit où se trouvent les fichiers système principaux. Tout le reste, y compris les autres périphériques, est un sous-dossier de ce dossier central.

Linux brouille la frontière entre les dossiers et les systèmes de fichiers. Le répertoire Linux /home est la racine de tous les « profils » d’utilisateurs similaires au dossier C:\Utilisateurs dans Windows. Dans ce cas, /home est un répertoire. Cependant, les « répertoires » sous Linux n’ont pas nécessairement à être des répertoires. Ils peuvent également être des partitions de stockage ou même un disque dur séparé. Ce concept est analogue aux points de montage Windows.

Vous pouvez en savoir plus sur les répertoires racine dans cet article.

Utilisateurs et dossiers personnels

Si vous utilisez OpenSUSE, vous remarquerez peut-être un dossier Home sur votre bureau comme indiqué ci-dessous. Ce dossier est la version Linux du dossier C:\utilisateurs\<nom_utilisateur> ou « profil ». Le dossier « utilisateurs » de Linux se trouve sous /home sur votre disque d’installation par défaut.

Dans l’exemple ci-dessous, l’utilisateur s’appelle homelab avec un « profil » situé dans /home/homelab.

Your own User (Home) Folder

Sous Linux (et Windows), le dossier personnel (ou profil utilisateur dans Windows) a une notation abrégée d’un tilde (~). Si vous voyez quelque chose comme "~/Documents/blah.txt, cela fait en réalité référence à votre fichier /home/<nom_utilisateur>/Documents/blah.txt.

La casse est importante sous Linux

Tout dans Linux est sensible à la casse. Ce concept est complètement opposé à Windows où presque rien n’est sensible à la casse.

Par exemple, si vous avez un répertoire appelé /home/homelab, un répertoire complètement différent peut être appelé /home/Homelab. Ce concept s’applique également aux commandes. Exécuter cd /home/homelab est différent de CD /home/homelab (ce qui devrait échouer).

En tant que personne habituée à Windows, ce concept vous déroutera à un moment donné. Soyez très attentif à la casse ! Vous pouvez voir un exemple de deux dossiers distincts ci-dessous. La seule différence entre les deux est la casse : dans un environnement Windows, cela n’est pas possible.

Being able to create two separate folders just by capitalization is not possible on Windows

Comptes utilisateur

Comme Windows, Linux a le concept de comptes utilisateur, mais ils fonctionnent un peu différemment. Commencez d’abord par penser aux comptes utilisateur Linux en termes de comptes utilisateur Windows familiers.

Windows a quelques comptes utilisateur intégrés tels que Administrateur, le compte SYSTEM caché, Invité, etc. Windows a également divers groupes de sécurité intégrés comme Administrateurs, Invités, etc.

Vous pouvez afficher tous les utilisateurs et groupes Windows via la console MMC Utilisateurs et groupes locaux en exécutant lalusrmgr.msc MMC snapin.

The Windows Local User Control Panel

SID Windows

Pour identifier de manière unique les utilisateurs et les groupes, Windows se réfère à eux par quelque chose appelé SID. Dans Windows, vous pouvez trouver le SID de chaque utilisateur et groupe en exécutant quelques commandes PowerShell ci-dessous.

Get-LocalUser | select name, sid
Get-LocalGroup | select name,sid
The list of users and groups on a Windows computer

Chaque SID de groupe Windows est le même sur tous les ordinateurs Windows. Les SID utilisateurs SIDs intégrés à Windows sont uniques. Le SID de l’administrateur que vous voyez dans la capture d’écran ci-dessus doit être différent sur chaque ordinateur Windows. Tout utilisateur ou groupe créé ultérieurement dans Windows sera unique. Remarquez ci-dessous le groupe test. Si vous créez un groupe test sur votre ordinateur Windows, le SID sera différent.

A new “test” group at the top has a unique SID

Identifiants d’utilisateur Linux

De l’autre côté, Linux gère les utilisateurs et les groupes de manière similaire, mais cette fois, Linux n’utilise pas de SID mais des identifiants d’utilisateur (UID) et des identifiants de groupe (GID). Contrairement à Windows, les utilisateurs et les groupes sont uniques à l’ordinateur mais pas uniques à travers tous les ordinateurs. Cela signifie que votre UID sur l’ordinateur A pourrait être le même UID sur l’ordinateur B, même si ce n’est pas le même utilisateur.

Les UID et les GID suivent une convention simple et numérique ; chaque UID et GUID commence à 0 et s’incrémente de un en allant de 1 à 999 pour les comptes système internes et de 1000+ pour les comptes utilisateur personnalisés.

L’utilisateur root intégré toujours a un UID de 0 et un GID de 0. De plus, comme le compte système caché SYSTEM de Windows, ce compte root est généralement (selon la distribution Linux) empêché de se connecter.

L’utilisateur root intégré est similaire aux comptes intégrés SYSTEM et Administrateur de Windows, un peu comme s’ils étaient fusionnés en un seul. Même si vous travaillez en tant qu’administrateur dans Windows, il existe toujours certaines protections intégrées pour vous empêcher de détruire complètement Windows.

L’utilisateur root, en revanche, est une autorité absolue. Si vous entrez délibérément dans l’utilisateur root (vous pouvez le faire en ligne de commande en utilisant la commande sudo su) et essayez de supprimer tout votre système d’exploitation, root le fera joyeusement jusqu’à ce que le système meure.

Disons que vous avez créé un utilisateur appelé homelab. L’UID pour homelab pourrait alors être référencé soit par 1000, soit par homelab. L’utilisateur deviendra automatiquement membre du groupe interne users que vous pouvez référencer avec l’identifiant de groupe 100. Vous pouvez trouver une liste de ces correspondances en exécutant la commande getent passwd comme vu ci-dessous:

running getent passwd inside the terminal

Vous pouvez également trouver les mêmes informations que ci-dessus pour les groupes avec la commande getent group.

running getent group inside the terminal

Permissions de fichiers Linux

Dans un monde Windows, les autorisations de système de fichiers ne sont pas amusantes. Définir et gérer les autorisations dans NTFS peut parfois se transformer en cauchemar avec ACE, ACL, héritage, propagation, etc. Heureusement, dans les autorisations de système de fichiers Linux sont beaucoup plus simples.

En Linux, vous avez trois types de droits que vous pouvez attribuer à un fichier : lecture, écriture et exécution avec trois catégories d’accès : propriétaire, groupe, autres.

  • propriétaire est l’utilisateur qui possède le fichier/dossier. Chaque fichier ou dossier a un propriétaire désigné.
  • groupe est le groupe qui possède le fichier/dossier. Cela ne doit pas nécessairement être le même groupe auquel appartient le propriétaire. Chaque fichier ou dossier ne peut appartenir qu’à un seul groupe.
  • autres sont… eh bien… les autres. Ce sont des personnes qui ne font pas partie du groupe propriétaire ou qui ne sont pas le propriétaire désigné.

Vous pouvez autoriser ou refuser chaque option pour chaque catégorie. Par exemple, vous pouvez donner les options de lecture, d’écriture et d’exécution au propriétaire, et les options de lecture/exécution au groupe et aux autres. Vous pouvez voir cela dans la capture d’écran ci-dessous. Cela signifie que personne à part l’utilisateur qui est le propriétaire du dossier ne peut le modifier.

Tout comme l’explorateur Windows, sous Ubuntu, vous pouvez voir ces informations en suivant ces étapes :

  1. Ouvrez votre dossier personnel sur votre bureau.
  2. Naviguez jusqu’au fichier/dossier en question.
  3. Cliquez avec le bouton droit sur le fichier/dossier et cliquez sur Propriétés.
  4. Cliquez sur l’onglet Permissions.
  5. Cliquez sur Permissions avancées.

Une fois dans la boîte Permissions avancées, vous pouvez voir graphiquement toutes les permissions attribuées à ce fichier ou dossier.

Demonstration of the advanced permissions menu in OpenSUSE

Voici ce que représente le tableau Permissions avancées.

How the file permissions look visually

Propriété du fichier

Tout comme Windows, chaque fichier et dossier a un propriétaire. Sous Windows, vous pouvez prendre possession d’un fichier dans l’interface graphique ou via la commande takeown. Sous Linux, vous pouvez prendre possession en exécutant la commande chown <utilisateur>:<groupe> <fichier/dossier> en ligne de commande.

Tout comme Windows, vous avez généralement besoin de permissions d’administration pour changer la propriété des fichiers en utilisant sudo. sudo est l’équivalent Linux du Contrôle des comptes d’utilisateur (UAC) de Windows. Au lieu d’ouvrir une fenêtre d’invite de commandes en tant qu’administrateur, vous préfixez les commandes avec sudo pour les exécuter en tant qu’administrateur.

Créons un dossier qui est uniquement détenu par root pour illustrer certains de ces concepts.

  1. Ouvrez votre dossier personnel et accédez à Documents
  2. Ouvrez une invite de commandes en cliquant droit —> Actions —> Ouvrir le terminal ici, puis exécutez la commande suivante :
sudo mkdir owned-by-root
sudo chmod 700 owned-by-root
Creating a root only folder

Ce dossier a uniquement des permissions de lecture/écriture/exécution pour le propriétaire. Comme vous avez créé le dossier avec des droits d’administrateur, le propriétaire actuel est root.

Vous avez également modifié les permissions pour que seul le propriétaire y ait accès. Le groupe propriétaire et les autres utilisateurs ne peuvent pas accéder à ce dossier du tout. En fait, vous remarquerez que le dossier est verrouillé, ce qui indique que vous n’avez pas accès.

Vous pouvez voir ci-dessous comment prendre possession de ce dossier.

  1. Ouvrez un autre terminal dans ce même dossier (ou utilisez celui que vous aviez déjà)
  2. Exécutez la commande sudo chown homelab:users ./owned-by-root
Demonstration of the change ownership command in OpenSUSE

Maintenant que vous en êtes le propriétaire, vous pouvez également modifier les permissions de fichier dans l’interface graphique de l’explorateur en utilisant la fenêtre des propriétés.

File permissions inside the explorer GUI

Vous (généralement) ne voulez changer que les propriétaires, pas les permissions de fichier. Linux est assez bon pour savoir quelles permissions les choses doivent avoir par défaut. Vous pouvez vraiment tout gâcher en utilisant ‘chmod’ sans connaître les implications.

Notation numérique pour les permissions de fichier

Si vous avez déjà effectué quelques dépannages Linux, vous avez peut-être vu des personnes expliquer les permissions de fichier à l’aide d’un système de numérotation. Vous pouvez le voir mis en évidence dans la capture d’écran ci-dessous :

The permissions menu, as viewed remotely from a Windows machine using WinSCP

Linux utilise une notation abrégée pour ce système d’accès en utilisant des nombres, comme 0600. Le premier nombre correspond à certaines propriétés spéciales que vous pouvez ajouter, que les gens en général ignorent. En fait, la plupart des gens n’utilisent que trois chiffres pour la notation et ignorent le quatrième chiffre initial.

Pour plus d’informations sur la notation numérique des permissions de fichier, consultez cet article.

Conclusion

C’est tout pour la deuxième partie de notre série d’articles de blog « A Windows Guy in a Linux World » ! Assurez-vous de maintenir l’élan avec Partie III !

Source:
https://adamtheautomator.com/linux-file-permissions/