Français

Outils de développement · Calculatrice Chmod

Recherche de fichiers inscriptibles et de binaires setuid avec find -perm Audits d'autorisation

· Pourquoi c'est important

chmod unix contrôle d'accès

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

Deux modèles d'autorisation sont responsables de nombreux incidents réels : les fichiers que tout le monde peut modifier et les programmes exécutés en tant qu'utilisateur root. Cet article montre comment trouver les deux avec find -perm et quoi faire à leur sujet.

Le réviseur vous demande une liste que vous n'avez pas : quels fichiers tout utilisateur peut modifier et quels programmes élèvent les privilèges lorsqu'ils sont exécutés.

Une révision d'autorisation commence souvent par des modes déjà collectés ailleurs : peut-être 0002, 4000, 2000 ou une valeur complète telle que 4755. La calculatrice peut décoder ces numéros en autorisations de propriétaire, de groupe et autres, y compris les trois bits spéciaux. Il ne recherche pas les répertoires, n'inspecte pas les binaires et ne produit pas d'inventaire des chemins.

Traitez chaque mode fourni comme une description de bits, et non comme un verdict sur un fichier. Saisissez-le, comparez le champ octal avec l'affichage symbolique et la matrice de cases à cocher, puis enregistrez ce qui a changé. La propriété, les entrées d'ACL, les capacités et l'identité de tout processus utilisant le chemin restent des faits à collecter à partir de l'environnement réel.

World-writable signifie que les autres classes ont w - le modèle octal 0002 et pourquoi -perm -0002 le trouve quels que soient les autres bits

La valeur 0002 isole l'autre bit d'écriture. Dans la disposition ordinaire à trois classes, le chiffre final appartient à toute personne en dehors des classes propriétaire et groupe, et son composant d'écriture a le poids 2. Un mode complet contenant ce bit affichera donc w dans l'autre classe, bien que la calculatrice ne localise pas elle-même ces modes.

Le fait qu'une expression de recherche particulière signifie une correspondance exacte, sur tous les bits ou sur n'importe quel bit appartient à la documentation de recherche, pas à ce convertisseur. Fournissez plutôt un mode résultant. Par exemple, 0666 devient rw-rw-rw-, tandis que 0644 devient rw-r--r-- ; la différence est visible dans le groupe et dans d'autres positions d'écriture sans impliquer que l'un ou l'autre mode convient à un chemin spécifique.

0002 expose l'autre bit d'écriture ; trouver la sémantique correspondante est externe

Le premier chiffre du bit spécial utilise 4 pour setuid et 2 pour setgid. Ainsi, 4755 combine setuid avec les autorisations 755 ordinaires, tandis que 2755 combine setgid avec les mêmes bits de fin. La calculatrice expose ces masques séparément et place leurs lettres symboliques en position d'exécution du propriétaire ou du groupe lors du rendu en mode complet.

L'affaire contient des preuves utiles. Si setuid accompagne l'exécution du propriétaire, la position d'exécution du propriétaire affiche s ; sans exécution, il affiche S. Setgid suit la même règle en position de groupe. Ces sorties décodent un entier fourni, mais elles n'inspectent pas un programme, ne déterminent pas son propriétaire, ne l'exécutent pas ou ne décident pas si un bit spécial est justifié.

4000 et 2000 décodent comme setuid et setgid sans auditer les binaires

La syntaxe de recherche d'autorisations doit être séparée de l'arithmétique des autorisations. La calculatrice accepte un mode symbolique octal ou à neuf caractères et renvoie une valeur de douze bits. Il n'a aucune représentation pour un opérateur de recherche, un prédicat de chemin ou une règle de correspondance, donc une requête en mode exact et une requête avec tous les bits requis ne peuvent pas être distinguées dans cette interface.

