Comment utiliser SUID, SGID et Sticky Bits sous Linux

Contenu

Une fenêtre de terminal sur un système Linux.

SUD, SGID et Sticky Bits sont de puissantes autorisations spéciales que vous pouvez définir pour les exécutables et les répertoires sous Linux. Nous partagerons les bénéfices, et les inconvénients possibles, de les utiliser.

Sont déjà en cours d'utilisation

L'intégration de la sécurité dans un système d'exploitation multi-utilisateurs présente plusieurs dilemmes. Prenez le concept (Apparemment) mots de passe de base, par exemple. Tout doit être stocké de sorte que chaque fois que quelqu'un se connecte, le système peut comparer le mot de passe que vous saisissez avec la copie stockée. Apparemment, car les mots de passe sont les clés du royaume, doit être protégé.

En Linux, les mots de passe stockés sont protégés de deux manières: sont cryptées et seule une personne avec root Les privilèges peuvent saisir le fichier contenant les mots de passe. Cela peut sembler bon, mais présente un dilemme: si seulement les gens avec root les privilèges peuvent entrer des mots de passe stockés, Comment ceux qui n'ont pas cet accès changent-ils leurs mots de passe ??

Élever votre statut

Comme d'habitude, Les commandes et programmes Linux s'exécutent avec le même ensemble d'autorisations que la personne qui démarre le programme. Lorsque root exécuter le passwd commander changer un mot de passe, fonctionne avec rootpermis de. Cela signifie que le passwd La commande peut saisir librement les mots de passe stockés dans le /etc/shadow Record.

L'idéal serait un schéma dans lequel n'importe qui dans le système pourrait initier le passwd Programme, mais avoir le passwd programme d'attente rootprivilèges élevés. Cela permettrait à n'importe qui de changer son propre mot de passe.

Le scénario ci-dessus est exactement ce que fait le bit Déterminer l'ID utilisateur (SUID) il le fait. Cette exécuter des programmes et des commandes avec les permissions du propriétaire du fichier, au lieu des autorisations de la personne qui démarre le programme.

Vous élevez le statut de l'émission

Malgré cela, il y a un autre dilemme. La personne doit être empêchée de falsifier le mot de passe de quelqu'un d'autre. Linux intègre le SUID schéma qui vous permet d'exécuter des applications avec un ensemble d'autorisations temporairement empruntées, mais ce n'est que la moitié de l'histoire de la sécurité.

Le mécanisme de contrôle qui empêche quelqu'un de travailler avec le mot de passe de quelqu'un d'autre est inclus dans le passwd Programme, pas le schéma OS et SUID.

Les programmes exécutés avec des privilèges élevés peuvent présenter des risques de sécurité s'ils ne sont pas créés dans un esprit de sécurité. “la sécurité dès la conception”. Cela signifie que la sécurité passe avant tout et s'appuie sur cela en premier.. N'écrivez pas votre programme et essayez plus tard de lui donner une couche de sécurité.

Le plus grand avantage des logiciels open source est vous pouvez regarder le code source vous-même ou se référer à des évaluations par des pairs de confiance. Dans le code source du passwd Programme, il y a des chèques, ainsi vous pouvez voir si la personne qui exécute le programme est root. Différentes capacités sont possibles si quelqu'un root (ou quelqu'un qui utilise sudo).

Cette est le code qui détecte si quelqu'un est root.

Un extrait de code source de "mot de passe.c"

Voici un exemple qui prend en compte. Dû au fait que root vous pouvez changer n'importe quel mot de passe, le programme n'a pas à se soucier des vérifications qu'il effectue régulièrement pour voir quels mots de passe la personne est autorisée à modifier. Ensuite, pour root, cette sauter ces vérifications et quitter la fonction de vérification.

Un extrait de code source de "mot de passe.c".

Avec les principales commandes et utilitaires Linux, vous pouvez être sûr qu'ils ont une sécurité intégrée et que le code a été vérifié souvent. De toute façon, il y a toujours la menace d'exploits encore inconnus. Malgré cela, des correctifs ou des mises à jour apparaissent rapidement pour contrer toute vulnérabilité récemment identifiée.

C'est un logiciel tiers, surtout tout autre qu'open source, vous devez être très prudent lorsque vous utilisez SUID avec. Nous ne disons pas non, mais, s'il le fait, vous devez vous assurer que vous n'exposez pas votre système à des risques. Vous ne voulez pas élever les privilèges d'un programme qui ne va pas s'auto-gouverner correctement et la personne qui l'exécute.

Commandes Linux qui utilisent SUID

