Bei einem Verzeichnis können Sie mit dem Zugriff „Lesen“ den Inhalt auflisten, und mit dem Zugriff „Ausführen“ können Sie das Verzeichnis durchlaufen, um eines seiner untergeordneten Elemente (Datei oder Unterverzeichnis) zu öffnen. Wenn Sie also entfernen:
- nur Lesezugriff, Leute können immer noch auf Unterverzeichnisse zugreifen, indem sie ihre Namen erraten
- nur das Ausführungs-Flag, Leute können immer noch die Namen der Inhalte auflisten, auch wenn sie nicht darauf zugreifen können, und das kann immer noch aufschlussreich sein
- Sowohl Lese- als auch Ausführungsberechtigungen für ein Verzeichnis, alles darunter wird unerreichbar, und Sie müssen keine rekursive Änderung vornehmen.
Wenn Sie eine rekursive Änderung vornehmen, hat natürlich ein versehentliches nicht-rekursives Zurücksetzen der Zugriffsrechte auf das oberste Verzeichnis weniger Folgen.
Es versteht sich von selbst, dass, wenn Sie vor zwei Tagen eine Datei erstellt haben (mit einem öffentlich lesbaren Modus), und jemand die Datei gestern gelesen oder eine Kopie davon erstellt hat, Sie heute nichts tun können, um diese Datei privat zu machen.
xenoid sagt (etwas vereinfachend), dass, wenn Sie Gruppen- und andere Berechtigungen aus Ihrem Verzeichnis entfernen (heute, jetzt), „alles darunter unerreichbar wird und Sie keine rekursive Änderung vornehmen müssen“. Dem stimme ich zu, wenn Sie chmod
Ihr (oberstes) Verzeichnis entsprechend, niemand außer Ihnen wird in Zukunft (d.h. von jetzt an) darauf zugreifen können. Aber es gibt einige Fallstricke.
Harte Links
Erinnern Sie sich an die Datei, die Sie vor zwei Tagen erstellt haben? Angenommen, Ihr Gegner hat gestern einen harten Link zu dieser Datei erstellt (anstatt sie zu kopieren). Wenn Sie chmod
nur Ihr (oberstes) Verzeichnis, dann hat diese Datei weiterhin die öffentlich lesbaren Berechtigungen, die Sie bei der Erstellung zugewiesen haben, und so wird der Angreifer sie auch in Zukunft lesen können – (möglicherweise) auch wenn Sie sie nachträglich ändern es. Wenn Sie einen rekursiven chmod
ausführen ,das sichert die Berechtigungen für die Datei,was sich auf den Link auswirkt. Der Bösewicht kann immer noch ls -l
ausführen darauf, damit sie sehen können, wann Sie es ändern und wie groß es ist, aber sie können es nicht erneut lesen.
Arbeitsverzeichnis
Angenommen, unter Ihrem secret
Verzeichnis haben Sie einen plans
Verzeichnis, und es ist auch öffentlich lesbar. Und nehmen Sie an, dass der Bösewicht vor fünf Minuten ein Terminalfenster geöffnet und gesagt hat
cd /home/clemisch/secret/plans
Jetzt, nachdem Sie chmod
ausgeführt haben auf secret
, das Arbeitsverzeichnis des Bösewichts ist immer noch /home/clemisch/secret/plans
, und sie können dieses Verzeichnis weiterhin auflisten und auf die Dateien dort zugreifen, möglicherweise für immer. Natürlich, sobald sie cd
an anderer Stelle, oder schließen Sie dieses Fenster, oder melden Sie sich ab, oder der Computer wird neu gestartet, dann verlieren sie den Zugriff.
Wenn Sie einen rekursiven chmod
ausführen , das die Berechtigungen für alle Dateien und alle Verzeichnisse sichert, wodurch der Hausbesetzer sofort den Zugriff verliert.
Dies ist möglicherweise kein sehr großes Risiko, wenn es sich bei der Maschine um einen Personal Computer handelt, auf den nur über die Konsole zugegriffen wird. Aber wenn der Bösewicht vielleicht eine screen
hinterlassen hat oder tmux
Sitzung im Hintergrund, dann könnten sie diesen Angriff nutzen. Und wenn das Gerät ssh
unterstützt (oder anderer Fernzugriff; vielleicht würde sogar FTP ausreichen), kann dieser Angriff verwendet werden.
Menschliches Versagen
Wie xenoid in ihrer Antwort darauf hingewiesen hat:Wenn Sie einen rekursiven chmod
ausführen auf secret
heute und übermorgen hast du versehentlichchmod
(nur) das Top-Level-Verzeichnis zurück bis 755, dann sind Sie immer noch durch den heutigen rekursiven chmod
geschützt – alle Dateien und Verzeichnisse unter secret
wird immer noch unlesbar sein. (Natürlich, wenn Sie eine neue erstellen Datei in secret
morgen, und Sie erlauben, dass es öffentlich lesbar ist, dann wird es angezeigt, wenn Sie die Berechtigungen für secret
öffnen Verzeichnis. Aber das wäre wahr, egal ob die heutige chmod
rekursiv war oder nicht.)
mafunki kommentierte:„Ich glaube cp
trägt Berechtigungen.“ Ich bin mir nicht sicher, was sie meinten, aber betrachten Sie dieses Szenario. Sie wollen diff
machen zwischen zwei Dateien:
secret/plans/the/quick/brown/fox/file1
secret/jumps/over/the/lazy/dog/file2
Aber Sie sind sich nicht sicher, wo sich diese Dateien genau befinden, und Sie müssen herumstöbern, um sie zu finden. Sie könnten versucht sein, dies zu tun
cd plans
cd the/quick # looking for file1
cd brown/fox # found it!
cp file1 /tmp
cd ../../../../..
cd jumps/over
cd the # looking for file2
cd lazy/dog # found it!
diff /tmp/file1 file2
Wenn Sie dies tun, dann /tmp/file1
hat den gleichen Schutz wie secret/plans/the/quick/brown/fox/file1
– das ist also ein weiterer Grund, den rekursiven chmod
auszuführen heute.
NOCH EINS
Wenn der Angreifer vor fünf Minuten eine Ihrer geheimen Dateien geöffnet hat und sie offen hält, kann er sie in Zukunft lesen – möglicherweise auch wenn Sie es ändern. Die gute Nachricht ist, dass dies ein etwas kniffliger Angriff ist – der Bösewicht muss sich darüber Gedanken gemacht haben, bevor Sie chmod
ausführen . Die schlechte Nachricht ist, dass dieser Angriff sehr schwer abzuwehren ist – ein rekursiver chmod wird nicht helfen.
__________
und natürlich privilegierte Benutzer / Prozesse
P.S. Sie können Ihren Befehl etwas abkürzen:chmod go=
entspricht chmod g=,o=
. (Das macht nicht den rekursiven chmod
schneller natürlich.)