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

Linux-Dateiberechtigungen:Alles, was Sie wissen müssen

Linux ist ein Mehrbenutzer-Betriebssystem, mit dem Sie mehrere Benutzerkonten und Benutzergruppen für den Zugriff auf denselben Computer einrichten können. Wie Sie sich vorstellen können, wirft dies einige Sicherheitsbedenken auf. Glücklicherweise verfügt Linux über leistungsstarke Einstellungen und Optionen für Dateiberechtigungen, die verhindern, dass Benutzer auf die vertraulichen und sensiblen Daten anderer zugreifen.

Sie können verschiedene Benutzergruppen definieren und ihnen zusätzliche Dateiberechtigungen zuweisen. Ohne die entsprechenden Berechtigungen kann ein Benutzer oder eine Benutzergruppe nicht auf Ihre Dateien und Verzeichnisse zugreifen, wodurch alle Ihre Informationen geschützt sind.

Für diese Lektüre haben wir eine ausführliche Anleitung zu Linux-Dateiberechtigungen vorbereitet. Am Ende sollten Sie ein solides Verständnis dafür haben, was jede Dateiberechtigung bedeutet und wie Sie Ihre Dateien und Verzeichnisse mithilfe der Funktionalität schützen können.

Eigentum und Berechtigungen von Dateien verstehen

Um den Besitz und die Berechtigungen von Linux-Dateien zu verstehen, müssen Sie zunächst „Benutzer“ und „Gruppen“ verstehen.

Benutzer vs. Gruppe

Unter Linux können Sie mehrere „Benutzer“ erstellen. Dies hilft, die Dateien und Verzeichnisse für die verschiedenen Personen, die den Computer verwenden, zu trennen. Jeder Benutzer hat einige spezifische Eigenschaften, darunter eine Benutzer-ID und ein Home-Verzeichnis.

Um die verschiedenen Benutzer auf Ihrem System anzuzeigen, können Sie den folgenden Befehl in Ihr Terminal eingeben:

$ cat /etc/passwd

Um alle Benutzer zu verwalten, führt Linux das Konzept der „Gruppen“ ein. Sie können eine oder zwei Gruppen erstellen und dann alle Systembenutzer zu einer oder mehreren dieser Gruppen hinzufügen, wodurch Sie sie einfacher verwalten können.

Sie dürfen auch eine Gruppe erstellen, diese aber nicht mit Benutzern füllen. In diesem Fall handelt es sich um eine Gruppe mit null Benutzern.

Aber andererseits wird ein Benutzer, nachdem Sie ihn erstellt haben, automatisch der „Standardgruppe“ zugeordnet. Sie können den Benutzer natürlich auch einer anderen Gruppe hinzufügen. Daher kann ein Benutzer mehreren Gruppen angehören.

Um alle Gruppen auf Ihrem System anzuzeigen, geben Sie den folgenden Befehl in Ihr Terminal ein:

$ cat /etc/group

Hinweis:Nachdem Sie die beiden obigen Befehle ausgeführt haben, werden Sie feststellen, dass Ihr System bereits unzählige Benutzer und Gruppen hat, die Sie nicht erstellt haben. All dies sind Systembenutzer und -gruppen. Diese sind notwendig, um alle Hintergrundprozesse sicher auszuführen.

Eigentum an Dateien und Erteilung von Berechtigungen

Immer wenn ein Benutzer eine neue Datei oder ein neues Verzeichnis erstellt, „gehört“ es dem Benutzer und der Standardgruppe des Benutzers. Darüber hinaus kann jede Datei oder jedes Verzeichnis nur einem einzelnen Benutzer und einer einzelnen Gruppe gehören.

Wie gestatten Sie also anderen Benutzern den Zugriff auf Ihre Dateien und Ihr Verzeichnis? Hier müssen Sie Dateiberechtigungen festlegen. Alle Dateien und Verzeichnisse haben drei Arten von Berechtigungsklassen. Diese lauten wie folgt:

  • Eigentümer:Unter dieser Klasse wirken sich die Berechtigungen nur auf den Eigentümer der Datei aus.
  • Gruppe:Unter dieser Klasse wirkt sich die Berechtigung auf die Gruppe aus, der die Datei gehört. Wenn sich der Eigentümer der Datei jedoch in dieser Gruppe befindet, verwenden Sie die Berechtigung "Benutzer" anstelle der Berechtigung "Gruppe".
  • Andere:Unter dieser Klasse wirken sich die Berechtigungen auf alle anderen Benutzer im System aus.

