271 votes

Pourquoi "chmod -R 777 /" est-il destructeur ?

Il s'agit d'un Question canonique sur l'autorisation des fichiers et Pourquoi 777 est "destructeur".

Je ne demande pas comment résoudre ce problème, car il y a déjà une tonne de références à ce sujet sur Server Fault (réinstaller l'OS). Pourquoi fait-il quelque chose de destructeur ?

Si vous avez déjà exécuté cette commande, vous avez à peu près immédiatement détruit votre système d'exploitation. Je ne comprends pas bien pourquoi la suppression des restrictions a un quelconque impact sur les processus existants. Par exemple, si je n'ai pas accès en lecture à quelque chose et qu'après une rapide erreur de frappe dans le terminal, j'y ai soudainement accès... pourquoi cela provoque-t-il une panne de Linux ?

3 votes

J'ai retenu mon souffle en voyant cette question.

359voto

voretaq7 Points 78924

Tout d'abord, une petite remarque terminologique : chmod ne supprimer autorisations. Il s'agit CHANGEMENTS les.


Et maintenant, le cœur du problème : le mode 777 signifie "Tout le monde peut lire, écrire ou exécuter ce fichier". autorisation donnée à chacun de faire (effectivement) ce qu'il veut.

Pourquoi est-ce mauvais ?

  1. Vous venez de permettre à tout le monde de lire/modifier tous les fichiers de votre système.
    • Dites adieu à la sécurité des mots de passe (n'importe qui peut lire le fichier shadow et craquer vos mots de passe, mais pourquoi s'en préoccuper ? Changez simplement de mot de passe ! C'est beaucoup plus simple).
    • Dites adieu à la sécurité de vos binaires (quelqu'un peut simplement écrire un nouveau fichier login qui les laisse entrer à chaque fois).
    • Dites adieu à vos dossiers : Un utilisateur se trompe d'adresse rm -r / et c'est fini. On a dit à l'OS de les laisser faire ce qu'ils voulaient !
  2. Vous avez énervé tous les programmes qui vérifient les autorisations sur les fichiers avant de démarrer.
    sudo , sendmail et une foule d'autres ne démarrent tout simplement plus. Ils examinent les autorisations des fichiers clés, constatent qu'elles ne sont pas ce qu'elles devraient être et renvoient un message d'erreur.
    De même ssh se cassera la figure (les fichiers de clés doivent avoir des permissions spécifiques, sinon ils sont "non sécurisés" et SSH refusera par défaut de les utiliser).
  3. Vous avez effacé les bits setuid / setgid des programmes qui les avaient.
    Le mode 777 est en fait 0777 . Parmi les éléments de ce chiffre de tête figurent les setuid y setgid bits.
    La plupart des programmes qui sont setuid/setgid ont ce bit activé parce qu'ils doivent fonctionner avec certains privilèges. Ils sont cassés maintenant.
  4. Vous avez cassé /tmp y /var/tmp L'autre élément de ce premier chiffre octal qui a été mis à zéro est le sticky bit -- Ce qui protège les dossiers dans /tmp (et /var/tmp ) d'être supprimées par des personnes qui ne les possèdent pas.
    Il existe (malheureusement) de nombreux scripts scripts de mauvaise qualité qui "nettoient" en faisant un rm -r /tmp/* et sans le bit collant sur /tmp vous pouvez dire adieu à tous les fichiers de ce répertoire.
    La disparition des fichiers scratch peut vraiment perturber certains programmes mal écrits...
  5. Vous avez fait des ravages dans /dev /proc et systèmes de fichiers similaires
    Le problème se pose davantage sur les anciens systèmes Unix, où le système /dev est un vrai système de fichiers, et les éléments qu'il contient sont des fichiers spéciaux créés avec mknod Cependant, sur n'importe quel système, le fait de modifier les permissions de votre périphérique peut entraîner des problèmes importants, qu'il s'agisse de risques de sécurité évidents (tout le monde peut lire chaque TTY) ou de causes potentielles moins évidentes d'une panique du noyau.
    Credit to @Tonny for pointing out this possibility
  6. Les douilles et les tuyaux peuvent se briser ou présenter d'autres problèmes. Les sockets et les tuyaux peuvent se briser complètement ou être exposés à des injections malveillantes du fait qu'ils sont rendus inscriptibles dans le monde.
    Credit to @Tonny for pointing out this possibility
  7. Vous avez rendu tous les fichiers de votre système exécutables
    De nombreuses personnes ont . dans leur PATH (vous ne devriez pas !) - Cela pourrait causer une surprise désagréable car n'importe qui peut maintenant déposer un fichier commodément nommé comme une commande (disons make ou ls et ont une chance de vous faire exécuter leur code malveillant.
    Credit to @RichHomolka for pointing out this possibility
  8. Sur certains systèmes chmod réinitialise les listes de contrôle d'accès (ACL)
    Cela signifie que vous risquez de devoir recréer toutes vos listes de contrôle d'accès (ACL) en plus de devoir corriger les autorisations partout (c'est un exemple concret de la destructivité de la commande).
    Credit to @JamesYoungman for pointing out this possibility

Les parties du système qui fonctionnent déjà continueront-elles à fonctionner ? Probablement, au moins pendant un certain temps.
Mais la prochaine fois que vous aurez besoin de lancer un programme, de redémarrer un service, ou même de redémarrer la boîte, vous risquez de souffrir car les points 2 et 3 ci-dessus vont se manifester.

104voto

jammus Points 1796

Une chose importante est qu'il existe de nombreux outils comme ssh/sudo qui vérifient les permissions du système de fichiers pour les fichiers de configuration clés. Si les permissions sont incorrectes, ces outils sont conçus pour échouer, car cela indiquerait un grave problème de sécurité. Sur mon système de test Debian et peut-être sur d'autres, la possibilité de se connecter échoue, probablement parce que le binaire de connexion ou quelque chose dans PAM vérifie les permissions.

Ce n'est donc pas vraiment le système qui est détruit, mais plutôt le fait que de nombreux outils sont conçus pour échouer immédiatement lorsque les autorisations ne sont pas correctes.

Si vous redémarrez un système après avoir effectué une chmod 777 -R / il démarre, et vous pouvez lancer des processus qui ne sont pas soumis à des contrôles d'autorisation explicites. Le système n'est donc pas vraiment mort, il est juste quelque peu inutilisable par conception .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X