Wenn eine Datei über Berechtigungen verfügt, -rwx-wx-wx
kann sie von anderen Benutzern und Gruppenbenutzern gelesen oder nur ausgeführt und geschrieben werden? Gibt es eine Möglichkeit, eine ausführbare Datei durch Ausführen zu lesen?
linux
permissions
chmod
Tom
quelle
quelle
Antworten:
Eine Datei mit
-rwx-wx-wx
Berechtigungen verfügt über Lese- / Schreib- / Ausführungsberechtigungen für den Eigentümer und Schreib- / Ausführungsberechtigungen (jedoch keine Leseberechtigungen) für alle anderen.Wenn es sich um ein Skript handelt (normalerweise eine Textdatei mit einem
#!
in der ersten Zeile), kann es nicht von anderen ausgeführt werden, da beim Ausführen eines Skripts der Interpreter wirklich ausgeführt wird, der das Skript lesen kann. (Der Interpreter muss eine Binärdatei sein, kein anderes Skript.) (Dies gilt eigentlich nicht für alle Systeme. Ubuntu mit einem Linux-Kernel 3.2.0 ermöglicht es dem Interpreter selbst, ein interpretiertes Skript zu sein. Es scheint eine Grenze von zu geben ungefähr 4 Ebenen. Das ist wahrscheinlich nicht relevant für diese Frage.)Wenn es sich um eine ausführbare Binärdatei handelt, kann sie direkt ausgeführt werden, ihr Inhalt kann jedoch nicht gelesen werden. Dies bedeutet beispielsweise, dass eine andere Person als der Eigentümer den Befehl ausführen kann, jedoch keine Kopie der ausführbaren Datei abrufen kann.
Natürlich erfordert die Ausführung das Lesen, aber es wird vom Kernel gelesen, nicht vom Benutzer. Möglicherweise können Sie einige Informationen zum Inhalt der ausführbaren Datei abrufen, indem Sie den Speicher des laufenden Prozesses untersuchen. Ich bezweifle jedoch, dass Sie die ausführbare Binärdatei rekonstruieren können. Und wenn die ausführbare Datei setuid ist, können Sie den Speicher des Prozesses nicht untersuchen (es sei denn, Sie haben Zugriff auf das Konto, unter dem er ausgeführt wird).
Übrigens
-rwx-wx-wx
ist eine sehr seltsame Reihe von Berechtigungen; Es schützt die Datei vor dem Lesen durch andere Personen als den Eigentümer, ermöglicht es jedoch jedem, sie zu ändern. Ich kann mir keinen Fall vorstellen, in dem das Sinn machen würde.quelle
chmod 111 hello ; gdb ./hello
sagt./hello: Permission denied.
;r
sagtNo executable file specified.
Mit diesen Berechtigungen kann nur der Eigentümer der Datei sie ausführen.
Andere Benutzer können darauf schreiben, es aber nicht ausführen (da die Ausführung in diesem Fall impliziert, dass sie es lesen können), aber sie können als eine Art Black Box darauf schreiben:
quelle
Die einfache Antwort lautet Nein : Nur
exec
Syscall darf eine Datei lesen, ohne dass ein Lesezugriff erforderlich ist (obwohl der Ausführungszugriff vorgeschrieben ist ). Einopen
mitO_RDONLY
oderO_RDWR
soll scheitern.quelle
Natürlich kann jede Datei vom Root-Benutzer gelesen werden.
Außerdem liest der Systemlader, die Speicherverwaltung, der Swapper usw. eine Datei mit der Berechtigung 'x', da sie sonst nicht ausgeführt werden könnte.
Mögliche Lücken bei der Offenlegung ausführbarer Inhalte können die / proc-Datei für den Prozess, Kerndateien oder die Verwendung eines Debuggers sein.
quelle
chmod
|chown
wurde durchgeführt