Décodez le mode de chaque résultat de recherche externe plutôt que de coller l'expression de recherche. Les trois chiffres ordinaires correspondent au propriétaire, au groupe et à d'autres, tandis qu'un chiffre principal facultatif correspond à setuid, setgid et sticky. Ce flux de travail vérifie les bits signalés mais laisse la couverture de recherche et la sémantique de correspondance à l'outil qui a produit la liste.

Les modes de recherche exacts, tous bits et tous bits nécessitent une documentation de recherche

Supposons qu'un audit effectué ailleurs rapporte 0666 et 4755. La saisie de 0666 donne rw-rw-rw-, rendant les autres écritures visibles dans le dernier triplet. La saisie de 4755 donne rwsr-xr-x : le propriétaire a lu, écrit et exécuté, et setuid remplace le caractère d'exécution du propriétaire par des s minuscules car ce bit d'exécution est présent.

Un deuxième succès tel que 4644 démontre pourquoi la forme symbolique est importante. Il restitue rwSr--r--, avec un S majuscule indiquant setuid alors que l'exécution du propriétaire est absente. La calculatrice peut rendre cette incohérence évidente. Il ne peut toujours pas identifier le chemin, établir à qui il appartient, inspecter son contenu ou recommander le retrait du bit.

Exemple concret : décoder les résultats d'audit fournis sans analyser les chemins

Ne réparez pas automatiquement tous les modes inhabituels. Un mode n'est qu'une entrée dans une décision qui dépend également de la cible, du propriétaire, du groupe et de l'opération requise. La page ne reçoit délibérément rien de ce contexte. Son aperçu de commande est un texte inerte, et même un chemin correctement cité n'est pas ouvert ou vérifié par le navigateur.

Avant de modifier un mode signalé, comparez les valeurs actuelles et proposées un bit à la fois. La suppression des autres écritures de 0666 produit 0664 ; la suppression de setuid de 4755 produit 0755. Ces faits arithmétiques sont reproductibles, mais la question de savoir si l'un ou l'autre changement préserve la charge de travail nécessite des preuves locales au-delà de la calculatrice et au-delà de la procédure pas à pas en bits ordinaires de l'article 501.

Les exceptions et les mesures correctives nécessitent une appropriation locale et des preuves de la charge de travail

Plusieurs dimensions d'audit pertinentes sont absentes. La route n'interroge pas les entrées ACL, les capacités des fichiers, la propriété, les composants de chemin d'accès en écriture, le comportement de montage ou la stratégie obligatoire. Il n'exécute pas non plus de recherche, n'inspecte pas un PATH ou ne traverse pas le stockage. Une conversion propre indique donc uniquement que le numéro fourni et les lettres affichées concordent.

Gardez ces limites visibles dans n'importe quel rapport. Enregistrez le chemin et la méthode de collecte à côté du mode décodé, puis étudiez les identités et les mécanismes d'accès supplémentaires avec les outils externes appropriés. La calculatrice est utile pour vérifier la notation car elle refuse les chiffres octaux invalides et expose les bits spéciaux ; ce n'est pas un scanner de système de fichiers ou un moteur de correction.

À retenir : connaissez vos fichiers inscriptibles et privilégiés - et utilisez la calculatrice Chmod pour traduire chaque mode suspect avant de le modifier

Un audit d'autorisation utile sépare la découverte de l'interprétation. Laissez un processus externe et documenté rassembler les chemins candidats, puis utilisez la calculatrice pour traduire chaque mode renvoyé en autorisations de classe explicites. Vérifiez le chiffre du bit spécial facultatif aussi attentivement que les trois derniers, car 0755, 2755 et 4755 partagent des autorisations ordinaires mais décrivent des valeurs différentes sur douze bits.

Terminez par une conclusion étroite : quels bits de propriétaire, de groupe, autres et spéciaux contient le mode fourni. Ne transformez pas ce calcul en une affirmation non étayée concernant l’exposition ou la politique requise. La calculatrice aide les évaluateurs à lire avec précision les modes suspects ; le système actif doit fournir des preuves de propriété, de charge de travail et d’application avant que quiconque ne les modifie.