Wie jedes Dateisystem im Unix-Stil enthält ext4 Standardkonventionen für den Besitz und die Berechtigung von Unix-Dateien. Das heißt, der Benutzer wird durch eine UID-Nummer identifiziert, und jeder Benutzer gehört zu einer oder mehreren Gruppen, wobei jede Gruppe durch seine GID-Nummer identifiziert wird. Jede Datei hat eine Eigentümer-UID und eine Gruppen-Eigentümer-GID. Die drei klassischen Unix-Dateiberechtigungssätze sind:
- Ein Satz von Berechtigungen für den Eigentümer, identifiziert durch die UID-Nummer des Eigentümers
- Ein Satz von Berechtigungen für den Gruppenbesitzer, identifiziert durch die GID-Nummer der Gruppe
- eine Reihe von Berechtigungen für alle anderen
Um auf den Stick zugreifen zu können, ohne die Berechtigungen anpassen zu müssen, müssen Sie sicherstellen, dass alle auf dem Stick erstellten Dateien und Verzeichnisse automatisch über nicht einschränkende Berechtigungen verfügen. Das Problem ist, dass die Berechtigungen für neu erstellte Dateien durch den umask
Wert gesteuert werden ... und Sie möchten ihn nicht ständig ändern, 000
um Dateien auf dem USB-Stick zu erstellen und für den normalen Gebrauch auf den Standardwert (normalerweise 002
oder 022
) zurückzukehren . Ein einzelner Fehler kann dazu führen, dass Sie eine wichtige Konfigurationsdatei mit weit geöffneten Berechtigungen erstellen, die die Sicherheit Ihres Benutzerkontos gefährden oder andere kleinere Probleme verursachen kann.
Wenn Sie sicherstellen können, dass die UID-Nummer Ihres normalen Benutzers auf allen Linux-Systemen gleich ist und Sie sich nur um den Zugriff für diesen einen Benutzer kümmern (natürlich plus root), können Sie den USB-Stick einfach auf ext4 formatieren. Mounten Sie es zum ersten Mal und weisen Sie Ihrem regulären Benutzerkonto den Besitz seines Stammverzeichnisses zu, bevor Sie das Dateisystem verwenden.
Angenommen, dies /dev/sdX1
ist die USB-Stick-Partition, in der Sie das Dateisystem erstellen möchten, und <username>
Ihr Benutzername. Dies können Sie tun, wenn Sie den USB-Stick für die Verwendung einrichten:
sudo mkfs.ext4 /dev/sdX1
sudo mount /dev/sdX1 /mnt
sudo chown <username>: /mnt
sudo umount /mnt
Wenn Sie jedoch nicht garantieren können, dass UID / GID-Nummern übereinstimmen, und / oder mehrere Benutzer den USB-Stick verwenden möchten, müssen Sie nach dem Erstellen von ext4 etwas komplizierteres, aber dennoch einmaliges ausführen Dateisystem auf dem Stick.
Wir müssen eine Standard-ACL im Stammverzeichnis des USB-Stick-Dateisystems festlegen, die jedem in jeder neuen Datei oder jedem neuen Verzeichnis den vollständigen Zugriff zuweist. Um sicherzustellen, dass der Stick mit aktivierter ACL-Unterstützung tune2fs
gemountet wird, müssen Sie die in den Metadaten des Dateisystems gespeicherten Standard-Mount-Optionen anpassen.
sudo mkfs.ext4 /dev/sdX1
sudo tune2fs -o acl /dev/sdX1
sudo mount /dev/sdX1 /mnt
sudo chown <username>: /mnt
chmod 777 /mnt
setfacl -m d:u::rwx,d:g::rwx,d:o::rwx /mnt
sudo umount /mnt
Angenommen, alle Ihre Systeme unterstützen ACLs auf ext4-Dateisystemen und jedes von Ihnen verwendete Tool zum Mounten von Wechselmedien ignoriert die acl
Mount-Option nicht. Sie sollten jetzt einen USB-Stick haben, auf dem alle darauf erstellten Dateien Berechtigungen -rw-rw-rw-
und alle haben erstellte Unterverzeichnisse werden drwxrwxrwx+
. Das Pluszeichen zeigt an, dass das Unterverzeichnis über eine ACL verfügt: Der für das Stammverzeichnis des Sticks konfigurierte benutzerdefinierte Standardberechtigungssatz wird auch von den Unterverzeichnissen geerbt und verhält sich gleich.
Die Eigentümer-UID / GID stimmt weiterhin mit der UID und der primären GID des Benutzers überein, der die Datei im Dateisystem erstellt hat. Aufgrund der entspannten Datei- und Verzeichnisberechtigungen sollte dies jedoch kein großes Problem darstellen.
Das einzige Problem, das ich erwarten könnte, ist, dass beim Kopieren von Dateien auf den USB-Stick standardmäßig versucht wird, die Dateiberechtigungen des Originals zu duplizieren, was in diesem Fall nicht gewünscht wird.
Wenn Sie beispielsweise eine Datei auf System A mit den Berechtigungen -rw-r - r-- erstellen und auf den Stick kopieren, verschieben Sie den Stick mit nicht übereinstimmenden UID-Nummern nach System B. Sie können die Datei auf System B weiterhin lesen, sie jedoch nicht auf dem Stick überschreiben, ohne zuvor die Originaldatei explizit zu löschen oder umzubenennen. Sie können dies jedoch tun, solange Sie Schreibzugriff auf das Verzeichnis haben, in dem sich die Datei befindet .
Dies kann tatsächlich eine nützliche Funktion sein: Wenn Sie dieselbe Datei auf mehreren Systemen ändern, werden Sie jedes Mal dazu gebracht, eine neue Version der Datei zu speichern, anstatt die One True File zu überschreiben ... und wenn die Datei wichtig ist, ist dies wichtig könnte tatsächlich eine gute Sache sein.