it-swarm-eu.dev

Wie funktionieren Dateiberechtigungen?

Können Sie die wichtigsten Konzepte und Befehlszeilentools zum Verwalten von Dateiberechtigungen kurz erläutern?

37
guillermooo

Jede Datei hat Rechte für drei verschiedene Kategorien:

  • der Besitzer der Datei,
  • die der Datei zugeordnete Gruppe und
  • alle anderen.

Rechte bedeuten das Recht zum Lesen der Datei, das Recht zum Schreiben in die Datei oder das Recht, die Datei im Falle eines Skripts oder Programms auszuführen.

Auf der CLI können Sie

  • ändern Sie den Eigentümer mit chown, z. chown guillermooo
  • ändern Sie die Gruppe mit chgrp, z. chgrp root
  • ändern Sie die Rechte mit chmod, z. chmod u+w filename.ext (Fügt die Schreibberechtigung für den Eigentümer der Datei filename.ext hinzu.)

Wenn Sie mehr über jedes dieser Tools erfahren möchten, öffnen Sie ein Terminal und geben Sie man [tool] ein, z. man chmod.

23
ParanoiaPuppy

Warnung: Das Ändern der Berechtigungen für Dateien und Verzeichnisse ist möglicherweise schädlich und kann Ihr System unbrauchbar machen. Wenn wir rekursiv als root auf dem falschen Pfad laufen, können wir an einem Punkt angelangt sein, an dem wir Ubuntu neu installieren müssen. Es ist daher eine gute Idee, Berechtigungen nicht außerhalb von HOME-Verzeichnissen zu ändern, und die rekursive Ausführung der Befehle als root sollte nach Möglichkeit vermieden werden.

Dateiberechtigungen

Ubuntu hat das Konzept der Berechtigungen von Unix übernommen, wenn es für Dateien oder Verzeichnisse drei Aufgaben gibt, die wir zulassen oder ablehnen können:

  • r (Lese-) Datei/Verzeichnis kann zum Lesen geöffnet werden.
  • w (Schreib-) Datei/Verzeichnis kann zum Schreiben/Bearbeiten geöffnet werden.
  • x (Ausführen) -Datei kann ausgeführt werden, wenn ein Programm/Verzeichnis durchlaufen wird.

( Durchsuchen eines Verzeichnisses bedeutet im Wesentlichen, es als Teil eines Pfadnamens zu verwenden. Siehe https://unix.stackexchange.com/a/13891 oder - https://unix.stackexchange.com/questions/21251 für weitere Erklärungen.)

Darüber hinaus haben wir drei Fälle, in denen wir eine Erlaubnis erteilen:

  • u (Benutzer) Dem Eigentümer einer Datei werden alle Berechtigungen erteilt.
  • g (Gruppe) Gruppe, zu der die Datei gehört, wird eine Berechtigung erteilt.
  • o (andere) Allen anderen wird eine Erlaubnis erteilt.

Um die Kombination dieser zu sortieren, verwenden wir ein Binärsystem, in dem jedes Bit eine Berechtigung definiert. Dies kann am besten in der folgenden Tabelle gezeigt werden

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

Nun, wenn wir zum Beispiel wollen

a) der Inhaber einer Datei (= Benutzer) hat read, writus und execute erlaubnis,
b) die Dateigruppe erteilt read und execute Berechtigungen und
c) alle anderen sollten nur haben read Zugang.

Dann lautet die resultierende Dateiberechtigung:

 u   g   o
rwx r-x r--

Um dies in den Oktalzahlen zu erhalten, z. Für den Befehl chmod oder wenn wir eine Fehlermeldung verstehen müssen, müssen wir die obige Tabelle wie folgt ausfüllen:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

Jede Berechtigungsnummer muss für einen Benutzer (4 + 2 + 1 = 7), eine Gruppe (4 + 0 + 1 = 5) und eine andere (4 + 0 + 0 = 4) addiert werden. Die resultierende Zahl ist dann:

 u   g   o
 7   5   4

Wir haben jetzt zwei Möglichkeiten, die Berechtigungsbits mit chmod zu ändern:

chmod u+rwx g+rx o+r filename

oder viel einfacher mit

chmod 751 filename

Beide Befehle tun dasselbe.

Die Standardberechtigung für eine neu erstellte Datei bei uns zu Hause ist 664 (-rw-rw-r--).

Wenn wir wollen, dass Dateien als Programme ausführbar sind, müssen wir diese Berechtigung ändern.

  • Beachten Sie, dass wir auch die Berechtigung des Verzeichnisses ändern müssen, in dem sich diese ausführbare Datei befindet. Nur wenn sowohl das als auch das ausführbare Bit des Verzeichnisses gesetzt sind Wir dürfen diese Datei als Programm ausführen.

  • Wenn Sie eine Datei nach Hause kopieren, gehen ihre Berechtigungen verloren, die durch unsere eigenen Standardberechtigungen ersetzt werden (es sei denn, Sie kopieren mit erweiterten Optionen, z. B. einer Archivierungsoption).

  • Beachten Sie auch, dass die Datei möglicherweise ihre Berechtigung von ihrem Mount-Punkt bzw. von ihrem Mount-Punkt erbt. Mount-Optionen. Dies ist wichtig, wenn Windows-formatierte Laufwerke bereitgestellt werden, die keine Unix-Berechtigungen unterstützen.

Benutzer und Gruppen

Wir erkennen bald, dass dies nur die Hälfte der Geschichte war. Wir müssen auch Sachen aussortieren. Zu diesem Zweck hat jede Datei oder jeder Ordner einen definierten Eigentümer und eine definierte Gruppenmitgliedschaft.

Jedes Mal, wenn wir eine Datei erstellen, sind wir der Eigentümer einer Datei und die Gruppe der Datei auch wir. Mit ls -l können wir die Berechtigungen, den Besitz und die Gruppe wie in der folgenden Beispielausgabe sehen:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • Wir dürfen nur Berechtigungen, Gruppen oder Eigentumsrechte an einer Datei ändern, die uns gehört.

Wenn wir nicht der Dateieigentümer sind, wird der Fehler Permission denied ausgegeben. Nur root kann dies für alle Dateien ändern. Aus diesem Grund müssen wir Sudo verwenden, wenn wir die Berechtigung für Dateien bearbeiten, die nicht von uns stammen. Hierzu gibt es zwei integrierte Befehle chown für Benutzer und chgrp für Gruppen.

Um die Eigentümerschaft einer Datei von einem beliebigen Benutzer in takkat zu ändern, können Sie den folgenden Befehl ausführen:

Sudo chown takkat testfile

Um die Gruppe einer Datei in takkat zu ändern, geben wir Folgendes aus

Sudo chgrp takkat testfile

Weitere Informationen und Optionen finden Sie auf den Hilfeseiten der Befehle. Es gibt auch diese ausführlichere Anleitung in Nizza, die zum Lesen empfohlen wird:

Hier finden Sie auch einige verwandte Fragen:

31
Takkat