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

Zugriffskontrolllisten und externe Laufwerke unter Linux:Was Sie wissen müssen

Obwohl Cloud-Speicher viele Vorteile bietet, gibt es nichts Schöneres, als Ihre Daten auf einer physischen Festplatte zu speichern. Wenn Sie Daten auf einem Laufwerk speichern, wissen Sie genau, wo sich Ihre Daten befinden, und sie sind immer verfügbar, wenn Sie sie benötigen. Wenn Sie Daten auf einem externen tragbaren Laufwerk wie einem USB-Stick speichern, ist das sogar noch besser – Sie wissen nicht nur, wo sich Ihre Daten befinden, sondern können Ihre Daten auch überall hin mitnehmen. Wenn Sie neu bei Linux sind oder versuchen, ein Linux-Dateisystem auf einem externen Laufwerk zu verwenden, werden Sie externe Laufwerke möglicherweise als verwirrend empfinden, anfällig für Berechtigungsfehler oder Konflikte oder sogar für den Verlust von Metadaten.

Darauf gibt es zwei "richtige" Antworten:

ExFAT

Früher war ExFAT ein Dateisystem voller rechtlicher Bedrohungen von Microsoft, weil sie den Code besitzen. Sie haben bereits Unternehmen und Organisationen verklagt, um ihren Besitz von FAT zu verteidigen, daher wurde allgemein befürchtet, dass sie das Gleiche bei ExFAT tun könnten. Allerdings seit kurzem. Microsoft hat die Spezifikationen für ExFAT Open Source gemacht. Sie haben leider keinen Treiber bereitgestellt, aber es gibt ein vorhandenes Laufwerk, um es unter Linux zum Laufen zu bringen, und jetzt, da Entwickler Zugriff auf die vollständigen Spezifikationen haben, sind Verbesserungen unvermeidlich.

Der Vorteil von ExFAT besteht darin, dass es plattformübergreifend ist (Windows, Mac und viele tragbare Geräte verwenden es) und dass es ohne den Overhead von Dateiberechtigungen entwickelt wurde. Sie können ein als ExFAT formatiertes Laufwerk an jeden Computer anschließen, und alle Dateien sind für jeden verfügbar. Ob das gut oder schlecht ist, hängt von Ihrem Anwendungsfall ab, aber bei tragbaren Medien ist das oft genau die Absicht.

Zugriffskontrolllisten (ACL)

Wenn Sie es vorziehen, ein Linux-Dateisystem auf Ihrem tragbaren Laufwerk zu verwenden, dann können Sie das tun, aber um die gemeinsame Nutzung von Dateien nahtlos zu gestalten, sollten Sie Zugriffskontrolllisten (ACL) verwenden.

Wenn Sie eine Datei oder ein Verzeichnis auf einem Laufwerk erstellen, gibt es Standardeinstellungen auf Ihrem System, die bestimmen, welche Dateiberechtigungen es erhält. In den meisten Fällen sind diese Standardwerte sinnvoll – wenn Sie eine Datei in Ihrem Home-Verzeichnis erstellen, möchten Sie wahrscheinlich nicht, dass andere Benutzer Zugriff auf diese Datei haben. Wenn Sie jedoch eine Datei auf einem externen Laufwerk erstellen, besteht eine hohe Wahrscheinlichkeit, dass Sie diese Datei mit einer anderen Person teilen müssen (selbst wenn Sie selbst auf einem anderen Computer diese Person sind).

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Sie können die Standardberechtigungen für die Dateianzeige mit einer ACL überschreiben, und Sie können den Standarddateierstellungsmodus steuern, indem Sie ein Sticky-Bit setzen. Eine ACL ist eine Ebene von Sicherheitsrichtlinien in den erweiterten Attributen von Verzeichnissen und Dateien. Sie können damit Ausnahmen von den Dateisystemberechtigungen angeben. Vor allem ermöglicht Ihnen dies, das Einzelbesitzer- und Einzelgruppenmodell herkömmlicher UNIX-Berechtigungen zu überwinden.

Während beispielsweise seth (ID 1000)-Konto besitzt möglicherweise ein Verzeichnis, das auf meinem Desktop erstellt wurde, seth (ID 500) auf meinem Laptop nicht, da die Benutzer-IDs unterschiedlich sind.

Dasselbe könnte für eine Gruppe gelten. Wenn ein Verzeichnis mit der Gruppen-ID 1000 einem Verzeichnis auf einem Computer zugewiesen ist, dann hat eine Gruppe mit einer ID 500 oder 10922 keinen Zugriff darauf auf einem anderen Computer. Aber eine ACL kann sekundäre Eigentümer und Gruppen zu Verzeichnissen und Dateien hinzufügen.

Aktuelle ACL anzeigen

