Français

Outils de développement · Calculatrice Chmod

Le quatrième chiffre chmod : comment fonctionnent setuid, setgid et le sticky bit

· Comment ça marche

chmod unix flux de travail du développeur

bits spéciaux affichés sous la forme d'un diagramme de bits d'autorisation Unix distinct
Illustration vectorielle originale de ToolAcre

Les modes tels que 4755 et 2775 comportent un chiffre initial qui modifie l'identité du nom d'exécution d'un programme ou le propriétaire des nouveaux fichiers. Cet article explique les trois bits spéciaux et comment ils apparaissent dans ls -l. Parcours de répertoire

Le s dans drwxrwsr-x — un répertoire de projet partagé se comporte différemment et la sortie ls a une lettre qui ne figure pas dans l'aide-mémoire de base

Le s dans rwxrwsr-x enregistre deux faits en une seule position : setgid est activé et l'exécution de groupe est également activée. L'implémentation stocke setgid sous la forme octale 2000, puis remplace s le caractère d'exécution de groupe. Avec un marqueur de type de répertoire sélectionné, le mode 2775 apparaît sous la forme drwxrwsr-x tandis que le résumé à quatre chiffres préserve le premier chiffre du bit spécial.

Cette sortie est une conversion, pas une observation du système de fichiers. Le sélecteur de cible modifie la façon dont la page explique les bits, mais il n'ouvre jamais de répertoire ni n'examine la propriété. Pour un répertoire, l'explication implémentée indique que les fichiers nouvellement créés héritent du groupe du répertoire. Qu’un système de stockage particulier applique ce comportement ou qu’une autre politique affecte l’accès nécessite des preuves au-delà de ce calculateur.

Le quatrième chiffre et ses lettres — 4, 2 et 1 comme préfixe sur le mode familier, affichés par s et t en position d'exécution, en majuscule lorsque le bit d'exécution en dessous est désactivé

Le premier chiffre octal combine trois masques indépendants : setuid est 4000, setgid est 2000 et sticky est 1000. Leurs lettres occupent des positions d'exécution existantes plutôt que d'ajouter des caractères à l'affichage à neuf positions. Setuid utilise la position de propriétaire, setgid la position de groupe et sticky l'autre position. La matrice expose les trois séparément de la lecture, de l'écriture et de l'exécution ordinaires.

Case révèle le bit d'exécution sous-jacent. Le mode 4755 restitue rwsr-xr-x car l'exécution du propriétaire accompagne setuid ; 4644 rend rwSr--r-- parce que ce n'est pas le cas. L'analyseur relit les deux formulaires dans les bits spéciaux et d'exécution correspondants. La même règle inférieure contre supérieure produit s ou S pour setgid et t ou T pour sticky, préservant toutes les combinaisons pendant les allers-retours.

setuid sur les exécutables — comment /usr/bin/passwd s'exécute avec les privilèges du propriétaire du fichier et pourquoi Linux ignore setuid sur les scripts interprétés

Pour un fichier normal, l'explication setuid implémentée dépend de l'exécution du propriétaire. Lorsque les deux bits sont présents, la page indique que l'exécution du fichier utilise l'identité du propriétaire du fichier plutôt que celle de l'appelant. Lorsque setuid est présent sans exécution du propriétaire, l'affichage utilise un S majuscule et explique qu'il n'y a rien à exécuter. Il s'agit de la portée corrigée et basée sur la source de la section.

La calculatrice n'identifie pas un exécutable particulier, n'en lance pas un et n'inspecte pas la façon dont une plateforme traite les scripts. Sa preuve est le mode fourni et le choix de la cible. Le mode 4755 peut être décomposé en setuid plus rwxr-xr-x, et l'aperçu de l'affectation ajoute u+s après les clauses ordinaires. Cela vérifie uniquement le rendu et l'explication ; l’adéquation du programme et son exécution effective restent des questions externes.

rendu setuid et explication pour les fichiers normaux

Setgid sur un répertoire est représenté indépendamment des autorisations de groupe ordinaires. Le mode 2775 combine le masque 2000 avec le propriétaire et le groupe 7 et d'autres 5. L'affichage rwxrwsr-x permet au groupe de lire, d'écrire et d'exécuter tout en remplaçant le x visible par s. L'explication du répertoire associe le bit spécial à l'héritage du groupe du répertoire pour les fichiers nouvellement créés.