Voici quelques-unes des commandes Linux qui utilisent le bit SUID pour accorder des privilèges élevés à la commande lorsqu'elle est exécutée par un utilisateur normal:

ls -l / bin / su
ls -l /bin/ping
ls -l /bin/mount
ls -l /bin/umount
ls -l /usr/bin/passwd

Notez que les noms de fichiers sont surlignés en rouge, indiquant que le bit SUID est défini.

Les permissions sur un fichier ou un répertoire sont généralement représentées par trois groupes de trois caractères: rwx. Cela signifie lire, rédaction et exécution. Si les cartes sont présentes, cette autorisation a été accordée. Si un script (-) au lieu d'une lettre est présent, malgré cela, cette autorisation n'a pas été donnée.

Il existe trois groupes de ces autorisations (de gauche à droite): pour le propriétaire du fichier, pour les membres du groupe d'archives et pour les autres. Quand il SUID bit est défini sur un fichier, ongle “s” représente l'autorisation d'exécution du propriétaire.

Si il SUID bit est défini sur un fichier qui n'a pas de capacités exécutables, ongle “S” majuscule l'indique.

Nous allons voir un exemple. Utilisateur régulier dave écrire le passwd commander:

mot de passe

Les passwd invites de commandes dave pour votre nouveau mot de passe. Nous pouvons utiliser le ps commander pour afficher les détails des processus en cours d'exécution.

nous utiliserons ps avec grep dans une autre fenêtre de terminal et cherchez le passwd traiter. Nous utiliserons également le -e (chaque procédure) Oui -f (format complet) options avec ps.

On écrit la commande suivante:

ps -e -f | mot de passe grep

Deux lignes sont signalées, dont le second est le grep procédure de recherche de commandes avec chaîne “mot de passe” en eux. Malgré cela, est la première ligne qui nous intéresse, car c'est celui du passwd traiter dave jeté.

On peut voir le passwd La procédure est la même que si root je l'avais jeté.

Réglage du bit SUID

Il est facile de changer le SUID un peu avec chmod. Les u+s le mode symbolique définit le SUID peu et le u-s le mode symbolique efface le SUID peu.

Pour illustrer certains des concepts de bits SUID, nous avons créé un petit programme appelé htg. Il se trouve dans le répertoire racine du dave Nom d'utilisateur, et n'a pas le SUID jeu de bits. Quand tu cours, affiche les identifiants d'utilisateur réels et effectifs (UID).

Le réel UID appartient à la personne qui a lancé le programme. L'ID effectif est le compte avec lequel le programme se comporte comme s'il l'avait démarré.

Nous écrivons ce qui suit:

ls -lh htg
./htg

Lorsque nous exécutons la copie locale du programme, on voit que les identifiants réels et effectifs sont configurés dans dave. Ensuite, il se comporte comme un programme normal devrait.

Copions dans le /usr/local/bin répertoire pour les autres à utiliser.

Nous écrivons ce qui suit, à l'aide de chmod pour configurer le SUID bit, et vérifiez plus tard qu'il a été configuré:

sudo cp htg /usr/local/bin
sudo chmod u+s /usr/local/bin/htg
ls -hl /usr/local/bin/htg

Ensuite, le programme est copié et le bit SUID est défini. Nous le relancerons, mais cette fois, nous exécuterons la copie dans le /usr/local/bin dossier:

htg

Même si dave commencé le programme, l'ID effectif est défini dans le root Nom d'utilisateur. donc oui mary démarrer le programme, se produit le même, comme il est montré dans ce qui suit:

htg

L'identifiant réel est mary, et l'ID effectif est root. Le programme s'exécute avec les autorisations de l'utilisateur root.

EN RELATION: Comment utiliser la commande chmod sous Linux

El bit SGID

L'ID de groupe défini (SGID) peu est très similaire à SUID peu. Quand il SGID bit est défini sur un fichier exécutable, le groupe effectif est défini sur le groupe de fichiers. La procédure est exécutée avec les permissions des membres du groupe du fichier, au lieu des autorisations de la personne qui l'a lancé.

Nous ajustons notre htg programme pour montrer également le groupe efficace. Nous allons changer le groupe de htg programme pour être un utilisateur marygroupe par défaut, mary. Nous utiliserons également le u-s Oui g+s modes symboliques avec chown pour supprimer le SUID peu et déterminer le SGID.

Pour le faire, nous écrivons ce qui suit:

racine chown sudo:Marie /usr/local/bin/htg
sudo chmod u-s,g+s /usr/local/bin/htg
ls -lh /usr/local/bin/htg

