Die Berechtigung zum Ausführen von Bits wird vom Kernel beim Ausführen des Systemaufrufs exec (2) (und Cousins) überprüft. Sie benötigen es nur, um Programme auf Kernel-Ebene auszuführen.
Nur Programme mit diesem Bit (je nachdem, was Sie als Eigentümer, Gruppe oder andere trifft, wird überprüft) können exec sein () ed vom Kernel.
Eine andere Sache ist, was die Shell tut, wenn sie ein Shell-Skript oder Perl interpretiert, oder welchen Interpreter Sie auch haben mögen. Bei Skripten überprüft der Kernel das #! ...
am Anfang der Datei als magische Zahl und startet die dort angegebene Shell (Sie benötigen auch die Ausführungsberechtigung für die Shell) und Sie benötigen Leseberechtigungen für dieses Skript, da die Shell es öffnen und lesen muss, um interpretiert zu werden. Für Shell-Skripte benötigen Sie Leseberechtigung sowie Ausführungsberechtigung. Für Shell-Skripte benötigen Sie jedoch nur eine Leseberechtigung, da Sie ein Shell-Skript immer ausführen können, indem Sie die Shell ausführen und das Shell-Skript als Parameter (oder Eingabedatei) übergeben )
Natürlich kann das Ausführungsbit, wie bereits erwähnt, umgangen werden, indem das Programm kopiert und ausführbar gemacht wird, aber Sie können es nicht kopieren, wenn Sie es nicht gelesen haben Berechtigungen zum Erstellen dieser Kopie (Sie können sie weiterhin ausführen).
Versuchen Sie (natürlich als Root), die Berechtigungen in ls (1) zu ändern und 0111
( --- x - x - x
) und versuchen Sie, eine ausführbare Kopie davon zu erstellen, und sehen Sie, wie Sie Ihre ausführbare Kopie nicht erhalten können, selbst wenn Sie fortfahren in der Lage sein, es auszuführen.
In Verzeichnissen bedeutet das Ausführungsbit etwas anderes. Der Kernel verwendet die Berechtigung ' x
', wenn er den Pfad durchläuft (in der Kernelfunktion namei () ). Wenn Sie also keine Ausführungsberechtigungen für ein Verzeichnis haben, können Sie dies nicht Verwenden Sie es entweder oder die Dateien, auf die Sie zugreifen können. Selbst Sie können einen Verzeichnisinhalt mit Leseberechtigungen lesen, aber Sie können nicht auf die darin enthaltenen Dateien zugreifen. Im Gegenteil, Sie können Ausführungsberechtigungen für ein Verzeichnis haben, aber keinen Lesezugriff, und Sie können die darin enthaltenen Dateien verwenden, aber den Verzeichnisinhalt nicht sehen.