Wie sicher ist ein Blockgerät mit der Berechtigung brwx______?

Wie sicher ist ein Blockgerät mit der Berechtigung brwx______?

Ich habe Probleme, Informationen darüber zu finden, was Berechtigungen für Blockgeräte wirklich bedeuten. Was bedeutet Leseberechtigung für Blockgeräte? Bedeutet das, dass ich keine Dinge wie Hexdump machen kann? Was ist mit Schreibberechtigung? Oder Ausführung?

Und was passiert zusätzlich, wenn Sie Mount-Berechtigungen für das Gerät haben, indem Sie einem Benutzer die Sudo-Berechtigung erteilen, nur dieses bestimmte Gerät zu mounten, aber keine R-, W- oder X-Berechtigungen für das Gerät. Was passiert dann?

Antwort1

In den einfachen Fällen (wenn Sie auf das Gerät wie auf eine Datei zugreifen) ist es so, wie @Jasen geschrieben hat:

  • Die Leseberechtigung erlaubt das Lesen vom Gerät (Dumping, Ausführen fsckim schreibgeschützten Modus usw.).
  • Die Schreibberechtigung erlaubt das Schreiben auf das Gerät (Überschreiben mit einem Bild usw.).
  • fsckBeide Berechtigungen sind erforderlich, um , , usw. auszuführen tune2fs, die lesen müssenUnddas Dateisystem ändern.
  • Die Ausführungsberechtigung wird ignoriert. Wenn Sie versuchen, eine Gerätedatei auszuführen, erhalten Sie die Meldung „Berechtigung verweigert“, auch wenn das Blockgerät gültigen ausführbaren Code enthält.

Als Root erhalten Sie normalerweise das CAP_DAC_READ_SEARCHundCAP_DAC_OVERRIDE Fähigkeiten, was bedeutet, dass die Berechtigungsflags vollständig ignoriert werden.

Fürioctlses ist komplizierter:

Um ein ioctl auszuführen, müssen Sie in der Lage seinoffendie Datei, was bedeutet, dass Sie mindestens Lese- oder Schreibberechtigung benötigen.

Alles andere ist treiberabhängig. Einige Gerätetreiber prüfen nur auf Fähigkeiten wie CAP_SYS_RAWIOoder CAP_SYS_ADMIN, andere verwenden die Leseberechtigung für „harmlose“ Ioctls, die nur Informationen bereitstellen, und die Lese- und Schreibberechtigung für andere Ioctls. Ein Gerätetreiber könnte die Ausführungsberechtigung für eine Ioctl-Berechtigungsprüfung verwenden, aber mir ist kein Treiber bekannt, der dies tut.

Fürmontierenes ist einfacher:

Der mountSystemaufruf prüft nur zwei Dinge:

  1. Sie müssen in der Lage sein,erreichendie Gerätedatei. Das bedeutet, dass in allen Verzeichnissen im Pfad zur Gerätedatei mindestens das Ausführungsberechtigungsbit gesetzt sein muss (oder Sie müssen über die CAP_DAC_READ_SEARCHBerechtigung verfügen).
  2. Sie müssen über die CAP_SYS_ADMINentsprechende Berechtigung verfügen (die Sie normalerweise erhalten, wenn Sie Root sind).

Die Berechtigungsbits der Gerätedatei selbst werden beim Mounten vollständig ignoriert und haben keinerlei Einfluss auf den Zugriff auf das gemountete Dateisystem.

Verwenden vonsudoführt das ausgeführte Programm als Root mit allen verfügbaren Fähigkeiten aus, was bedeutet, dass alle Berechtigungsprüfungen ignoriert werden und wie @Jasen in einem Kommentar schrieb, /bin/mountist es normalerweise setuid-root, was dazu führt, dass es immer alle verfügbaren Fähigkeiten erhält, so dass Berechtigungsbits auf den mountmeisten Linux-Distributionen keinen Einfluss habenund andere unixoide Betriebssysteme.

BEARBEITEN:die Teile über Fähigkeiten sind Linux-spezifisch. Andere unixoide Betriebssysteme wie BSD oder OSX trennen die speziellen Fähigkeiten von Root nicht in Fähigkeiten, wenn also Fähigkeiten erwähnt werden, müssen Sie einfach Root sein. Basierend auf den verfügbaren Manpages mountähneln die Prüfungen den Linux-spezifischen Prüfungen, die ich beschrieben habe. Es scheint kein Betriebssystem zu geben, das die Berechtigungsbits beim Mounten prüft.

Antwort2

Lesen ermöglicht das Lesen (z. B. Hexdump), Schreiben ermöglicht das Schreiben (z. B. das Schreiben eines Bilds auf das Gerät). In Kombination bedeutet dies, dass Sie ein Tool wie „Hexedit“ verwenden können, um den Inhalt anzuzeigen und zu ändern.

Ich weiß nicht, was x zulässt (möglicherweise lässt es ioctl zu?)

Die Berechtigungen bedeuten, brwx______dass (normalerweise) nur der Eigentümer rootdiese Dinge tun kann.

verwandte Informationen