Dies ist eine kanonische Frage zur Dateiberechtigung und warum 777 "destruktiv" ist.
Ich frage nicht, wie man dieses Problem behebt, da es bereits unzählige Verweise auf Server Fault gibt (installieren Sie das Betriebssystem neu). Warum macht es überhaupt etwas zerstörerisches?
Wenn Sie diesen Befehl jemals ausgeführt haben, zerstören Sie Ihr Betriebssystem so ziemlich sofort. Mir ist nicht klar, warum das Entfernen von Einschränkungen Auswirkungen auf vorhandene Prozesse hat. Zum Beispiel, wenn ich keinen Lesezugriff auf etwas habe und nach einem kurzen Tippfehler im Terminal plötzlich Zugriff habe ... warum bricht Linux dadurch zusammen?
linux
permissions
chmod
samweise
quelle
quelle
Antworten:
Zunächst einmal eine kleinere Terminologie nitpick:
chmod
nicht entfernen Berechtigungen. Es verändert sie.Jetzt kommt es auf das Wesentliche an - Der Modus
777
bedeutet "Jeder kann diese Datei lesen, schreiben oder ausführen" - Sie haben jedem die Erlaubnis erteilt , (effektiv) zu tun, was immer er will.Warum ist das so schlimm?
login
Programm schreiben , das ihn jedes Mal einlässt).rm -r /
und es ist alles vorbei. Das Betriebssystem wurde angewiesen, sie tun zu lassen, was sie wollten!sudo
,,sendmail
und viele andere werden einfach nicht mehr starten. Sie überprüfen die Berechtigungen für Schlüsseldateien, stellen fest, dass sie nicht den Anforderungen entsprechen, die sie erfüllen sollen, und melden sich mit einer Fehlermeldung zurück.Ebenso
ssh
wird es fürchterlich kaputt gehen (Schlüsseldateien müssen bestimmte Berechtigungen haben, andernfalls sind sie "unsicher" und SSH wird sie standardmäßig ablehnen.)Der Modus
777
ist eigentlich . Unter den Dingen in dieser führenden Ziffer befinden sich die und Bits. Die meisten Programme, die setuid / setgid sind, haben dieses Bit gesetzt, weil sie mit bestimmten Berechtigungen ausgeführt werden müssen. Sie sind jetzt kaputt.0
777
setuid
setgid
/tmp
und/var/tmp
die andere Sache in dieser führenden Oktal-Ziffer, die Null erreicht hat, ist diesticky bit
- die Dateien in/tmp
(und/var/tmp
) davor schützt , von Leuten gelöscht zu werden, die sie nicht besitzen.Es gibt (leider) viele schlecht benommene Skripte, die durch Ausführen eines "aufräumen"
rm -r /tmp/*
und ohne das festgelegte "Sticky Bit"/tmp
können Sie alle Dateien in diesem Verzeichnis zum Abschied küssen.Das Verschwinden von Arbeitsdateien kann einige schlecht geschriebene Programme wirklich verärgern ...
/dev
/proc
und ähnlichen Dateisystemen verursacht.Dies ist ein größeres Problem in älteren Unix-Systemen, in denen
/dev
es sich um ein echtes Dateisystem handelt, und die Inhalte sind spezielle Dateien, die mit erstellt wurdenmknod
, da die Berechtigungsänderungen über Neustarts hinweg, jedoch auf jedem System, beibehalten werden Das Ändern der Berechtigungen Ihres Geräts kann erhebliche Probleme verursachen, von offensichtlichen Sicherheitsrisiken (jeder kann jeden TTY lesen) bis hin zu weniger offensichtlichen potenziellen Ursachen für eine Kernel-Panik.Credit to @Tonny for pointing out this possibility
Credit to @Tonny for pointing out this possibility
Viele Benutzer haben
.
einePATH
Umgebungsvariable (das sollten Sie nicht!). Dies könnte eine unangenehme Überraschung darstellen, da jetzt jeder eine Datei ablegen kann, die wie ein Befehl benannt ist (sagen Siemake
oderls
und) Versuchen Sie, Sie dazu zu bringen, ihren bösartigen Code auszuführen.Credit to @RichHomolka for pointing out this possibility
chmod
werden Zugriffssteuerungslisten (Access Control Lists, ACLs) zurückgesetzt.Dies bedeutet, dass Sie möglicherweise alle Ihre ACLs neu erstellen müssen, um Berechtigungen überall zu korrigieren (und ist ein aktuelles Beispiel für einen destruktiven Befehl).
Credit to @JamesYoungman for pointing out this possibility
Laufen die Teile des Systems, die bereits laufen, weiter? Wahrscheinlich zumindest für eine Weile.
Aber wenn Sie das nächste Mal ein Programm starten oder einen Dienst neu starten müssen, oder wenn der Himmel es verbietet, die Box, in der Sie sich befinden, neu zu starten, besteht Verletzungsgefahr, da # 2 und # 3 oben ihre hässlichen Köpfe aufrichten.
quelle
/tmp
wäre das nach einem Neustart behoben. Obwohl alles andere kaputt zu sein scheint. Zumindest in VM, auf der ich gerade getestet habe, scheint ein Neustart die/tmp
Berechtigungen behoben zu haben . Irgendwo in einem Startskript muss sich etwas befinden.tmpfs
Regel selbst reparieren, diejenigen, die / tmp auf der Festplatte haben (hängt von ihrenfind / -perms -4000 -type f
undfind / -perms -2000 -type f
zu sehen, die auf diesen Flags basieren.everyone
ist als die Vereinigung von Set einschließlich der Benutzer definiert, der die Datei, Benutzer in der Gruppe besitzt, der die Datei besitzt, und Benutzer , die eine dieser beiden Kriterien nicht erfüllen (wörtlich : die drei Oktal Erlaubnis Ziffern:User
,Group
, undOther
). Mit anderen Worten, jeder Benutzer mit Zugriff auf das System . ("Zugriff" könnte in diesem Zusammenhang ein Shell-Konto sein, wie ich es normalerweise anspreche, aber es umfasst auch den Zugriff über ein Webformular / CGI, das Daten auf die Festplatte schreibt: Derwww
Benutzer kann jetzt in jede Datei auf dem System schreiben , was bedeutet, zufällige Besucher können auch.)Eine wichtige Sache ist, dass es viele Tools wie ssh / sudo gibt, die die Dateisystemberechtigungen für Schlüsselkonfigurationsdateien prüfen. Wenn die Berechtigungen falsch sind, schlagen diese Tools fehl, da dies auf ein schwerwiegendes Sicherheitsproblem hinweisen würde. Auf meinem Debian-Testsystem und vielleicht auf anderen schlägt die Fähigkeit zur Anmeldung fehl, wahrscheinlich, weil die Anmeldebinärdatei oder etwas in PAM Berechtigungsprüfungen hat.
Es ist also nicht wirklich so, dass das System zerstört wird - es ist so, dass viele Tools so konzipiert sind, dass sie sofort versagen, wenn die Berechtigungen falsch sind.
Wenn Sie ein System nach einem Neustart neu
chmod 777 -R /
starten, wird es gestartet, und Sie können Prozesse starten, die keine expliziten Berechtigungsprüfungen haben. So ist das System nicht wirklich tot, nur etwas unbrauchbar by-Design .quelle