Wie funktionieren Dateiberechtigungen?

37

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

guillermooo
quelle

Antworten:

23

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 Besitzer mit chown, zchown guillermooo
  • Ändern Sie die Gruppe mit chgrp, zchgrp root
  • Ändern Sie die Rechte mit chmod, zB chmod u+w filename.ext(Fügt Schreibrechte für den Eigentümer der Datei hinzu filename.ext)

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

ParanoiaPuppy
quelle
8
Bei Verzeichnissen ist es etwas kniffliger - für den Zugriff auf den Inhalt des Verzeichnisses ist eine Ausführungsberechtigung erforderlich. Dies bedeutet (zum Beispiel), dass Sie zum Lesen oder Schreiben einer Datei den Zugriff auf das Verzeichnis ausführen müssen, in dem sich diese befindet, sowie die entsprechenden Berechtigungen für die Datei selbst. Das kommt so gut wie nie vor, ist aber deswegen schlecht dokumentiert / verstanden!
Adamnfish
Huh. Du hast recht. Ich werde es morgen bearbeiten, wenn ich weniger müde bin.
ParanoiaPuppy
1
chown guillermooosollte das nicht sein chown guillermooo filename?
Zeynel
32

Warnung: Das Ändern der Berechtigungen für Dateien und Verzeichnisse ist möglicherweise schädlich und kann dazu führen, dass Ihr System nicht mehr verwendet werden kann. 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, während ein Programm / Verzeichnis durchlaufen wird.

(Das Durchsuchen eines Verzeichnisses bedeutet im Wesentlichen, es als Teil eines Pfadnamens zu verwenden. Weitere Erläuterungen finden Sie unter https://unix.stackexchange.com/a/13891 oder https://unix.stackexchange.com/questions/21251 .)

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 (Gruppen-) Gruppe, zu der die Datei gehört, wird eine Berechtigung erteilt.
  • o (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 Besitzer einer Datei (= user) hat r ead, w rite und e x ecute Erlaubnis,
b) die Gruppe gewährt der Datei r ead und e x ecute Berechtigungen und
c) alle anderen nur haben sollten r ead Zugang.

Dann lautet die resultierende Dateiberechtigung:

 u   g   o
rwx r-x r--

Um dies in den Oktalzahlen zu erhalten, z. Für den chmodBefehl oder wenn wir eine Fehlermeldung verstehen müssen, müssen wir die obige Tabelle wie folgt fü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 zu ändern chmod:

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 in unserem Haus 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 ausführbare Bit der Datei als auch des Verzeichnisses gesetzt sind, können wir 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, wir 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 können ls -lwir 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, erhalten wir eine Permission deniedFehlermeldung. Nur root kann dies für alle Dateien ändern. Aus diesem Grund müssen wir sudobei der Bearbeitung von Dateien, die nicht von uns stammen, die Erlaubnis verwenden. Es gibt zwei integrierte Befehle chownfür Benutzer und chgrpGruppen.

Um den Besitz einer Datei von einem beliebigen Benutzer in einen anderen zu ändern, takkatkönnen Sie den folgenden Befehl ausführen:

sudo chown takkat testfile

Um die Gruppe einer Datei zu ändern, geben takkatwir Folgendes aus

sudo chgrp takkat testfile

Weitere Informationen und Optionen finden Sie auf den Hilfeseiten der Befehle. Es gibt auch diesen schönen, ausführlicheren Leitfaden, der zum Lesen empfohlen wird:

Hier finden Sie auch einige verwandte Fragen:

Takkat
quelle