Recherche de site Web

Comment utiliser les permissions spéciales : les bits setuid, setgid et post-it


Objectif

Apprendre à connaître le fonctionnement des autorisations spéciales, comment les identifier et les configurer.

Exigences

  • Connaissance du système d’autorisations standard unix/linux

Difficulté

FACILE

Conventions

  • # – nécessite que les commandes Linux données soient exécutées avec les privilèges root, soit
    directement en tant qu’utilisateur root, soit en utilisant la commande sudo
  • $ – nécessite que des commandes Linux données soient exécutées en tant qu’utilisateur régulier non privilégié

Introduction

Normalement, sur un système d’exploitation de type unix, la propriété des fichiers et des répertoires est basée sur l’uid (user-id) et le gid (group-id) par défaut de l’utilisateur qui les a créés. La même chose se produit lorsqu’un processus est lancé : il s’exécute avec l’identifiant utilisateur et l’identifiant de groupe effectifs de l’utilisateur qui l’a démarré, et avec les privilèges correspondants. Ce comportement peut être modifié à l’aide d’autorisations spéciales.

Le mors sétuid

Lorsque le bit setuid est utilisé, le comportement décrit ci-dessus est modifié de sorte que lorsqu’un exécutable est lancé, il ne s’exécute pas avec les privilèges de l’utilisateur qui l’a lancé, mais avec ceux du propriétaire du fichier à la place. Ainsi, par exemple, si un exécutable a le bit setuid défini sur lui, et qu’il appartient à root, lorsqu’il est lancé par un utilisateur normal, il s’exécutera avec les privilèges root. Il faut comprendre pourquoi cela représente un risque potentiel pour la sécurité, s’il n’est pas utilisé correctement.

Un exemple d’exécutable avec l’ensemble d’autorisations setuid est passwd, l’utilitaire que nous pouvons utiliser pour changer notre mot de passe de connexion. Nous pouvons vérifier cela en utilisant la commande ls :

ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27768 Feb 11  2017 /bin/passwd

Comment identifier le bit setuid ? Comme vous l’avez sûrement remarqué en regardant le résultat de la commande ci-dessus, le bit setuid est représenté par un s à la place du x du bit exécutable. Le s implique que le bit exécutable est défini, sinon vous verriez un S majuscule. Cela se produit lorsque les bits setuid ou setgid sont définis, mais que le bit exécutable ne l’est pas, ce qui montre à l’utilisateur une incohérence : les bits setuid et setgit n’ont aucun effet si le bit exécutable n’est pas défini. Le bit setuid n’a aucun effet sur les répertoires.

Le mors setgid

Contrairement au bit setuid, le bit setgid a un effet à la fois sur les fichiers et les répertoires. Dans le premier cas, le fichier qui a le bit setgid défini, lorsqu’il est exécuté, au lieu de fonctionner avec les privilèges du groupe de l’utilisateur qui l’a démarré, s’exécute avec ceux du groupe qui possède le fichier : en d’autres termes, l’ID de groupe du processus sera le même que celui du fichier.

Lorsqu’il est utilisé sur un répertoire, en revanche, le bit setgid modifie le comportement standard de sorte que le groupe de fichiers créés à l’intérieur dudit répertoire ne sera pas celui de l’utilisateur qui les a créés, mais celui du répertoire parent lui-même. Ceci est souvent utilisé pour faciliter le partage de fichiers (les fichiers seront modifiables par tous les utilisateurs qui font partie dudit groupe). Tout comme le setuid, le bit setgid peut facilement être repéré (dans ce cas, sur un répertoire de test) :

ls -ld test
drwxrwsr-x. 2 egdoc egdoc 4096 Nov  1 17:25 test

Cette fois, le s est présent à la place du bit exécutable sur le secteur du groupe.

Le morceau collant

Le post-it fonctionne d’une manière différente : bien qu’il n’ait aucun effet sur les fichiers, lorsqu’il est utilisé dans un répertoire, tous les fichiers dudit répertoire ne seront modifiables que par leurs propriétaires. Un cas typique dans lequel il est utilisé implique le répertoire /tmp. Typiquement, ce répertoire est accessible en écriture par tous les utilisateurs du système, donc pour empêcher un utilisateur de supprimer les fichiers d’un autre, le post-it est défini :

ls -ld /tmp
drwxrwxrwt. 14 root root 300 Nov  1 16:48 /tmp

Dans ce cas, le propriétaire, le groupe et tous les autres utilisateurs disposent de toutes les autorisations sur l’annuaire (lecture, écriture et exécution). Le bit collant est identifiable par un t qui est indiqué là où normalement le bit x exécutable est affiché, dans la section « autre ». Encore une fois, un t minuscule implique que le bit exécutable est également présent, sinon vous verriez un T majuscule.

Comment régler des embouts spéciaux

Tout comme les permissions normales, les bits spéciaux peuvent être attribués avec la commande chmod, en utilisant le format numérique ou le format ugo/rwx. Dans le premier cas, les bits setuid, setgid et post-it sont représentés respectivement par une valeur de 4, 2 et 1. Ainsi, par exemple, si nous voulons définir le bit setgid dans un répertoire, nous exécuterions :

chmod 2775 test

Avec cette commande, nous avons défini le bit setgid sur le répertoire, (identifié par le premier des quatre chiffres), et donné tous les privilèges sur celui-ci à son propriétaire et à l’utilisateur qui sont membres du groupe auquel le répertoire appartient, ainsi que les permissions de lecture et d’exécution pour tous les autres utilisateurs (rappelez-vous que le bit d’exécution sur un répertoire signifie qu’un utilisateur est capable de cd ou d’utiliser ls pour énumérer son contenu).

L’autre façon de définir les bits de permissions spéciales est d’utiliser la syntaxe ugo/rwx :

chmod g+s test

Pour appliquer le bit setuid à un fichier, nous aurions exécuté :

chmod u+s file

Pendant l’application du sticky bit :

chmod o+t test

L’utilisation d’autorisations spéciales peut être très utile dans certaines situations, mais si elles ne sont pas utilisées correctement, elles peuvent introduire de graves vulnérabilités, alors réfléchissez-y à deux fois avant de les utiliser.

Articles connexes: