Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

SUID, SGID et sticky bit sur Linux : tout savoir

Dans un article précédent, j’explore les permissions de fichiers dans Linux.
Mais il est très important de définir des autorisations appropriées pour garantir la sécurité absolue de vos données critiques. Tous les utilisateurs, à l’exception du propriétaire et de l’utilisateur root, ont des privilèges limités sur les fichiers et les répertoires. Vous devez disposer des privilèges sudo pour élever vos privilèges. Vous pouvez également gérer les autorisations à l’aide du bit SUID.

Cet article explore ces trois autorisations spéciales dans les systèmes de fichiers Linux.
Nous allons nous plonger dans les détails de chaque permission et discuter de la manière de les définir sur les fichiers et les répertoires. Plus précisément, nous verrons comment définir SUID sur un fichier et SGID sur un répertoire et comment activer la permission sticky bit.

SUID, SGID et sticky bit sur Linux : tout savoir

Qu’est-ce que le SUID ?

SUID, abréviation de Set User ID, est une autorisation spéciale qui peut être attribuée aux fichiers exécutables. Lorsque l’autorisation SUID est activée pour un fichier exécutable, elle permet aux utilisateurs qui exécutent le fichier d’assumer temporairement les privilèges du propriétaire du fichier. Cela signifie que même si un utilisateur ne dispose pas des autorisations nécessaires pour accéder à certaines actions ou les effectuer, il peut le faire en exécutant un fichier doté de l’autorisation SUID.

Si le bit suid est activé sur un exécutable, chaque fois que ce programme est exécuté, le processus acquiert les privilèges du propriétaire du fichier, quel qu’il soit. Par exemple, si j’ai un binaire suid qui appartient à “root” et que j’exécute sous mon nom d’utilisateur normal (non root), il s’exécutera avec toutes les autorisations de root. Il y a aussi SGID.
Dans Linux, certains binaires de Linux ont des bits SUID. Par exemple, le binaire /usr/bin/passwd.
passwd est une commande permettant de modifier le mot de passe de l’utilisateur et possède un bit SUID. Lorsque nous tapons la commande, nous l’exécutons en tant qu’utilisateur root.

Qu'est-ce que le SUID dans Linux

Qu’est-ce que le SGID ?

SGID, qui signifie Set Group ID, est une autre autorisation spéciale qui peut être appliquée aux fichiers et aux répertoires exécutables. Lorsque l’autorisation SGID est activée pour un fichier exécutable, elle permet aux utilisateurs qui exécutent le fichier d’assumer temporairement la propriété de groupe du fichier. Pour les répertoires pour lesquels l’autorisation SGID est activée, les fichiers et répertoires nouvellement créés dans ce répertoire héritent de la propriété de groupe du répertoire parent plutôt que de la propriété de groupe par défaut de l’utilisateur.

L’autorisation SGID est notamment utilisée dans les environnements collaboratifs où plusieurs utilisateurs doivent travailler sur des répertoires partagés. En définissant l’autorisation SGID sur un répertoire partagé, tous les fichiers et répertoires créés dans ce répertoire auront automatiquement la même propriété de groupe, garantissant ainsi une collaboration et un contrôle d’accès adéquats.

Qu'est-ce que le SGID dans Linux

Le SUID, SGID : comment ça marche

L’attribut suid qui te note (s) est utilisé pour exécuter une commande comme propriétaire du fichier au lieu de l’utilisateur qui a émis la commande en premier lieu.

Sur Linux, les mots de passe sont stockés chiffrés dans le fichier /etc/shadow.
J’en parle dans cet article : Comment cracker le mot de passe d’un utilisateur Linux.

Si on jette un coup d’œil aux permissions :

-rw-r----- 1 root shadow 1.1K Jul 27 10:40 /etc/shadow
-rwsr-xr-x 1 root root 63736 Jul 27  2018 /usr/bin/passwd
  • seul root peut écrire dans le fichier /etc/shadow
  • le binaire passwd a des permissions suid indiqué par le s à la place de x
Comprendre le suid sur Linux

Or la commande passwd peut être exécuté par n’importe quel utilisateur pour modifier son mot de passe.
Alors comment le fichier /etc/shadow se met à jour puisque seul root peut écrire dedans ?
Grâce au suid sur le binaire passwd.
En réalité, ce dernier s’exécute en root même si appelé par un utilisateur Linux :

Comprendre le suid sur Linux

Voila tout l’intérêt du suid.
On peut attribuer ou supprimer le suid avec chmod de la manière suivante :

chmod u+s fichier
chmod u-s fichier

Le guid fonctionne dans la même logique pour le groupe et se note (S).

Comment changer le SUID d’un fichier ou répertoire

Pour attribuer le SUID à un fichier, on utilise la commande chmod via l’attribut s.
Voici la syntaxe à utiliser :

chmod u+s <fichier>

Ainsi pour donner le droit SUID sur le fichier script.sh :

chmod u+s script.sh

Une autre façon de définir l’autorisation SUID sur un fichier, il faut utiliser la commande chmod avec la représentation numérique de l’autorisation. La valeur numérique de SUID est 4.

chmod 4xxx <fichier>

Soit pour attribuer les permissions 755 ainsi que l’attribut SUID au fichier script.sh :

chmod 4755 script.sh

Enfin pour retirer l’attribut SUID, on repasse le bit à 0 comme ceci :

chmod 0755 script.sh
Comment changer le SUID d'un fichier ou répertoire

Comment changer le SGID d’un fichier ou répertoire

Pour changer le SGID à un fichier ou répertoire, on utilise aussi la commande chmod pour attribuer l’attribut s au groupe comme ceci :

chmod g+s <fichier>

Vous pouvez aussi utiliser la valeur numérique 2 comme ceci :

chmod 2xxx <fichier>
Comment changer le SUID d'un fichier ou répertoire

Qu’est-ce que le sticky bit

Enfin le sticky bit qui se note (t) est la dernière forme de permissions de fichiers.
Il permet d’interdire la suppression ou déplacement de fichiers dans un répertoire créé par un autre utilisateur.
L’utilisateur ne pourra supprimer que ses propres fichiers.

Cet attribut est utile par exemple dans un dossier partagé NFS, vous désirez que les utilisateurs puissent créer des fichiers dans un répertoire mais ne puissent pas les supprimer.

Enfin sur Linux, le dossier /tmp possède cet attribut t pour éviter les suppressions de fichiers entre applications qui utilisent un utilisateur différent ou entre utilisateurs locaux.

Pour attribuer le sticky bit, utilise l’attribut t avec la commande chmod :

chmod o+t <fichier>
chmod g+s <fichier>

Comment trouver les fichiers avec le bit SUID

Utilisez la commande find pour rechercher tous les fichiers contenant le SUID.
La commande suivante répertorie tous les fichiers dont le bit SUID est défini dans le répertoire actuel :

find . -perm /4000

L’article SUID, SGID et sticky bit sur Linux : tout savoir est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires