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

Autorisations de fichiers.

Sous Linux, les autorisations de 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 de tous les fichiers accessibles sur le Web sont correctement définies, de sorte qu’un processus compromis ne puisse pas écrire à des endroits où il ne le devrait pas.

Que sont les autorisations de fichiers ?

Les autorisations de fichiers suivent les autorisations pour 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 accès au processus pour écraser l’emplacement physique sur le disque où ce fichier est stocké.
  • X: L’autorisation « Exécuter » est destinée aux 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, écriture et exécution. Le groupe suivant de trois est « propriétaires de groupe », qui désigne 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 règle générale, 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 autorisation représentant un bit. Par exemple, rw- est 110 en binaire, qui est 6 en décimal. Donc, la chaîne d’autorisation :

rwxrw-r--

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

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

  • r : Autorisation de liste. Permet d’ouvrir le répertoire, et permet l’utilisation de ls. Nécessite la définition de l’attribut x.
  • w : L’autorisation d’écrire. Permet la création de nouveaux fichiers, la suppression de fichiers et le renommage de fichiers. N’empêche pas de modifier le contenu des fichiers activés en écriture existants dans le répertoire.
  • X: L’entrabilité. Permet l’utilisation de cd. Ceci est respecté à l’échelle du 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, afin que Gatekeeper puisse vous empêcher de double-cliquer dessus, vous forcer à cliquer avec le bouton droit > ouvrir, puis vous demander inutilement si vous êtes vraiment sûr que vous voulez l’ouvrir.

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

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 que 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 s’exécutant 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 manière similaire mais prennent en charge le fait d’avoir plusieurs utilisateurs avec les mêmes autorisations. Des 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 fichiers et de répertoires en exécutant ls -l dans votre terminal. Les autorisations de fichiers sont affichées à l’extrême droite :

Autorisations de fichiers 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 le -perm drapeau:

find ~ -type f -perm 777

Cette recherche est récursive et 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 fichiers 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 faire gagner du temps. Par exemple, si vous ne pouvez pas ouvrir un fichier de script, vous pouvez ajouter une 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 trouvera les fichiers qui ont des autorisations d’écriture ouvertes et les définira en lecture seule :

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

Laisser un commentaire