Français

Outils de développement · Calculatrice Chmod

mode symbolique chmod expliqué : u+x, g-w, o=r et a+rX

· Comment ça marche

chmod unix flux de travail du développeur

affectations symboliques affichées sous la forme d'un diagramme de bits d'autorisation Unix distinct
Illustration vectorielle originale de ToolAcre

La forme symbolique de chmod est une petite grammaire : qui, opérateur, quels bits. Cet article le démonte pour que u+x et go-rwx deviennent évidents et montre quand le symbolique bat l'octal.

Un script de déploiement plein de lettres — chmod u+x,go-w déployer.sh fonctionne, mais personne dans l'équipe ne peut dire ce que cela change

Une commande telle que u+x ressemble à l'affichage symbolique de la calculatrice, mais les deux formulaires ont des tâches différentes. Le champ symbolique modifiable accepte neuf positions d'autorisation, éventuellement précédées d'un caractère de type de fichier reconnu. En revanche, l'argument chmod généré énonce des affectations complètes avec les clauses u=, g= et o=, il représente donc un mode fixe plutôt que d'analyser un changement relatif.

La saisie de 750 rend la distinction concrète. L'affichage est rwxr-x---, tandis que l'affectation générée est u=rwx,g=rx,o=. Les deux décrivent le même propriétaire, le même groupe et d'autres bits, mais seul le second est formaté comme argument chmod. La page n'exécute jamais cette commande. Il expose la représentation afin que la valeur proposée puisse être révisée avant toute action shell distincte.

La calculatrice sépare un affichage de style ls de la liste d'affectations qu'elle génère

Les lettres u, g et o apparaissent dans l'affectation générée car elles désignent le propriétaire, le groupe et autres. Chaque sortie nomme explicitement les trois classes, y compris une clause vide lorsqu'une classe n'a aucune autorisation. La calculatrice n'analyse pas la grammaire ou le raccourci omis. Sa saisie part d'un mode terminé, et non d'instructions dont le résultat dépend d'une cible existante.

Cette correction évite une subtile demande excessive. La matrice peut montrer exactement quelle classe reçoit la lecture, l'écriture ou l'exécution, mais elle ne peut pas décider ce que signifierait un sélecteur de classe omis dans une autre implémentation de chmod. Comparez plutôt les trois colonnes de la matrice avec les trois clauses d'affectation. Leur accord vérifie la valeur fixe sans s'appuyer sur des règles de commande relative que cette interface n'implémente pas.

Quelles lettres apparaissent dans les affectations générées ; relatif omis - dont la grammaire n'est pas analysée

Le générateur d'affectation utilise = pour chaque classe ordinaire. Ce choix reconstruit exactement le propriétaire, le groupe et les autres triplets demandés, y compris en effaçant une classe en émettant un côté droit vide. Bien que + et - appartiennent à des commandes chmod symboliques, ils ne sont pas acceptés comme entrée de la calculatrice. La page ne modélise donc pas les ajouts ou suppressions incrémentiels à partir d’un mode de démarrage inconnu.

Une comparaison d'un bit montre ce que le flux de travail pris en charge peut prouver. Le mode 750 restitue rwxr-x--- ; changer le chiffre de groupe en 7 produit rwxrwx--- et change g=rx en g=rwx. La calculatrice identifie les modes avant et après terminés. Il n'évalue pas g+w par rapport à un fichier actif, car aucun mode, chemin, système de fichiers ou exécution de commande actuel ne participe à la conversion.

L'opérateur généré est =, tandis que la grammaire d'entrée + et - reste en dehors de l'outil

L'analyseur reconnaît r et w dans leurs positions fixes, plus x ou - dans les positions d'exécution ordinaires. Il accepte également s, S, t et T où des bits spéciaux partagent ces positions. Capital X est différent : il appartient à la grammaire relative chmod et n'est pas pris en charge ici. La fourniture de X est rejetée plutôt que interprétée silencieusement comme un bit d'exécution ordinaire.

