Il s'agit d'une question canonique sur l'autorisation des fichiers et pourquoi 777 est "destructrice".
Je ne demande pas comment résoudre ce problème, car il existe déjà une tonne de références sur Server Fault (réinstallez le système d'exploitation). Pourquoi fait-il quelque chose de destructeur?
Si vous avez déjà exécuté cette commande, vous détruisez presque immédiatement votre système d'exploitation. Je ne comprends pas pourquoi la suppression des restrictions a un impact sur les processus existants. Par exemple, si je n'ai pas accès en lecture à quelque chose et qu'après une brève erreur de frappe dans le terminal, j'ai maintenant un accès correct ... pourquoi cela provoque-t-il la rupture de Linux?
Tout d'abord, une minuscule terminologie nitpick: chmod
ne supprime pas les autorisations . Il [~ # ~] change [~ # ~] eux.
Maintenant, la viande de la question - Le mode 777
signifie "N'importe qui peut lire, écrire ou exécuter ce fichier" - Vous avez donné la permission à quiconque de faire (efficacement) ce qu'il veut.
Maintenant, pourquoi est-ce mauvais?
login
qui le laisse entrer à chaque fois).rm -r /
et c'est fini. On a dit à l'OS de les laisser faire ce qu'ils voulaient!Sudo
, sendmail
, et une multitude d'autres ne démarre tout simplement plus. Ils examineront les autorisations des fichiers clés, verront qu'ils ne sont pas ce qu'ils sont censés être et repousseront un message d'erreur.ssh
se cassera horriblement (les fichiers clés doivent avoir des autorisations spécifiques, sinon ils sont "non sécurisés" et par défaut SSH refusera de les utiliser.)777
est en fait 0
777
. Parmi les éléments de ce premier chiffre figurent les bits setuid
et setgid
./tmp
et /var/tmp
L'autre chose dans ce premier chiffre octal qui a obtenu zéro est le sticky bit
- Celui qui protège les fichiers dans /tmp
(et /var/tmp
) d'être supprimé par des personnes qui n'en sont pas propriétaires.rm -r /tmp/*
, et sans le bit collant réglé sur /tmp
vous pouvez embrasser tous les fichiers de ce répertoire au revoir./dev
/proc
et systèmes de fichiers similaires/dev
est un véritable système de fichiers, et les éléments qu'il contient sont des fichiers spéciaux créés avec mknod
, car la modification des autorisations sera préservée lors des redémarrages, mais sur tout système dont les autorisations sur votre appareil peuvent changer, cela peut entraîner des problèmes importants, à partir de la des risques de sécurité évidents (tout le monde peut lire tous les ATS) pour les causes potentielles moins évidentes d'une panique du noyau.Credit to @Tonny for pointing out this possibility
Credit to @Tonny for pointing out this possibility
.
dans leur variable d'environnement PATH
(vous ne devriez pas!) - Cela pourrait provoquer une surprise désagréable car maintenant n'importe qui peut déposer un fichier nommé comme une commande (dites make
ou ls
, et essayez de vous faire exécuter leur code malveillant.Credit to @RichHomolka for pointing out this possibility
chmod
réinitialisera les listes de contrôle d'accès (ACL)Credit to @JamesYoungman for pointing out this possibility
Les parties du système qui fonctionnent déjà continueront-elles de fonctionner? Probablement, pendant un certain temps au moins.
.
Une chose importante est qu'il existe de nombreux outils comme ssh/Sudo qui vérifient les autorisations du système de fichiers pour les fichiers de configuration clés. Si les autorisations sont incorrectes, ces outils sont conçus pour échouer, car cela indiquerait un problème de sécurité grave. 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 a des vérifications d'autorisation.
Ce n'est donc pas vraiment que le système est détruit - c'est que de nombreux outils sont conçus pour échouer immédiatement lorsque les autorisations sont incorrectes.
Si vous redémarrez un système après avoir effectué une chmod 777 -R /
il démarrera et vous pourrez démarrer des processus qui n'ont pas de contrôles d'autorisation explicites. Donc, le système n'est pas vraiment mort, juste quelque peu inutilisable by-design.