Sie können jeder dieser Klassen unterschiedliche Berechtigungen zuweisen, um zu steuern, welche Benutzer und Gruppen welche Zugriffsebene auf Ihre Dateien und Verzeichnisse erhalten. Lassen Sie uns einen Blick auf die verschiedenen Berechtigungen werfen, die Sie zuweisen können.

Unter Linux erhalten Sie Zugriff auf drei Arten von Dateiberechtigungen. Diese lauten wie folgt:

  • Lesen:Eine Datei mit der Leseberechtigung erlaubt Benutzern, ihren Inhalt zu sehen. Wenn ein Verzeichnis hingegen die Leseberechtigung hat, können die Benutzer nur die Namen der darin gespeicherten Dateien und anderen Verzeichnisse sehen.
  • Schreiben:Eine Datei mit Schreibberechtigung erlaubt Benutzern, den Inhalt dieser Datei zu ändern und sie sogar zu löschen. Bei Verzeichnissen mit Schreibberechtigung hingegen dürfen Benutzer die darin gespeicherten Dateien und Verzeichnisse ändern sowie neue Dateien und Verzeichnisse erstellen.

Hinweis:Die Schreibberechtigung hat keine Auswirkung auf ein Verzeichnis, es sei denn, die Ausführungsberechtigung ist ebenfalls aktiviert. Dies liegt daran, dass das System die Berechtigungen eines Ordners nur abrufen kann, wenn das Ausführungsbit gesetzt ist.

  • Ausführen:Eine Datei benötigt nur die Schreibrechte, damit ein Benutzer sie ausführen kann. Die Leseberechtigung muss jedoch ebenfalls aktiviert werden, da sie sonst keine Auswirkungen hat. Im Falle eines Verzeichnisses mit der Ausführungsberechtigung kann der Benutzer das Verzeichnis betreten (mithilfe des cd-Befehls) und die Metadaten der darin enthaltenen Dateien und Verzeichnisse anzeigen.

Inzwischen sollten Sie ein grundlegendes theoretisches Verständnis der Rolle von Linux-Benutzern und -Gruppen sowie der Konzepte von Dateibesitz und -berechtigungen haben. Also, nachdem das aus dem Weg geräumt ist, sehen wir uns an, wie wir sie praktisch nutzen können.

Wie kann ich Dateiberechtigungen anzeigen?

Sie wissen vielleicht bereits, dass Sie mit dem Befehl ls eine Liste aller Dateien in einem bestimmten Verzeichnis erhalten. Es gibt Ihnen jedoch keine Details zur Sicherheit der Dateien. Für diese Informationen müssen Sie den Befehl ls -l verwenden.

Auf diese Weise können Sie den Befehl ls mit der Option „lange Liste“ ausführen, die Ihnen detaillierte Informationen zu jeder der Dateien liefert. Dazu können Sie entweder den folgenden Befehl verwenden:

$ ls -l <path to directory>

Dadurch erhalten Sie Informationen über die Dateiberechtigungen des angegebenen Verzeichnisses. Wenn Sie alternativ die Details der Dateiberechtigungen Ihres aktuellen Verzeichnisses erhalten möchten, können Sie diesen Befehl eingeben:

$ ls -l

Für diesen Lesevorgang verwenden wir den Befehl ls -l für unser Home-Verzeichnis.