Tu peux voir le SGID peu désigné par “s” dans les autorisations de groupe. En même temps, notez que le groupe est configuré pour mary et le nom du fichier est maintenant surligné en jaune.

Avant d'exécuter le programme, établissons quels groupes dave Oui mary appartient à. Nous utiliserons le id commande avec le -G option (groupes), pour imprimer tous les identifiants de groupe. Plus tard, nous exécuterons le htg programme comme dave.

On écrit les commandes suivantes:

id -G dave
id -G marie
htg

L'ID de groupe par défaut pour mary il est 1001, et le groupe efficace de la htg le programme est 1001. Ensuite, même lorsqu'il a été publié par dave, fonctionne avec les autorisations des membres du mary grouper. C'est comme si dave avait rejoint le mary grouper.

Appliquons le SGID peu dans un répertoire. Premier, nous allons créer un répertoire appelé “travail” et plus tard, nous changerons votre groupe en “geek”. Plus tard, nous configurerons le SGID peu dans le répertoire.

Lorsque nous utilisons ls pour vérifier la configuration du répertoire, nous utiliserons également le -d (annuaire) afin que nous puissions voir les détails du répertoire, pas son contenu.

On écrit les commandes suivantes:

travail sudo mkdir
sudo chown dave:travail de geek
sudo chmod g+s fonctionne
ls -lh -d travail

Les SGID Le bit et le groupe sont définis “geek”. Cela affectera les éléments créés dans le work annuaire.

Nous écrivons ce qui suit pour entrer le work annuaire, créer un répertoire appelé “démo” et vérifier ses propriétés:

travail sur CD
démo mkdir
ls -lh -d démo

Les SGID peu et groupe “geek” sont automatiquement appliqués au répertoire “démo”.

Écrivons ce qui suit pour créer un fichier avec le touch commande et vérifier ses propriétés:

touche utile.sh
ls -lh utile.sh

Le groupe du nouveau fichier est automatiquement défini sur “geek”.

EN RELATION: Comment utiliser la commande chown sous Linux

Le peu collant

Le sticky bit tire son nom de son objectif historique. Lorsqu'il est configuré dans un exécutable, indique au système d'exploitation que les parties de texte de l'exécutable doivent être conservées en échange, qui accélère sa réutilisation. En Linux, le bit collant n'affecte qu'un seul répertoire; le mettre dans un fichier n'aurait pas de sens.

Lorsque vous placez le bit de colle dans un répertoire, les gens ne peuvent supprimer que les fichiers qui leur appartiennent dans ce répertoire. Ils ne peuvent pas supprimer les fichiers qui appartiennent à quelqu'un d'autre, quelle que soit la combinaison d'autorisations de fichiers définie sur les fichiers.

Cela vous permet de créer un répertoire que tout le monde, et les processus qui démarrent, peut utiliser comme stockage de fichiers partagé. Les fichiers sont protégés car, de nouveau, personne ne peut supprimer les fichiers de quelqu'un d'autre.

Créons un répertoire appelé “partagé”. Nous utiliserons le o+t mode symbolique avec chmod pour déterminer le bit collant dans ce répertoire. Plus tard, nous verrons les autorisations dans ce répertoire, aussi bien que /tmp Oui /var/tmp répertoires.

On écrit les commandes suivantes:

mkdir partagé
sudo chmod o+t partagé
ls -lh -d partagé
ls -lh -d / tmp
ls -lh -d / var / tmp

Si le bit collant est réglé, le bit exécutable du “autre” l'ensemble d'autorisations de fichier est défini sur “t”. Le nom du fichier est également surligné en bleu.

Les /tmp Oui /var/tmp Les dossiers sont deux exemples de répertoires qui ont toutes les autorisations de fichier définies pour le propriétaire, le groupe et les autres (c'est pourquoi ils sont surlignés en vert). Ils sont utilisés comme emplacements partagés pour les fichiers temporaires.

Avec ces autorisations, n'importe qui devrait, théoriquement, pouvoir faire n'importe quoi. Malgré cela, sticky bit les remplace et personne ne peut supprimer un fichier qui ne leur appartient pas.

Rappels

La prochaine est une liste de contrôle rapide de ce que nous avons déjà couvert pour référence future.:

  • SUID ne fonctionne que sur les fichiers.
  • Peut postuler SGID aux répertoires et fichiers.
  • Vous ne pouvez appliquer le sticky bit qu'aux répertoires.
  • Si il “s“,”g“, O “tLes « indicateurs apparaissent en majuscules, le bit exécutable (x) pas configuré.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.