Dateisystem mit spezieller Benutzer-ID einbinden

19

Ich möchte das Gerät /dev/sda3in das Verzeichnis einbinden /foo/bar/baz. Nach dem Mounten sollte das Verzeichnis die Benutzer-ID haben johndoe. So tat ich:

sudo -u johndoe mkdir /foo/bar/baz
stat -c %U /foo/bar/baz
johndoe

und fügte die folgende Zeile zu meinem hinzu /etc/fstab:

/dev/sda3 /foo/bar/baz ext4 noexec,noatime,auto,owner,nodev,nosuid,user 0 1

Wenn ich jetzt tue, ergibt sudo -u johndoe mount /dev/sda3der Befehl eher als . Was ist der beste Weg, um dieses ext4-Dateisystem mit der eingestellten UID zu mounten ?stat -c %U /foo/bar/bazrootjohndoejohndoe

qbi
quelle

Antworten:

20

Es ist nicht möglich, einen Eigentümer auf einer Festplatte mit einem ext4-Dateisystem zu erzwingen. Nur Dateisysteme, die Linux-Berechtigungen wie fat nicht unterstützen, haben das Attribut owner / groupship: uid=valueund gid=value. Siehe die Handbuchseite zur Montage .

Sie sollten den Eigentümer des bereitgestellten Dateisystems wie folgt ändern:

sudo chown johndoe /foo/bar/baz

Wenn Sie die Berechtigungen rekursiv ändern müssen:

sudo chown -R johndoe /foo/bar/baz

... und wenn auch die Gruppe geändert werden muss johndoe:

sudo chown -R johndoe: /foo/bar/baz
Lekensteyn
quelle
2
Ein rekursiver Eigentümerwechsel ist im Allgemeinen eine schlechte Idee, wenn Sie Abhilfe schaffen können. Sobald Sie das "richtige" Eigentum ausgelöscht haben, gibt es praktisch keine einfache Möglichkeit, es zurückzugewinnen. IMO bindfs ist der richtige Weg, um damit umzugehen (siehe meine Antwort).
Catskul
3
bindfs klingt nach einer weiteren Komplexitätsebene. Meine Antwort eignet sich am besten für eine externe Festplatte (zum Sichern), die in einer früheren Installation mit einer anderen Benutzer-ID verwendet wurde. Es sollte nicht in Situationen verwendet werden, in denen mehrere Benutzer-IDs aufbewahrt werden müssen (Root-Dateisystem), aber in diesem Fall sollte bindfs with -uauch nicht verwendet werden, da es Zugriffsbeschränkungen der verschiedenen Benutzer-IDs umgeht. --mapsollte verwendet werden, wenn Sie Zugriffsbeschränkungen beibehalten möchten.
Lekensteyn
1
+1 für die "es ist nur möglich, auf ohne Erlaubnis FSs" - Ich habe versucht, uidund zu verwenden gid, was nicht funktionieren würde.
Margarciaisaia
19

bindfsist die Antwort. Es wird ein bereits eingehängtes Dateisystem verwendet und eine Ansicht davon mit der gewünschten UID bereitgestellt:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo
Catskul
quelle
1
bindfs hat andere Betriebsarten, siehe: bindfs.org/docs/bindfs.1.html
Lekensteyn
2
Ugh, es benutzt FUSE.
Navin
Ich wollte ein virtuelles 9p-Dateisystem mit anderen Benutzerberechtigungen als das Host-Betriebssystem mounten. Ich schlug meinen Kopf gegen die Wand und versuchte, dass es funktioniert. Bindfs hat mich wirklich aus der Klemme geholt. Tolles kleines Werkzeug!
Boann
6

Angenommen, die für die Dateien festgelegte Gruppe verfügt über die entsprechenden Berechtigungen. Sie müssen nur die Gruppen-ID (Group ID, GID) ermitteln und sich selbst hinzufügen.


Verwenden Sie, um die Gruppen-ID einer Datei zu ermitteln ls -n. Beispielausgabe:

drwxr-xr-x 1 1000 1000  550 Jul  9 11:08 Desktop/

Sie möchten das vierte Feld für die GID, in meinem Fall das zweite 1000.

sudo addgroup --gid GID foobar; sudo usermod `whoami` -aG foobar

Sobald Sie das ausführen, sollten Sie die Dateiattribute für die Gruppe zulassen.

Wie in der anderen Antwort darauf hingewiesen , in Bezug auf Benutzerberechtigungen, wenn Sie die Gruppe für einige Dateien reparieren müssen, führen Sie eine der folgenden Optionen :

sudo chown -R :foobar ./
sudo chgrp -R  foobar ./
Chinoto
quelle
1
Beachten Sie, dass Sie den Benutzer oder die Gruppe von A nach B wechseln möchten, ohne den Besitz von Dateien zu ändern, die nicht A sind. Sie können sudo chown --from A B -R ./für Benutzer und sudo chown --from :A :B ./für Gruppen verwenden
LateralFractal