Les lettres spéciales minuscules et majuscules sont délibérément mises en œuvre. Setuid et setgid utilisent s lorsque leur bit d'exécution correspondant est présent et S lorsqu'il est absent ; sticky utilise t ou T selon la même règle dans la position autre exécution. La ligne spéciale et le résumé à quatre chiffres préservent ces bits. Rien de tout cela n’ajoute la prise en charge de la sélection conditionnelle en majuscule-X dans les fichiers et répertoires.

L'analyseur accepte r, w, x, s, S, t et T ; Le X majuscule n'est pas pris en charge

Les expressions de copie de classe telles que g=u ne sont pas implémentées. La calculatrice ne lit jamais une classe source à partir d'un objet existant ni n'applique les bits d'une classe à une autre. Il reçoit un mode octal complet ou de style ls, convertit cette valeur en booléens nommés et émet des indicateurs explicites pour chaque classe. Tout résultat copié doit être calculé ailleurs avant que cette page puisse l'inspecter.

Supposons qu'une étape externe détermine que le propriétaire et le groupe doivent tous deux avoir rwx tandis que les autres n'en ont pas. La saisie de 770 donne rwxrwx--- et u=rwx,g=rwx,o=. Cela confirme le résultat final mais ne prouve pas comment il a été obtenu. La propriété reste également inconnue : le convertisseur étiquette les classes sans identifier le véritable propriétaire, groupe ou processus qui rencontrerait la cible.

La copie des autorisations entre les classes n'est pas implémentée

Le mode 0750 est accepté avec son zéro non significatif et analysé comme la même valeur que 750. Le chiffre du propriétaire 7 active la lecture, l'écriture et l'exécution ; le chiffre de groupe 5 active la lecture et l'exécution ; l'autre chiffre 0 n'active rien. L'affichage synchronisé devient rwxr-x---, et le résumé toujours à quatre chiffres maintient 0750 visible en tant que valeur d'examen sans ambiguïté.

L'affectation symbolique générée pour ce mode fixe est u=rwx,g=rx,o=. Ses trois clauses correspondent directement aux colonnes de la matrice, tandis que l'aperçu de la commande octale utilise 750 sauf si un bit spécial nécessite un quatrième chiffre. Un chemin fourni peut être cité dans l'aperçu, mais il n'est jamais ouvert. L'exemple vérifie la représentation, et non la propriété, l'autorisation ou une modification d'autorisation réussie.

Exemple concret : 0750 en mode fixe et liste d'affectations générée

Les modifications basées sur les références, la gestion des liens symboliques et les opérations ACL restent en dehors de ce convertisseur. Il n'y a pas d'entrée de fichier de référence, de parcours de chemin, de modèle d'entrée ACL ou de requête de système de fichiers dans la page. La sélection de la récursivité ajoute uniquement un indicateur -R affiché. Par conséquent, la commande générée ne peut pas indiquer quels objets seraient atteints ni si une autre couche de contrôle d'accès modifie le résultat effectif.

Une entrée invalide fournit une vérification des limites utile. Une lettre d'autorisation égarée, un X non pris en charge, un marqueur de fin ou un chiffre octal mal formé sont rejetés au lieu d'être réparés. La correction du texte vers un affichage à neuf caractères pris en charge produit un mode et des vues synchronisées. Cette acceptation prouve seulement que la chaîne correspond aux douze bits implémentés ; il ne valide pas une fonctionnalité chmod externe ou un environnement cible.

Les opérations de référence, de lien symbolique et d'ACL restent en dehors de ce convertisseur

La distinction pratique se situe entre un affichage de style ls et une affectation fixe générée, et non entre une entrée symbolique relative et une entrée octale absolue. Les deux formulaires modifiables représentent un mode terminé. La calculatrice convertit l'un ou l'autre en les mêmes entiers, matrices, résumés, explications et aperçus, puis émet des clauses explicites u=, g= et o= pour le formulaire de commande symbolique.

Utilisez ces vues synchronisées pour détecter les erreurs arithmétiques. Si 750, rwxr-x--- et u=rwx,g=rx,o= apparaissent ensemble, le mode fixe est cohérent en interne. Arrêtez-vous là à moins que le système actuel ne fournisse plus de preuves. La page n'analyse pas les opérateurs relatifs, les sélecteurs omis, la copie de classe ou le X majuscule, et elle ne peut pas déterminer si le mode traite l'opération ayant réellement échoué.