C’est une question canonique sur l’autorisation de fichier et pourquoi 777 est "destructif".
Je ne vous 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 après un brouillage rapide dans le terminal, tout à coup, j'ai maintenant bien accès ... pourquoi cela cause-t-il une panne de Linux?
linux
permissions
chmod
samwise
la source
la source
Réponses:
Tout d'abord, un nitpick de terminologie mineure:
chmod
ne supprime pas les autorisations. Cela les change .Maintenant le fond du problème - Le mode
777
signifie "Tout le monde 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
programme qui les laisse entrer à tout moment).rm -r /
et tout est fini. On a dit à l'OS de les laisser faire ce qu'ils voulaient!sudo
,sendmail
et une foule d’autres ne commenceront tout simplement plus. Ils examineront les droits d'accès aux fichiers clés, constateront qu'ils ne sont pas ce qu'ils sont censés être et renverront un message d'erreur.De la même manière
ssh
, les disques casseront horriblement (les fichiers de clé doivent avoir des autorisations spécifiques, sinon ils sont "non sécurisés" et par défaut, SSH refusera de les utiliser.)Le mode
777
est réellement . Parmi les éléments de ce premier chiffre figurent les bits et . La plupart des programmes qui sont setuid / setgid ont ce bit défini car ils doivent s'exécuter avec certains privilèges. Ils sont cassés maintenant.0
777
setuid
setgid
/tmp
et/var/tmp
L'autre élément de ce chiffre octal qui a été mis à zéro est lesticky bit
- Cela protège les fichiers entre/tmp
(et/var/tmp
) d'être supprimés par des personnes qui ne les possèdent pas.Il y a (malheureusement) beaucoup de scripts mal conçus qui "nettoient" en faisant un
rm -r /tmp/*
, et sans le truc collant,/tmp
vous pouvez embrasser tous les fichiers de ce répertoire.Faire disparaître des fichiers de travail peut vraiment perturber certains programmes mal écrits ...
/dev
/proc
des systèmes de fichiers similaires.Il s'agit davantage d'un problème sur les systèmes Unix plus anciens, qui
/dev
sont un système de fichiers réel, et les éléments qu'il contient sont des fichiers spéciaux créés avecmknod
, car les modifications apportées aux autorisations seront préservées lors des redémarrages, mais sur tout système. le fait de modifier les autorisations de votre appareil peut entraîner des problèmes importants, allant des risques de sécurité évidents (tout le monde peut lire chaque ATS) aux causes moins évidentes d'une panique du noyau.Credit to @Tonny for pointing out this possibility
Credit to @Tonny for pointing out this possibility
De nombreuses personnes ont
.
dans leurPATH
environnement une variable (vous ne devriez pas!) - Cela pourrait causer une mauvaise surprise car tout le monde peut maintenant déposer un fichier nommé commodément comme une commande (par exemple,make
ouls
, et avoir une chance de vous faire exécuter leur code malveillant.Credit to @RichHomolka for pointing out this possibility
chmod
, les listes de contrôle d'accès (ACL) seront réinitialisées.Cela signifie que vous devrez peut-être recréer toutes vos listes de contrôle d'accès en plus de fixer les autorisations partout (ce qui constitue un exemple réel de destruction de la commande).
Credit to @JamesYoungman for pointing out this possibility
Les parties du système en cours d'exécution continueront-elles à fonctionner? Probablement pendant au moins un moment.
Mais la prochaine fois que vous aurez besoin de lancer un programme, de redémarrer un service, ou encore, interdisez de redémarrer la boîte dans laquelle vous vous trouvez pour un monde blessé, car les n ° 2 et n ° 3 ci-dessus se dresseront la tête laide.
la source
/tmp
seraient fixés après un redémarrage. Bien que beaucoup d'autres choses semblent être brisées. Au moins dans la VM que je viens de tester, il semble qu’un redémarrage ait corrigé les/tmp
autorisations. Il doit y avoir quelque chose dans un script de démarrage quelque part.tmpfs
habituellement se règlent eux-mêmes, ceux qui ont / tmp sur le disque peuvent (cela dépend de leurs scripts de démarrage)find / -perms -4000 -type f
etfind / -perms -2000 -type f
de voir divers fichiers binaires qui dépendent de ces indicateurs.everyone
est défini comme l'union de jeu , y compris l'utilisateur qui possède le fichier, les utilisateurs du groupe qui possède le fichier, et les utilisateurs qui ne répondent pas à l' un de ces critères (littéralement les trois chiffres d'autorisation octal:User
,Group
etOther
). En d'autres termes, tout utilisateur ayant accès au système . ("Access" dans ce contexte pourrait être un compte shell, c’est la façon dont je le traiterais normalement, mais il inclut également l’accès via un formulaire Web / CGI qui écrit des données sur le disque: l’www
utilisateur peut maintenant écrire dans n’importe quel fichier du système. , ce qui signifie que les visiteurs aléatoires peuvent aussi.)Un aspect important 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 grave problème de sécurité. Sur mon système de test Debian et peut-être sur d'autres, la capacité de connexion échoue, probablement parce que le binaire de connexion ou quelque chose dans PAM dispose de contrôles d'autorisation.
Ce n'est donc pas vraiment que le système est détruit, mais bien de nombreux outils sont conçus pour échouer immédiatement lorsque les autorisations sont erronées.
Si vous redémarrez un système après l'avoir effectué,
chmod 777 -R /
il démarrera, et vous pouvez démarrer des processus sans vérification explicite des autorisations. Ainsi, le système n'est pas vraiment mort, mais une conception un peu inutilisable .la source