La suppression de group perform tout en conservant setgid modifie la lettre de position du groupe en S majuscule. Cet avertissement visible découle directement du moteur de rendu, quelle que soit la formulation cible. La page peut comparer ces valeurs complétées et afficher quelle case à cocher a changé, mais elle ne peut pas inspecter un répertoire partagé, son groupe actuel ou les identités créant des entrées. L’accord entre les points de vue est une preuve arithmétique et non une approbation opérationnelle.

Le problème des répertoires : suppression restreinte dans /tmp et pourquoi 1777 n'est pas la même chose que 777

Sticky occupe la position d'autre exécution et contribue au 1000 octal. Pour le mode répertoire 1777, toutes les autorisations ordinaires restent activées et le caractère symbolique final devient t. L'explication du répertoire implémentée ajoute une restriction de suppression et de renommage, tandis que l'explication 777 met en garde contre un répertoire inscriptible sans sticky. Ainsi, le convertisseur rend visible la différence d'un bit sans modifier les triples rwx sous-jacents.

Si sticky est présent sans autre exécution, le caractère final est un T majuscule à la place. L'analyseur et le moteur de rendu préservent cette distinction dans les deux sens. La page n'inspecte pas un véritable répertoire partagé, les propriétaires d'entrées ou les tentatives de suppression. Sa conclusion fiable est plus étroite : l'entier fourni contient du sticky, son compagnon d'exécution est visible via la casse et un texte explicatif orienté répertoire est sélectionné.

Exemple pratique : création de 2775 pour un répertoire partagé – dériver les chiffres et le chmod symbolique équivalent g+s,a+rwx,o-w

Construisez 2775 comme quatre composants visibles : chiffre spécial 2 pour setgid, chiffre de propriétaire 7 pour rwx, chiffre de groupe 7 pour rwx et autre chiffre 5 pour r-x. La saisie de la valeur complétée produit rwxrwsr-x. La matrice sélectionne setgid séparément, tandis que le résumé nomme le propriétaire, le groupe et d'autres autorisations à côté de ce bit spécial.

La liste d'affectations générée est u=rwx,g=rwx,o=rx,g+s. Ceci diffère de l'affichage à neuf caractères mais représente la même valeur à douze bits. Le choix du répertoire modifie l'explication du libellé d'héritage de groupe implémenté ; le choix du fichier modifie le libellé sans changer 2775. Le calculateur ne vérifie jamais le groupe cible ni ne crée de fichier, l'exemple reste donc un modèle plutôt qu'une prescription de déploiement.

Exemple concret : création et lecture de 2775 pour un modèle de répertoire partagé

Le comportement du montage, les capacités et la sémantique supplémentaire de la plate-forme ne sont pas modélisés. La page n'a pas d'entrée de montage, d'ensemble de fonctionnalités, de requête de noyau ou de sonde de système de fichiers. Il peut représenter setuid, setgid et sticky et peut varier son explication entre les fichiers et répertoires normaux. Il ne peut pas déterminer si une règle externe neutralise, étend ou interprète ces bits différemment sur une cible réelle.

Même le libellé de la source ne doit pas être généralisé au-delà de l'interface. Un mode de bits spéciaux valide prouve que les affectations de l'analyseur, du moteur de rendu, de la matrice, du résumé et des générations concordent. Cela ne prouve pas qu’un comportement d’exécution, d’héritage ou de suppression s’est produit. Gardez les revendications de stratégie non prises en charge hors du diagnostic et traitez la commande copiée comme du texte inerte jusqu'à ce qu'un environnement inspecté séparément fournisse le contexte manquant.

La politique de montage, les capacités et la sémantique des coins non implémentées restent externes

Le plat à emporter mis en œuvre est un aller-retour avec une signification positionnelle. Setuid correspond à la position d'exécution du propriétaire, setgid à l'exécution de groupe et collant à une autre exécution. Les minuscules signifient que le bit d'exécution associé est activé ; les majuscules signifient qu'il est éteint. Le premier chiffre octal et les cases à cocher dédiées préservent les mêmes informations, donc aucun élément spécial ne doit être déduit de la seule prose.

Testez un mode spécial en comparant toutes les représentations. Pour 2775, attendez-vous au début 2, group-position s, une case setgid cochée et un ajout g+s généré. Une incompatibilité exposerait un problème de conversion. L'accord n'établit qu'un seul mode cohérent. La propriété, la politique de montage, les capacités, les règles d'application et les conséquences de l'exécution de chmod restent au-delà des preuves du calculateur de navigateur.