Agence web » Actualités du digital » Que sont les autorisations de fichiers sous Linux et comment m’assurer que les miennes sont sécurisées?

Que sont les autorisations de fichiers sous Linux et comment m’assurer que les miennes sont sécurisées?

Autorisations de fichier.

Sous Linux, les autorisations sur les fichiers déterminent les niveaux de privilège des propriétaires de fichiers et de tous les autres. Il est important de s’assurer que les autorisations des fichiers accessibles sur le Web sont correctement définies, afin qu’un processus compromis ne puisse pas écrire à des endroits où il ne devrait pas.

Que sont les autorisations de fichiers?

Les autorisations de fichier suivent les autorisations de trois groupes différents. Chaque groupe est représenté par trois bits:

  • r: L’autorisation «Lire» permet à un processus de lire le contenu de ce fichier en mémoire.
  • w: L’autorisation «Ecrire» donne à un processus un accès pour écraser l’emplacement physique sur le disque où ce fichier est stocké.
  • X: L’autorisation «Exécuter» concerne les programmes et permet à ce fichier d’être exécuté.

Dans le terminal, les autorisations sont affichées comme suit:

Autorisations affichées.

Le premier «d» signifie si le fichier est un répertoire. Le premier groupe de trois est destiné au propriétaire du fichier. Dans ce cas, le propriétaire du fichier dispose d’un accès complet en lecture, en écriture et en exécution. Le prochain groupe de trois est «propriétaires de groupe», qui indique les droits d’accès pour le groupe auquel appartient le fichier, dans ce cas, en lecture seule. Le groupe suivant est tout le monde, qui est en lecture seule.

En général, les fichiers avec des autorisations ouvertes «tout le monde» ne sont pas très sécurisés. Vous voudrez vous assurer que le dernier groupe est défini en lecture seule ou sans accès pour la plupart des fichiers.

Sous le capot, ceux-ci sont stockés en binaire, chaque permission représentant un peu. Par exemple, rw- est 110 en binaire, soit 6 en décimal. Donc, la chaîne d’autorisation:

rwxrw-r--

… Pourrait être stocké sous «764.» Les autorisations de fichiers seront souvent désignées de cette manière; «777» indique un accès complet, «700» est privé, «644» est en lecture seule. Techniquement, cela s’appelle octal, pas décimal, car il y a huit valeurs possibles pour chaque chiffre.

Pour les répertoires, les permissions utilisent les mêmes caractères, mais sont un peu différentes:

  • r: Autorisation de liste. Permet d’ouvrir le répertoire et d’utiliser ls. Nécessite que l’attribut x soit défini.
  • w: Autorisation d’écriture. Permet la création de nouveaux fichiers, la suppression de fichiers et le changement de nom des fichiers. N’empêche pas de modifier le contenu des fichiers existants activés en écriture dans le répertoire.
  • X: Entrabilité. Permet l’utilisation de cd. Ceci est respecté dans tout le système et empêchera l’ouverture du dossier dans un explorateur de fichiers GUI.

Sur certains systèmes, en particulier macOS, il peut y avoir un «@» après la chaîne d’autorisation de fichier. Cela signifie que le fichier a des attributs étendus, que vous pouvez vérifier avec ls -l@. Par exemple, le com.apple.quarantine l’attribut est attribué aux exécutables qui n’ont pas encore été ouverts, de sorte que Gatekeeper puisse vous empêcher de double-cliquer dessus, vous forcer à cliquer avec le bouton droit de la souris> ouvrir puis vous demander inutilement si vous êtes vraiment sûr que vous voulez l’ouvrir.

Que sont les propriétaires de fichiers et les groupes?

Le propriétaire du fichier n’est qu’un utilisateur particulier, mais les utilisateurs des systèmes Unix ne fonctionnent pas de la même manière qu’ils le font sous Windows. Unix peut avoir différents utilisateurs pour des processus individuels comme mysql et nginx. Cela peut rendre les autorisations très détaillées; par exemple, une instance de MySQL exécutée sous le mysql l’utilisateur peut accéder à sa propre base de données, mais le nginx l’utilisateur ne peut pas.

Les groupes d’utilisateurs fonctionnent de la même manière mais prennent en charge le fait d’avoir plusieurs utilisateurs avec les mêmes autorisations. Les utilisateurs peuvent être ajoutés et supprimés du groupe, et ils sont facultatifs pour définir les autorisations de fichier.

Comment vérifier les autorisations de fichiers des répertoires

Vous pouvez afficher les autorisations de fichier et de répertoire en exécutant ls -l dans votre terminal. Les autorisations de fichier sont affichées à l’extrême droite:

Autorisations de fichier affichées à l'extrême droite.

Si vous souhaitez afficher les autorisations de fichier pour un fichier ou un répertoire spécifique, vous devrez diriger le ls sortie vers grep:

ls -la | grep filename

Notez que le dossier actuel et le dossier parent ont leurs autorisations affichées comme . et .. lors de l’utilisation du -a drapeau. Cependant, même cela n’affiche que deux niveaux d’autorisations. Pour afficher les autorisations pour chaque dossier parent, vous devrez utiliser le namei commander:

namei -l `pwd`

Cette commande peut ne pas être installée sur toutes les distributions Linux. Sur macOS, vous devrez l’installer à partir de brew.

Pour rechercher des fichiers individuels dans ces dossiers qui peuvent avoir des autorisations erronées, vous pouvez utiliser le find commande avec la -perm drapeau:

find ~ -type f -perm 777

Cette recherche récursive peut prendre un certain temps si vous l’exécutez sur le répertoire racine.

Comment modifier les autorisations et la propriété des fichiers

La modification des autorisations de fichier est simple avec le chmod commander:

chmod 700 filename

Vous pouvez également ajouter des autorisations sans spécifier de chaîne d’autorisation complète. Ceci est un raccourci, mais peut gagner du temps. Par exemple, si vous ne pouvez pas ouvrir un fichier de script, vous pouvez ajouter l’autorisation pour que le propriétaire s’exécute avec:

chmod u+x filename

Cela ajoute l’autorisation d’exécution (x) pour le propriétaire actuel (u, pour «utilisateur»).

Le changement de propriétaire fonctionne de la même manière avec le chown commander:

chown owner:group filename

Le «: group» est facultatif. Tous les deux chmod et chown peut être exécuté de manière récursive sur les répertoires, pour modifier les autorisations de fichier pour tout ce qui se trouve dans ces répertoires. Pour ce faire, utilisez les majuscules -R drapeau:

chmod 700 -R directory

Vous pouvez aussi utiliser chmod comme le -exec option pour find, qui vous permet de modifier les autorisations de fichiers dans tout le système. Par exemple, cette commande recherchera les fichiers disposant d’autorisations d’écriture ouvertes et les définira en lecture seule:

find / -type f -perm 777 -print -exec chmod 744 {} ;

★★★★★