Mal sehen, was diese Informationen bedeuten.

  1. Das erste, was zu beachten ist, ist, dass jede einzelne Zeile Informationen über die verschiedenen Dateien und Verzeichnisse enthält, die sich in dem Verzeichnis befinden, von dem aus Sie den Befehl ausgeführt haben.
  2. Als nächstes beginnt das erste Zeichen in jeder Zeile entweder mit einem „-“, was anzeigt, dass es sich um eine Datei handelt, der Buchstabe „d“ bedeutet, dass es sich um ein Verzeichnis handelt, oder „l“, was darauf hindeutet, dass es sich um ein Symbol handelt Verknüpfung. Im obigen Bild wissen wir, dass Desktop ein Verzeichnis ist, weil die Zeile mit „d“ beginnt. Hallo Welt ist jedoch eine Datei, da sie mit „-“.
  3. beginnt
  4. Danach erhalten wir neun weitere Zeichen, die eine bestimmte Kombination aus den drei Buchstaben „r,w,x“ und dem Symbol „-“ darstellen. Dies wird verwendet, um die Berechtigung der entsprechenden Datei oder des Verzeichnisses anzugeben. In einem späteren Abschnitt werden wir besprechen, wie Sie diese neun Zeichen lesen können, um die Dateiberechtigungen zu verstehen.
  5. Danach wird es zwei weitere Spalten geben. Dadurch werden der Eigentümer und die Gruppe der Datei oder des Verzeichnisses identifiziert. Wie Sie sehen können, gehören im obigen Beispiel alle Dateien und Verzeichnisse dem Besitzer „root“ und der Standardgruppe „root“.
  6. Die nächste Spalte gibt Ihnen die Größe der Datei oder des Verzeichnisses in Byte an.
  7. Dann haben wir zwei weitere Spalten, die Datum und Uhrzeit der letzten Änderung der Datei anzeigen.
  8. Und schließlich zeigt die letzte Spalte den Namen der Datei oder des Verzeichnisses.

Die Sicherheitsberechtigungen verstehen

Direkt nach dem ersten Zeichen jeder Zeile werden die nächsten neun Zeichen verwendet, um die Berechtigungen der entsprechenden Datei oder des Verzeichnisses anzuzeigen.

Betrachten wir das Desktop-Verzeichnis aus dem obigen Bild. Es hat die Berechtigungen rwxr-xr-x. Aber was bedeutet das?

Nun, Sie müssen zuerst die neun Zeichen in drei Segmente mit jeweils drei Zeichen aufteilen. Das erste Segment bezeichnet die Berechtigung für den Benutzer, das zweite die Berechtigung für die Gruppe und das dritte die Berechtigung für den anderen.

Als solcher hat der Benutzer die Berechtigung rwx. Die Gruppe hat die Berechtigung r-x.

Und schließlich hat der andere die Berechtigung r-x.

Hier bedeutet „r“ „Lese“-Berechtigungen.

Dann steht „w“ für „Schreibberechtigungen“.

Als nächstes bedeutet „x“, dass Sie „Ausführungsberechtigungen“ haben.

Jedes Segment wird diese Berechtigungen in dieser Reihenfolge angeordnet haben:rwx. Sie werden keine Sequenz wie rxw oder wxr finden. Wenn die Lese-, Schreib- oder Ausführungsberechtigungen widerrufen werden, wird der entsprechende Buchstabe durch „-“ ersetzt.

Aus diesem Wissen können wir ableiten, dass der Benutzer unter dem Desktop-Verzeichnis die Berechtigung zum Lesen, Schreiben und Ausführen hat. Während die Gruppe und der Andere nur Lese- und Ausführungsberechtigungen haben, aber keine Schreibberechtigungen.

In ähnlicher Weise hat hello world für die Datei die Berechtigungen rw-rw-r–. Das bedeutet, dass der Benutzer und die Gruppe Lese- und Schreibrechte haben, aber keine Ausführungsrechte. Gleichzeitig hat der andere nur Leserechte, keine Schreib- oder Ausführungsrechte.

Numerische und symbolische Darstellung von Dateiberechtigungen

Im obigen Abschnitt haben wir Ihnen gezeigt, wie Berechtigungen mit den Buchstaben „r,w,x“ zusammen mit dem Symbol „-“ gekennzeichnet werden. Dies ist als symbolischer Modus bekannt. Es gibt auch eine andere Möglichkeit, die Dateiberechtigungen anzugeben – den numerischen Modus.

Um es verständlicher zu machen, betrachten wir noch einmal die Datei hello world, die die Berechtigungen rw-rw-r–.

hat

Demnach hat der Benutzer die Berechtigungen rw-. Daher sind die Lese- und Schreibberechtigungen aktiviert, während die Ausführungsberechtigung deaktiviert ist.

Jede aktivierte Berechtigung wird mit einer 1 und eine deaktivierte Berechtigung mit einer 0 gekennzeichnet. Dadurch erhalten wir eine Binärzahl, die in diesem Fall 110 ist. Als Nächstes müssen wir sie in Oktal umwandeln, was uns ergibt die Zahl 6.

