GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum brauche ich ein 'execute'-Bit im Dateimodus auf Unix-Dateisystemen?

Weil *nix nicht hirngeschädigt genug ist, um eine Datei "binär ausführbar" zu machen, wenn Sie sie zufällig ".exe" nennen, oder "Skript ausführbar", wenn Sie sie zufällig ".bat" nennen.

Unter Linux spielt der Name der Datei keine Rolle.

Und die Berechtigungen, die Sie einer Datei tun geben egal.

Welche Art Sinn macht. IMHO...


Das Ausführungsbit ist etwas verwechselt zwischen einer Berechtigung und einer Objekttypkennung.

Und nein, Sie können die Datei nicht "immer in Ihr Home-Verzeichnis kopieren":nur wenn sie für Sie lesbar ist.

Dateien können für Sie ausführbar, aber nicht lesbar sein.

Sie haben Recht, wenn eine Datei für Sie lesbar, aber nicht ausführbar ist, können Sie sie kopieren und das Ausführungsbit umkehren und verwenden. Vielleicht. Aber es könnte nicht funktionieren. Die ausführbare Datei kann abhängig davon sein, wo sie installiert ist. Oder die Datei kann von ihrem Setuid-Root-Bit abhängen.

Ich würde ein Berechtigungssystem nicht auf diese Weise entwerfen, indem ich von Null an beginne. es macht nicht ganz Sinn. Die Ausführungserlaubnis wäre getrennt von einem ausführbaren Typattribut, und die Ausführungserlaubnis würde nicht mit einer Sucherlaubnis überladen (selbst wenn sie so gespeichert wäre; die API würde sie nicht auf Bitmaskenebene offenbaren).


Ich bin überrascht, dass niemand Binärdateien erwähnt hat, die mit besonderen Rechten laufen. Wireshark bietet hier einen realen Anwendungsfall:Eine seiner Hauptfunktionen ist das Erfassen des Netzwerkverkehrs, etwas, das normalerweise nur Root tun kann. Es ist sinnvoll, dass Sie bestimmten Benutzern erlauben möchten, Datenverkehr mit Wireshark zu erfassen, ohne ihnen vollen Root-Zugriff gewähren zu müssen, daher enthält Wireshark eine Binärdatei namens dumpcap das die notwendigen Fähigkeiten (CAP_NET_RAW und CAP_NET_ADMIN) aktiviert hat. Diese Binärdatei ist 0754 (rwxr-xr-- ) und die zugehörige GID ist eine spezielle Gruppe, die Wireshark installiert. Auf diese Weise kann jeder Benutzer in der Gruppe die Binärdatei (im Allgemeinen über Wireshark) ausführen, um den Datenverkehr zu erfassen, und sie wird mit den erforderlichen Berechtigungen dafür ausgeführt, aber ein Benutzer, der nicht in dieser Gruppe ist, kann dies nicht, weil er es nicht tun würde. Sie haben keine Ausführungsberechtigung. Sie könnten es immer noch in ihr Home-Verzeichnis kopieren, aber dann hätte ihre Kopie nicht die erforderlichen Funktionen eingestellt, sodass sie tatsächlich keinen Datenverkehr erfassen könnte.


Linux
  1. Was ist umask in UNIX/Linux

  2. Warum brauchen wir mktemp?

  3. Warum muss stdout explizit geleert werden, wenn es in eine Datei umgeleitet wird?

  4. Warum brauchen wir die .so.1-Datei unter Linux?

  5. Warum haben Betriebssysteme Dateigrößenbeschränkungen?

Wie man eine Datei unter Linux ausführbar macht

So konvertieren Sie eine Windows-Datei in eine UNIX-Datei

FSTAB &MTAB

Top 10 Unix-basierte Betriebssysteme

AWK-Befehl unter Linux/Unix

So bearbeiten Sie Binärdateien auf Unix-Systemen