Linux - Gerät mit bestimmten Benutzerrechten einbinden

86

Wie kann ich ein Gerät mit bestimmten Benutzerrechten beim Start einbinden? Ich habe immer noch einige Probleme, es herauszufinden. Ich möchte die Kluft mit uid=1000und ausbauen gid=1000. Mein aktueller Eintrag in der /etc/fstab/Datei sieht folgendermaßen aus:

dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000
wowpatrick
quelle
Vergiss gui = 1000 nicht. Auch, was ist das Eigentum / Rechte an / var / www. Es sollte im Besitz von root sein.
Skub
1
@skub: Der Besitzer von /var/www/ist root. dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000 gui=1000hat nicht so gut funktioniert (Ubuntu hat den Eintrag nach einem fehlgeschlagenen Neustart entfernt).
Wowpatrick
2
Deine Mount-Quelle ist "dev"?
James T Snell
@wowpatrick - Ihr Mount-Gerät sollte so etwas wie / dev / sda1 sein, es sollte nicht 'dev' sein.
Skub
1
@skub: Es ist ein gemeinsam genutzter VirtualBox-Ordner, also ist / dev richtig. Ich habe es inzwischen herausgefunden, sudo mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/wwwfunktioniert gut.
wowpatrick

Antworten:

119

Um ein Gerät mit bestimmten Rechten zu mounten, können Sie die -o OptionDirektive verwenden, während Sie das Gerät mounten . Führen Sie Folgendes aus, um das beschriebene Gerät zu mounten:

 mount -t deviceFileFormat -o umask=filePermissions,gid=ownerGroupID,uid=ownerID /device /mountpoint

Zum Beispiel die Montage eines VirtualBox freigegebenen Ordner /var/wwwmit www-dataals Eigentümer würde wie folgt aussehen:

mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/www

Wenn Sie das Gerät beim Start bereitstellen möchten, können Sie Ihrer /etc/fstabDatei den folgenden Eintrag hinzufügen :

 /device /mountpoint deviceFileFormat umask=filePermissions,gid=ownerGroupID,uid=ownerUserID

Mit demselben Beispiel würde der Eintrag in der /etc/fstabDatei wie folgt aussehen:

dev /var/www vboxsf umask=0022,gid=33,uid=33

Bei Dateisystemen, die das Mounten als bestimmter Benutzer (wie ext4) nicht unterstützen, wird der obige Fehler angezeigt

Unrecognized mount option "uid=33" or missing value

um den besitzer eines ext4 mount zu ändern, einfach ausführen

chown username /mountpoint

nachdem es montiert wurde.

wowpatrick
quelle
Ich konnte die UID / GID-Option auf ext4 verwenden.
CMCDragonkai
Dies scheint nicht mit mount --bind zu funktionieren, ich verwende ein btrfs-Dateisystem
wirke sich am
Sollte die umask nicht umask=0077statt umask=0022nur dem Besitzer die Erlaubnis zum Lesen oder Schreiben geben? Es scheint, dass umask=0022anderen Leseberechtigungen erteilt werden, wenn ich es richtig lese. Ich möchte, dass nur der Benutzer, der die Festplatte einbindet, Lese- oder Schreibrechte hat.
Mian Asbat Ahmad
3

Für ein Dateisystem wie ext3 oder ext4

    chown -R username:group /mountpoint

Um den Besitzer der aktuell vorhandenen Dateien zu ändern, können Sie das Gruppen-ID-Bit so einstellen, dass neue Dateien mit der spezifischen Gruppe erstellt werden (funktioniert unter Linux nicht für die Benutzer-ID):

    find /mountpoint -type d -exec chmod g+ws {} \;

Der Wikipedia-Eintrag zu setuid und setgid ist recht informativ, siehe Abschnitt über Verzeichnisse .

js.
quelle
17
Das Ändern der Eigentümerschaft aller Dateien auf dem Gerät ist sehr invasiv. Da es eine -oOption zum Einhängen gibt, ist dies der bessere Weg.
Begrenzte Versöhnung
6
-ofunktioniert leider nicht für ext4, wie in der antwort von @wowpatrick erklärt.
js.
14
chownEs ist lächerlich, den Inhalt des bereitgestellten Laufwerks an einen anderen Benutzer weiterzugeben. Sie haben keine Ahnung, was Sie für Anwendungen auf diesem Laufwerk beschädigen könnten. Es mag in Ordnung sein, wenn alle Inhalte Ihrem Benutzer gehören, aber dies ist ein sehr großes Nein-Nein ...
Carlspring
Das fragliche Gerät ist / dev / www, es ist einfach zu steuern, welche Anwendungen Zugriff darauf haben (wahrscheinlich nur ein WWW-Server, den Sie während des Betriebs ausschalten können). Auch wenn die App, die sie verwendet, noch läuft, läuft sie weiter, da dies der Punkt des Vorgangs ist.
js.