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

0
152

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 tous les fichiers Web ont leurs autorisations correctement définies, afin qu'un processus compromis ne puisse pas écrire à des endroits où il ne devrait pas.

Que sont les autorisations de fichier ?

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

  • r :Le “Lire” l'autorisation permet à un processus de lire le contenu de ce fichier en mémoire.
  • w : Le “Write” l'autorisation donne à un processus l'accès pour écraser l'emplacement physique sur le disque où ce fichier est stocké.
  • x : L'option “Exécuter” l'autorisation est pour les programmes et permet à ce fichier d'être exécuté.

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

Le premier “d” indique 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 prochain groupe de trois est celui des “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.

Généralement, les fichiers ouverts “tout le monde” les autorisations ne sont pas très sécurisées. 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, ce qui correspond à 6 en décimal. Donc, la chaîne d'autorisation :

rwxrw-r– Publicité

…pourrait être stocké sous “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, cela s'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 d'utiliser ls. Nécessite la définition de l'attribut x.
  • w : Autorisation d'écriture. 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 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, l'attribut com.apple.quarantine est attribué aux exécutables qui n'ont pas encore été ouverts, afin que Gatekeeper puisse vous empêcher de double-cliquer dessus, vous obligeant à cliquer avec le bouton droit de la souris > ouvrir, puis vous demander inutilement si vous êtes vraiment sûr de vouloir 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 tels que mysql et nginx. Cela peut rendre les autorisations très détaillées ; par exemple, une instance de MySQL s'exécutant sous l'utilisateur mysql peut accéder à sa propre base de données, mais pas l'utilisateur nginx.

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 fichiers.

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 :

Publicité

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

ls -la | grep filename

Notez que le dossier actuel et le dossier parent ont leurs autorisations affichées sous la forme . et .. lors de l'utilisation de l'indicateur -a. Cependant, même cela n'affiche que deux niveaux d'autorisations. Pour afficher les autorisations pour chaque dossier parent, vous devez utiliser la commande namei :

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 la commande find avec l'indicateur -perm :

find ~ -type f -perm 777

Cette recherche 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 la commande chmod :

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 l'autorisation pour que le propriétaire s'exécute avec :

chmod u+x nom de fichier Publicité

Cela ajoute l'autorisation d'exécution (x) pour le propriétaire actuel (u, pour “user”).

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

chown owner:group filename

Le &#8220 ;:groupe” est facultatif. Les deux chmod et chown peuvent être exécutés 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 l'indicateur -R en majuscule :

répertoire chmod 700 -R

Vous pouvez également utiliser chmod comme option -exec pour rechercher, ce qui vous permet de modifier les autorisations de fichier 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 {} ;