Shell-Skripte erfordern die Berechtigung zum Lesen, Binärdateien jedoch nicht:
$ cat hello.cpp
#include<iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission
Es gibt zwei verschiedene Möglichkeiten, den Inhalt einer Datei anzuzeigen und auszuführen. Bei Shell-Skripten hängen diese Dinge zusammen, weil sie "ausgeführt" werden, indem sie in eine neue Shell (oder die aktuelle) "eingelesen" werden, wenn Sie die Vereinfachung verzeihen. Deshalb müssen Sie sie lesen können. Binärdateien verwenden diesen Mechanismus nicht.
Bei Verzeichnissen ist die Ausführungsberechtigung etwas anders. Dies bedeutet, dass Sie Dateien in diesem Verzeichnis bearbeiten können (z. B. lesen oder ausführen). Nehmen wir also an, Sie haben eine Reihe von Tools /tools
, mit denen die Benutzer arbeiten können, aber nur, wenn sie davon wissen. chmod 711 /tools
. Dann können ausführbare Dinge in /tools
explizit ausgeführt werden (zB /tools/mytool
), ls /tools/
werden aber abgelehnt. Ebenso könnten Dokumente gespeichert werden, in /private-docs
denen nur dann gelesen werden kann, wenn die Dateinamen bekannt sind.
cd
darauf zugreifen.stdio.h
werden. Ich schlage vor, es zu entfernen.ls
und Vervollständigen von Registerkarten die Wartungsarbeiten ärgerlich macht und kaum oder überhaupt keinen Sicherheitsvorteil bietet. Die meisten Dateien, an denen ein Angreifer interessiert sein könnte, befinden sich ohnehin an bekannten Standardspeicherorten, oder ihre Speicherorte können indirekt aus Daten in anderen Dateien ermittelt werden.Unter Gentoo wird ausführbaren Programmen, die setuid (ausgeführt mit den Berechtigungen ihres Besitzers anstelle ihres Aufrufers) sind, der Lesezugriff verweigert (Modus 4711). Dies dient dem Schutz vor der Ausbeutung von Fehlern, um die Eskalation von Berechtigungen zu unterstützen.
Wenn ein nicht privilegierter Angreifer eine setuid-Datei lesen kann und einen Fehler kennt, der eine Rückkehr zu libc-ähnlichen Angriffen ermöglicht , kann er anhand des Inhalts der Datei möglicherweise vorhersagen, wo sich bestimmte nützliche Funktionen oder Bibliotheken befinden im Speicher abgelegt, wenn das Programm aufgerufen wird.
Moderne Systeme enthalten häufig zusätzliche Schutzfunktionen, die effizienter sind, wie z. B. ASLR. Aufgrund der Einschränkungen auf 32-Bit-Plattformen können sie jedoch leichter ausgenutzt werden.
quelle
Es sieht so aus, als ob der Wert von "nur ausführen" für eine Datei keine große Bedeutung hat, aber er kann verwendet werden, um zu verhindern, dass eine Datei den Inhalt eines Verzeichnisses liest.
quelle
Sie müssen über Lese- und Ausführungsberechtigungen verfügen, um ein Skript ausführen zu können. Wenn Sie den Inhalt eines Skripts lesen, kann es ausgeführt werden. Sie müssen also in der Lage sein, dies zu tun
read and execute
. Andernfalls können Sie kein Skript ohne das Skript ausführen.Sicherheit. Einige möchten möglicherweise ihre Dateien schützen und andere davon abhalten, sie auszuführen oder zu verwenden.
quelle
chmod 000
Betrachtet Berechtigungen an niemanden außerroot
. Manchmal muss man nicht so umfangreich sein, nur um sich zu schützen - es hängt von den Absichten des Benutzers ab. Sagen wir, um die Datei auf lesbare und schreibbare Berechtigungen zurückzusetzen, müssten Sie dies durchführenroot
. Wenn Sie nicht in der Lage sind, darauf zuzugreifenroot
, wird es sich als schwierig erweisen./tools
, mit denen Sie möchten, dass die Benutzer sie verwenden können, aber nur, wenn sie über sie Bescheid wissen.chmod 711 /tools
. Dann können ausführbare Dinge in/tools
explizit ausgeführt werden,ls /tools/
werden aber abgelehnt.