Daher hat der Benutzer für die Datei „Hello World“ die Berechtigung 6. In ähnlicher Weise hat die Gruppe auch die Berechtigung 6. Und der Andere hat die Berechtigung 4. Daher ist die Berechtigung für die Datei „Hello World“ im numerischen Modus 664.

Die erste Zahl in der numerischen Darstellung stellt immer die Benutzerberechtigung dar, wobei die zweite Zahl verwendet wird, um die Gruppenberechtigung zu beschreiben, und die dritte verwendet wird, um die Berechtigung für alle anderen Benutzer darzustellen.

Sie denken vielleicht, dass es schwierig sein wird, binär in oktal zu konvertieren, um Berechtigungen für die Dateien und Verzeichnisse festzulegen. Aber alles, was Sie tun müssen, ist sich Folgendes zu merken:

  • r =4
  • w =2
  • x =1
  •  – =0

Wenn Sie also einen rwx-Dreifachwert von r-x erstellen möchten, ist das numerische Äquivalent 4+0+1=5. In ähnlicher Weise ist die numerische Darstellung für rw- 4+2+0=6. Und für die rwx-Berechtigung ist die numerische Darstellung 4+2+1=7.

Wir haben auch eine Liste beigefügt, die alle numerischen Modusäquivalente jedes möglichen rwx-Tripletts zeigt.

  • Die Ziffer „0“ steht für das rwx-Triplett „—“.
  • Die Zahl „1“ steht für das rwx-Triplett „–x“.
  • Die Zahl „2“ steht für das rwx-Triplett „-w-“.
  • Die Zahl „3“ steht für das rwx-Triplett „-wx“.
  • Die Zahl „4“ steht für das rwx-Triplett „r–“.
  • Die Zahl „5“ steht für das rwx-Triplett „r-x“.
  • Die Zahl „6“ steht für das rwx-Triplett „rw-“.
  • Die Zahl „7“ steht für das rwx-Triplett „rwx“.

Wenn Sie die numerische Darstellung von Berechtigungen etwas schwer zu merken finden, brauchen Sie sich keine Sorgen zu machen. Die meisten Tools unterstützen den symbolischen Modus. Nur unter bestimmten Umständen, also zu selten, müssen Sie den numerischen Modus verwenden.

Der „chmod“-Befehl:Dateiberechtigungen ändern

Inzwischen sollten Sie ein umfassendes Verständnis dafür haben, wie die Linux-Dateiberechtigungen funktionieren und wie Sie verstehen, welche Berechtigungen die verschiedenen Benutzergruppen für eine bestimmte Datei oder ein bestimmtes Verzeichnis haben.

Lassen Sie uns also über das Ändern der Dateiberechtigungen sprechen. Erstellen wir dazu zunächst eine neue Datei mit dem folgenden Befehl:

$ touch file.txt

Dadurch wird eine neue „file.txt“ in dem Verzeichnis erstellt, von dem aus wir den Befehl ausführen. Als Nächstes führen wir den Befehl ls -l aus, um die Dateiberechtigungen anzuzeigen.

Wie Sie dem Bild entnehmen können, hat file.txt die Berechtigungen rw-rw-r–. Daraus wissen wir, dass weder der Benutzer noch die Gruppe noch andere die Berechtigung haben, die Datei auszuführen. Lass uns das ändern.

Um allen Benutzern die Berechtigung „Ausführen“ hinzuzufügen, müssen wir den folgenden Befehl verwenden:

$ chmod a+x file.txt

Hier bedeutet a, dass wir die Berechtigung für alle Nutzer ändern, und +x gibt an, dass wir Ausführungsberechtigungen hinzufügen.

Sehen wir uns nun an, ob die Berechtigung für die Datei geändert wurde, indem Sie erneut den Befehl ls -l ausführen.

Wie Sie im obigen Bild sehen können, werden die Dateiberechtigungen für file.txt jetzt in rwxrwxr-x geändert, wodurch alle Benutzer die Ausführungsberechtigung erhalten.

Wenn Sie das „a“ im Befehl nicht hinzufügen, geht der Befehl chmod davon aus, dass die Änderung standardmäßig für alle Benutzer gilt. Sie können also den Befehl eingeben:

