Was ist der Zweck von Linux-Berechtigungen wie 111 oder 333 (dh der Benutzer kann die Datei ausführen , aber nicht lesen ), wenn die Fähigkeit zur Ausführung nicht automatisch die Fähigkeit zum Lesen impliziert?
permissions
chmod
trolley813
quelle
quelle
Antworten:
Ich habe damit gespielt und anscheinend implizieren Exec-Berechtigungen keine Leseberechtigungen. Binärdateien können ausführbar sein, ohne dass sie lesbar sind:
Ich kann jedoch keine Skripte ausführen, es sei denn, sie haben sowohl Lese- als auch Ausführungsberechtigungsbits für:
quelle
/bin/bash hw.sh
und dann versucht bashhw.sh
zum Lesen zu öffnen (und schlägt fehl).Für Verzeichnisse ist es sinnvoll, wenn Sie beispielsweise (geheime) ausführbare Dateien in einem bestimmten Verzeichnis speichern und dann zulassen, dass Benutzer diese Dateien aufrufen, ohne den Verzeichnisinhalt sehen zu können (aber zu wissen, dass eine bestimmte Datei vorhanden ist, nachdem Sie sie informiert haben!). 333 im Vergleich zu 111 ermöglicht das Schreiben / Löschen von Dateien in / aus diesen Verzeichnissen, ohne den Inhalt des Verzeichnisses sehen zu können.
quelle
Natürlich sind nicht alle Kombinationen so nützlich, aber um die speziell von Ihnen erwähnte zu nehmen ... Sie benötigen tatsächlich keine
read
Berechtigung zum Ausführen einer Datei - nur eineexecute
Berechtigung - es sei denn, es handelt sich bei der fraglichen Datei um ein Skript (z. B. ein Shell-Skript) (.sh
), perl-script (.pl
) und so weiter). Normale Binärdateien können nur mitexecute
Erlaubnis ausgeführt werden. Auf * BSD-Systemen erteilen mehrere ausführbare Dateien dieexecute
Erlaubnis ohneread
Erlaubnis, insbesondere auf "sicherheitsrelevanten" Befehlen - zsu
.Warum also nicht Benutzer
read
-permission (und nurexecute
-permisson) geben? Weil eine Datei, die von einem Benutzer nicht gelesen werden kann, auch von diesem Benutzer nicht kopiert werden kann ! Durch das Entfernen derread
Berechtigung wird verhindert, dass Benutzer ihre eigenen "persönlichen" Kopien von ausführbaren Dateien erstellen, die sie später möglicherweise missbrauchen können (zSUID=root on
. B. abrufen ).write
Wenn Sie nicht über die Berechtigung -permission verfügen, wird verhindert, dass eine Datei versehentlich gelöscht wird.Allerdings ist es etwas ungewöhnlich, dem Besitzer weder
read
-nochwrite
-Erlaubnis zu erteilen, aber manchmal kann es eine gute Idee sein, selbst dasowner
Löschen einer Datei zu verhindern . Natürlich kann derowner
- ganz zu schweigen vonroot
- solche Maßnahmen immer umgehen, wenn nicht auf andere Weise, dann einfach durchchmod
die Erlaubnis in der Akte.quelle
owner
Löschen einer Datei zu verhindern ." - Mit der Ausnahme, dass Sie keine Berechtigung für eine Datei (Lesen, Schreiben oder Ausführen) benötigen, um sie zu löschen./proc/${PID}/maps
und dann die relevanten Speicherbereiche liest/proc/${PID}/mem
? Oder schränkt das Einschränken der Berechtigungen für die Datei der ausführbaren Datei auch die Leseberechtigungen für die relevanten Abschnitte im Speicher während der Ausführung ein? (Letzteres scheint unwahrscheinlich, IMO.)