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.
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:
user1:~$ cd /tmp
user1:/tmp$ echo "hostname" > testfile.sh
user1:/tmp$ chmod +x testfile.sh
user1:/tmp$ ./testfile.sh
server.example.com
user1:/tmp$ chmod 733 testfile.sh
user1:/tmp$ ls -l testfile.sh
-rwx-wx-wx 1 user1 user1 9 Jan 19 21:09 testfile.sh
user1:/tmp$ sudo su - user2
user2:~$ cd /tmp
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ cat testfile.sh
cat: testfile.sh: Permission denied
user2:/tmp$ echo 'echo hello' >> testfile.sh
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ logout
user1:/tmp$ ./testfile.sh
server.example.com
hello
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.
chmod
| chown
wurde durchgeführt