$ chmod +x file.txt

Abgesehen davon akzeptiert chmod auch die Buchstaben u, g und o, die verwendet werden, um „Benutzer“, „Gruppe“ und „Andere“ zu bezeichnen. Anstelle des Schalters „+“ können Sie auch den Schalter „-“ verwenden, wodurch die Berechtigung widerrufen wird.

Betrachten wir als Beispiel den folgenden Befehl:

$ chmod o-rx,g-w file.txt

Im obigen Befehl verwenden wir o-rx, um Lese- und Ausführungsberechtigungen von Other zu entfernen. Während wir g-w verwenden, um die Schreibberechtigung von der Gruppe zu entfernen. Beachten Sie, dass wir zwischen den beiden Aktionen ein Komma (,) einfügen müssen, um sie zu trennen.

Neben den Schaltern „+“ und „-“ können Sie auch das „=“ verwenden, um Berechtigungen für eine Benutzergruppe festzulegen. Anstatt Berechtigungen hinzuzufügen oder zu widerrufen, wird der Schalter „=“ verwendet, um bestimmte Berechtigungen festzulegen.

Berücksichtigen Sie den folgenden Befehl:

$ chmod u=rx, g=r file.txt

Im obigen Befehl setzt der Teil u=rx die Berechtigung für Benutzer als r-x. Entsprechend setzt g=r die Berechtigung für die Gruppe als r–.

Berechtigungen im numerischen Modus festlegen

Sie können Berechtigungen auch im numerischen Modus festlegen. Angenommen, Sie möchten die Berechtigungen für file.txt als rwxr–r– festlegen. In der obigen Tabelle sehen Sie, dass die numerische Darstellung dieser Berechtigung 744 ist.

Daher müssen wir nur den folgenden Befehl eingeben, um die Dateiberechtigungen zu ändern.

$ chmod 744 file.txt

Berechtigung für alle Dateien in einem Verzeichnis festlegen

Manchmal müssen Sie möglicherweise die Berechtigungen für alle Dateien ändern, die zu einem Verzeichnis gehören. Sie einzeln zu ändern, wird viel Zeit in Anspruch nehmen und ist nicht praktikabel. Zu diesem Zweck haben wir den Schalter -R.

Angenommen, Sie möchten allen Dateien im Verzeichnis „Dokumente“ nur für den Benutzer Ausführungsberechtigungen hinzufügen. Dazu können Sie folgenden Befehl ausführen:

$ chmod -R u+x Documents

Berechtigungen für Dateien und Verzeichnisse ändern, die Sie nicht besitzen

Mit dem Befehl chmod können Sie nur die Berechtigungen von Dateien und Verzeichnissen ändern, deren Eigentümer Sie sind. Falls Sie die Berechtigung von Dateien und Verzeichnissen ändern müssen, die Ihnen nicht gehören, müssen Sie sudo verwenden.

$ sudo chmod <specify the file permissions> <specify the file/directory name>

Sonderberechtigungen

Inzwischen sollten Sie ein funktionierendes Verständnis von Dateiberechtigungen, Dateibesitz und dem Ändern der Dateiberechtigungen für die verschiedenen Benutzergruppen haben.

Abgesehen davon gibt es auch einige „Zugriffsrecht-Flags“. Diese werden verwendet, um den Dateien und Verzeichnissen spezielle Berechtigungen zu erteilen.

Sticky-Bit

Lassen Sie uns zuerst über den klebrigen Teil sprechen. Manchmal müssen Benutzer eine Datei oder ein Verzeichnis freigeben und gemeinsam daran arbeiten. In diesem Fall müssen Sie allen Benutzern des Systems Lese-, Schreib- und Ausführungsberechtigungen erteilen.

Aber was ist, wenn ein Benutzer versehentlich eine der Dateien im Verzeichnis löscht (oder durcheinander bringt)? Wir können ihnen nicht einfach die Schreibrechte entziehen, da dies ihre Fähigkeit, mit der Datei zu arbeiten, beeinträchtigt.

