Ich habe ein externes USB 3-Laufwerk (2 TB Kapazität), das höchstwahrscheinlich von Maschine zu Maschine verschoben wird. Die Festplatte verfügt über eine GUID-Partitionstabelle und eine ext4-Partition. Ich kann nicht auf den Datenträger schreiben, es sei denn, ich erhöhe den Prozess ( sudo
).
Ab sofort denke ich darüber nach, eine oder beide der folgenden Methoden auszuprobieren und möchte die Nachteile der einzelnen Methoden kennen.
chmod 777 /mnt/externalDrive
chown nobody:nogroup /mnt/externalDrive
Was passiert, wenn ich 777 die Erlaubnis gebe und Benutzer1 (UID: 1005) darauf schreibt und die Festplatte später auf einen anderen Computer verschiebe, auf dem Benutzer7 die UID: 1005 hat? Wird Benutzer7 der Eigentümer der Datei auf diesem Computer? Es scheint mir, dass ich in regelmäßigen Abständen chown -R nobody:nogroup /mnt/externalDrive
auf der Festplatte laufen muss .
Habe ich eine offensichtliche schlechte Praxis in Erwägung gezogen? Die Festplatte wird höchstwahrscheinlich Videos, Musik und Bilder enthalten, die nicht wie einige Finanzdaten geschützt werden müssen.
quelle
Antworten:
Dies ist das Problem bei Mehrbenutzersystemen, insbesondere wenn Sie mehr als eines davon haben. ;) Es gibt keine wirklich gute Möglichkeit, das zu tun, was du willst. Ansätze, die mir in den Sinn kommen, wären
Der effektivste Ansatz wäre die Rückkehr zu gängigen Praktiken. Auf den meisten (mindestens) Linux-Systemen gibt es einige Gruppen, die normalerweise gemeinsame GIDs haben. Zum Beispiel wäre das
users
, was GID100
auf den meisten Linux-Distributionen hat. Wenn Sie es schaffen könnten, Ihr jeweiliges Benutzerkonto in dieser Gruppe zu haben, könnten SieErster und zweiter Punkt sind leicht zu erreichen (
chown
,chmod
). Der dritte Punkt ist etwas kniffliger.Der Teil "Gruppeneigentum" ist relativ einfach: Sie können das SGID-Bit für alle Verzeichnisse auf dem Laufwerk festlegen. Das SGID-Bit, das auf Verzeichnisse angewendet wird, weist den Kernel an, sich BSDisch zu verhalten: BSD legt fest, dass jede Datei / jedes Verzeichnis, das unter einer bestimmten Verzeichnisgruppe erstellt wird, nicht der primären Gruppe des Prozesses gehört, der die Datei / das Verzeichnis erstellt (wie Linux), sondern vom Besitzer des Elternverzeichnisses.
Das Erlaubnisbit ist ein bisschen hart. Berechtigungen für neu erstellte Dateien / Verzeichnisse werden (unter anderem) durch
umask
eine Bitmaske beeinflusst, die angibt, welche Bits nicht gesetzt werden sollen, wenn dies nicht ausdrücklich angegeben wird. Ein üblicherumask
Wert ist beispielsweise022
, dass die Schreibbits für »Gruppe« und »andere« normalerweise nicht gesetzt werden sollten. Sie könnten Ihre ändernumask
zu002
wollen sagen Sie nicht , daß die Schreibberechtigungen für die Gruppe gelöscht werden , aber der Nachteil ist , dass Sie nicht dieser Wert verzeichnisbasierte einstellen und Sie in der Regel nicht wollen , Schreibberechtigungen haben für Ihre primäre Gruppe für jede Datei, die Sie erstellen.Dies kann mithilfe von ACLs behoben werden: In einer ACL können Sie einen
mask
und einendefault
Berechtigungssatz festlegen, der für alle Dateien und Verzeichnisse gilt, die in einem Verzeichnis mit diesem ACL-Satz erstellt wurden. Eine mögliche Lösung für Ihr Problem wäre alsoSiehe
setfacl(1)
undacl(5)
für weitere Details.quelle
Es gibt noch eine ähnliche Frage und bindfs wird dort vorgeschlagen:
OSX-Benutzer schlagen folgende
noowners
Mount-Option vor:quelle
Der Eigentümer und die Gruppe einer Datei werden als Nummern gespeichert. Die Datei wird also im Besitz von uid = 1005 sein, unabhängig davon, mit welchem Benutzer (oder überhaupt keinem) das System verbunden ist.
Wenn Sie den Benutzer / die Gruppe in "Niemand" ändern, wird Ihr Problem nicht behoben. Dann darf nur der Benutzer nobody (oder Mitglieder der Gruppe nobody) auf die Dateien zugreifen.
Leider glaube ich nicht, dass es eine Möglichkeit gibt, die Berechtigungsprüfung für ext4 zu deaktivieren. Siehe zum Beispiel Ist es möglich, Dateiberechtigungen auf einem ext3- oder ext4-Dateisystem zu deaktivieren?
quelle
Andreas Wiese sagt, wenn Sie eine gemeinsame Gruppen-ID für alle Hosts haben, können Sie Ihr Problem mit
setgid
Bit und ACL lösenIch stelle die Frage Vordefinierte Gruppen-IDs in Linux-Distributionen?
Nach eigenen Recherchen wurde festgestellt, dass solche Gruppen in allen betroffenen Distributionen existieren:
sys
Gruppenfreigabe-ID3
unter Debian, Ubuntu, RedHat, Fedora, CentOS, Suse, FreeBSD, OpenBSD, NetBSD, MacOSX, Solaris.Mit diesem:
und Geschmack davon:
Sie
user
können jede Datei lesen / schreiben/dir
.Die meisten Jobs mögen
setgid
etwas tun, aber leider haben Sie normalerweise wenig Kontrolle darüberumask
. Daher wird ACL verwendet, um eine vollständige Lösung bereitzustellen.Siehe auch:
quelle