Jedes Verzeichnis und jede Datei auf jedem gängigen Linux-Dateisystem hat standardmäßig ACL-Regeln. Sie werden in erweiterten Attributen gespeichert, einer Art Metadaten, die Sie normalerweise nicht sehen.

Sie können sie im Terminal anzeigen:

$ getfacl ./example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
group::rwx
other::r--

Die kommentierten Zeilen dienen nur zu Ihrer Information; Sie teilen Ihnen den Pfad sowie den Eigentümer und die Gruppe der Datei oder des Verzeichnisses mit, über das Sie Informationen anzeigen. Die nächsten Zeilen zeigen die Regeln an, die auf die Datei oder das Verzeichnis angewendet werden. In diesem Beispiel sind die Benutzerberechtigungen auf rwx gesetzt , die Gruppe zu r-x , und andere an r-x . Diese Berechtigungen werden durch eine normale Dateisystemliste widergespiegelt:

$ ls -lA /run/media/drive
drwxrwxr-- 26 seth users 4096 Jan 16 21:04 example
$ id
uid=1000(seth) gid=100(users) groups=100(users)...

Solange der Benutzer seth (UID 1000) oder ein Mitglied der Gruppe (GID 100) interagiert mit dem Beispiel Verzeichnis wird der volle Zugriff gewährt. Jedes andere Konto hat jedoch nur gelesen (r ) Erlaubnis.

Festlegen einer ACL

Um eine ACL zu ändern, verwenden Sie das setfacl Befehl oder verwenden Sie einen Dateimanager mit ACL-Unterstützung. Sie können beim Festlegen Ihrer ACL sehr spezifisch oder sehr allgemein sein.

Um nur die Berechtigungseinstellungen des Dateisystems zu ändern, können Sie entweder chmod oder setfacl . Dies ist eine sehr generische ACL-Einstellung, da Sie nichts zu den Berechtigungen hinzufügen, die bereits für UNIX von der Dateisystemspezifikation verfügbar sind.

$ setfacl --modify g::r example
$ getfacl ./example | grep "group::"
group::r--
$ ls -l . | grep example
drwxr--r-- 26 seth users 4096 Jan 16 21:04 example

Derselbe Effekt ist über chmod verfügbar :

$ chmod g+x example
$ getfacl ./example | grep "group::"
group::r-x
$ ls -l . | grep example
drwxr-xr-- 26 seth users 4096 Jan 16 21:04 example

Benutzer und Gruppen hinzufügen

Um wirklich von einer ACL zu profitieren, müssen Sie sie für Berechtigungen außerhalb des Bereichs nativer UNIX-Berechtigungen verwenden. Wenn ich bei meinem Desktop als seth angemeldet bin mit der Benutzer-ID 1000, und ich weiß, dass ein Verzeichnis auf meinem tragbaren Laufwerk von seth verwendet werden muss mit ID 500 auf meinem Laptop, dann einfach seth deklarieren als Eigentümer reicht nicht aus, da die Benutzer-IDs nicht identisch sind.

Sie können einen Benutzer oder eine Benutzer-ID zu einer Zugriffskontrollliste hinzufügen:

$ setfacl --modify u:500:rwx example
$ getfacl example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
user:500:rwx
[...]

Ein neuer Eintrag speziell für die Benutzer-ID 500 wurde der Liste hinzugefügt. Durch das Anschließen des Laufwerks an einen anderen Linux- oder UNIX-Computer kann nun der Benutzer mit der ID 500 auf das Beispiel zugreifen Ordner.

Sie können Benutzer auch nach Kontonamen oder Gruppen entweder nach Gruppenname oder Gruppen-ID hinzufügen. Bei den Berechtigungen zählen jedoch die IDs. Wenn Sie sich also in einer gemischten Umgebung befinden (z. B. RHEL-Server und Elementary-Clients), sollten Sie die Benutzer-IDs und Gruppen-IDs überprüfen, die hinter Konten lauern, die oberflächlich betrachtet identisch.

Festlegen von Standard-ACL-Regeln

Wenn Sie die Zugriffskontrolle als einmalige Einstellung behandeln, werden Sie schnell auf Probleme stoßen, sobald Ihre verschiedenen Benutzerkonten damit beginnen, Dateien und Verzeichnisse zu erstellen. Alle neuen Dateien oder Verzeichnisse, die von jedem Benutzer erstellt werden, erben die Standardberechtigungen (und ACL) des Systems. Das bedeutet, dass einmal Laptop-Nutzer seth mit der ID 500 erstellt eine Datei in einem Verzeichnis, das für den Desktop-Benutzer seth gesperrt sein könnte mit ID 1000, weil der Besitzer der Datei auf UID 500 gesetzt ist.

Eine Standard-ACL kann auf Verzeichnisse angewendet werden, sodass darin erstellte Dateien und Unterverzeichnisse die übergeordnete ACL erben. Sie können die Standard-ACL eines Verzeichnisses mit –default festlegen Möglichkeit:

$ setfacl --default --modify u:500:rwx example
$ setfacl --default --modify u:1000:rwx example
$ getfacl --omit-header example
user::rwx
user:500:rwx
group::rw-
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x

Wenn ein Benutzer ein neues Verzeichnis innerhalb des Beispiels erstellt -Verzeichnis ist die geerbte ACL dieselbe wie die übergeordnete:

$ cd example
$ mkdir penguins
$ getfacl --omit-header penguins
user::rwx
group::rw-
group:500:rwx
group:1000:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x

Das bedeutet, dass jedes erstellte Verzeichnis oder jede erstellte Datei dieselbe ACL erbt, sodass weder Benutzer 500 noch 1000 jemals vom Zugriff ausgeschlossen werden.

Pragmatische ACL für externe Laufwerke

Wenn Sie ein Linux-Dateisystem für externe Laufwerke verwenden, besteht die einfache Methode, um sicherzustellen, dass es mit allen Benutzern funktioniert, die das tragbare Laufwerk verwenden möchten, darin, eine ACL für ein einziges Verzeichnis der obersten Ebene festzulegen.

Angenommen, Sie haben ein USB-Laufwerk mit dem Namen mydrive formatiert als ext4-Dateisystem. Sie möchten, dass Ihr Konto auf Ihrem Laptop und Ihrem Desktop sowie Ihre Kollegin Alice auf die Dateien zugreifen können.

Erstellen Sie zunächst ein Verzeichnis auf der obersten Ebene des Laufwerks:

$ mkdir /mnt/mydrive/umbrella

Wenden Sie dann eine ACL auf das Verzeichnis der obersten Ebene an, um allen wichtigen Benutzern Zugriff zu gewähren:

$ setfacl --modify \
  u:500:rwx,u:1000:rwx,u:alice:rwx \
  /mnt/mydrive/umbrella

Wenden Sie schließlich eine Standard-ACL an, sodass alle Verzeichnisse und Dateien innerhalb des Verzeichnisses der obersten Ebene Umbrella erstellt werden dieselbe Standard-ACL erben (beachten Sie, dass dieser Befehl die Kurzversion von –modify verwendet ):

$ setfacl --default -m u:500:rwx,u:1000:rwx,u:alice:rwx \
  /mnt/mydrive/umbrella

Anwenden von Standardeinstellungen auf ein vorhandenes System

Wenn Sie ACL-Einstellungen auf viele bereits vorhandene Dateien anwenden müssen, können Sie dies mit Suchen erreichen Befehl.

Finden Sie zuerst alle Verzeichnisse und wenden Sie die ACL-Regeln an:

$ find /mnt/mydrive/umbrella -type d | \
  parallel --max-args=6 setfacl \
  --default -m u:500:rwx,u:1000:rwx,u:alice:rwx

Es ist nicht ratsam, alle Dateiberechtigungen wahllos auf „ausführbar“ zu setzen, also suchen Sie als Nächstes alle Dateien und setzen Sie die Berechtigungen auf re . Dateien, die ein ausführbares Bit erfordern, können manuell oder per Dateierweiterung gesetzt werden:

$ find /mnt/mydrive/umbrella -type f | \
  parallel --max-args=6 setfacl \
  --default -m u:500:rw,u:1000:rw,u:alice:rw

Passen Sie die Logik dieser Befehle an Ihre individuellen Bedürfnisse an (führen Sie keinen Befehl aus, der das ausführbare Bit auf /usr entfernt , zum Beispiel, oder in einem Verzeichnis, das nur ausführbare Programme enthält).

Externe Laufwerke

Lassen Sie sich nicht von der Verwirrung um externe Laufwerke unter Linux überwältigen, und beschränken Sie sich nicht auf herkömmliche UNIX-Berechtigungen. Lassen Sie Zugriffskontrolllisten für sich arbeiten und verwenden Sie auf Ihren tragbaren Laufwerken native Journaled-Linux-Dateisysteme.


Linux
  1. 10 grundlegende Linux-Befehle, die Sie kennen müssen

  2. Eine Einführung in Linux Access Control Lists (ACLs)

  3. Was ist NFS und wie wird es unter Linux installiert?

  4. So konfigurieren Sie ACL (Access Control Lists) im Linux-Dateisystem

  5. Welche Rolle spielen DAC (Dateiberechtigungen), ACL und MAC (SELinux) bei der Linux-Dateisicherheit?

Zugriffssteuerungslisten unter Linux erklärt

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

Alles, was Sie über den Linux-Chmod-Befehl wissen müssen

Alles, was Sie über Linux Zorin OS wissen müssen

Alles, was Sie über Peppermint Linux OS wissen müssen

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