Hier kommt das klebrige Bit ins Spiel. Wenn Sie das Sticky-Bit für ein Verzeichnis oder eine Datei setzen, haben nur der Root-Benutzer, der Verzeichnisbesitzer und der Dateibesitzer die Berechtigung, es zu löschen oder zu entfernen. Keine anderen Benutzer haben die Möglichkeit, Sticky-Bit-aktivierte Dateien und Verzeichnisse zu entfernen/umzubenennen, selbst wenn sie die erforderlichen Berechtigungen haben.

Standardmäßig wird das Sticky-Bit im /tmp-Verzeichnis verwendet. Wie Sie wissen, speichert das /tmp-Verzeichnis die temporären Dateien aller Programme, die auf Ihrem System laufen und von all den verschiedenen Benutzern auf Ihrem System verwendet werden. Um ein versehentliches Löschen der wichtigen temporären Dateien zu vermeiden, setzt Linux standardmäßig das Sticky-Bit auf /tmp.

Um das Sticky-Bit auf einem Ihrer Verzeichnisse zu setzen, können Sie den folgenden Befehl verwenden:

$ chmod +t <directory_name>

Hier ist „t“ das Zeichen, das verwendet wird, um das Sticky-Bit darzustellen, und wir verwenden den Schalter „+“, um das Sticky-Bit zum Verzeichnis hinzuzufügen.

Um das Sticky-Bit aus einem Verzeichnis zu entfernen, können wir auf ähnliche Weise den folgenden Befehl verwenden:

$ chmod -t <directory_name>

Setuid- und Setgid-Bit

Das Setuid-Bit wird verwendet, um eine Datei als der Benutzer auszuführen, der die Datei besitzt. Das setgid-Bit wird verwendet, um eine Datei als die Gruppe auszuführen, die die Datei besitzt. Das setuid-Bit wird für Dateien verwendet und wirkt sich nicht auf die Verzeichnisse aus. Das setgid-Bit kann jedoch für Verzeichnisse verwendet werden.

Es ermöglicht neuen Dateien und Unterverzeichnissen, die innerhalb des Verzeichnisses erstellt werden, die Eigentümergruppe im Gegensatz zur Standardgruppe des Benutzers zu erben. Auch für neue Unterverzeichnisse unter dem Verzeichnis wird das setgid-Bit gesetzt, aber die alten Dateien bleiben davon unberührt.

Um das setuid-Bit für eine Datei zu setzen, können Sie den folgenden Befehl verwenden:

$ sudo chmod +s <file_name>

Um das setgid-Bit zu entfernen, müssen Sie stattdessen -s verwenden. Ebenso können Sie zum Festlegen der setgid für eine Datei den folgenden Befehl verwenden:

$ sudo chmod g+s <file_name>

Und um es zu entfernen, müssen Sie g-s verwenden.

Schlussfolgerung

Wie Sie sehen können, bietet Linux robuste und umfassende Funktionen, um mit benutzerbasierten Rechten für die Dateien und Verzeichnisse im System umzugehen. Wir hoffen, dass dieser Artikel Ihnen geholfen hat, zu verstehen, wie diese Berechtigungen implementiert werden. Sollten Sie jedoch Unklarheiten oder Fragen zu Linux-Dateiberechtigungen haben, können Sie uns gerne einen Kommentar hinterlassen.

Wenn Sie mit Linux beginnen, sollten Sie außerdem unsere Artikelreihe „Linux lernen“ mit einem Lesezeichen versehen. Es umfasst unzählige nützliche Tutorials und Leitfäden für Anfänger und Fortgeschrittene, die ihnen dabei helfen, das Beste aus ihrem Linux-System herauszuholen.


Linux
  1. Linux-tmp-Verzeichnis:Alles, was Sie wissen müssen

  2. Linux-Dateikomprimierung:Alles, was Sie wissen müssen

  3. Swapiness unter Linux:Alles, was Sie wissen müssen

  4. Linux – Alles ist eine Datei?

  5. Alles, was Sie über das Linux-Dateisystem wissen müssen

Alles, was Sie über die Linux Mint-Distribution wissen müssen

Alles, was Sie über Inodes in Linux wissen müssen

Alles Wichtige, was Sie über Hard Link in Linux wissen müssen

Alles Wichtige, was Sie über UID in Linux wissen müssen

Alles, was Sie über das Linux /tmp-Verzeichnis wissen müssen

Hardlinks und Softlinks in Linux:Alles, was Sie wissen müssen