GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Brauche ich wirklich rekursives chmod, um den Zugriff auf einen Ordner einzuschränken?

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.)


Linux
  1. Linux ext4 stellt Datei- und Verzeichniszugriffsrechte nach fehlerhafter Sicherung/Wiederherstellung wieder her

  2. Beschränken Sie den Dateizugriff nur auf Anhängen

  3. Dateiberechtigungen im Home-Verzeichnis eines Benutzers müssen korrigiert werden

  4. Beschränken Sie die Verzeichnisgröße

  5. PSCP:Laden Sie einen ganzen Ordner hoch, Windows auf Linux

So beschränken Sie den Zugriff auf Verzeichnisse und Unterverzeichnisse auf Nginx

Wie können Sie schnell auf einen gewünschten Ordner zugreifen?

Verwalten Sie Verzeichnis- und Dateiberechtigungen mit chmod Recursive

Linux /-Ordner und /root-Ordner

sudo -i aber aktuelles Arbeitsverzeichnis beibehalten

Einen riesigen Ordner umbenennen:Ist das riskant?