Linux - Dispositif de montage avec des droits d'utilisateur spécifiques

86

Comment monter un appareil avec des droits d'utilisateur spécifiques au démarrage? J'ai encore quelques problèmes pour le comprendre. Je voudrais monter la fracture avec uid=1000et gid=1000. Mon entrée actuelle dans le /etc/fstab/fichier ressemble à ceci:

dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000
Wowpatrick
la source
N'oubliez pas gui = 1000. De plus, quels sont les droits de propriété / droits sur / var / www. Il devrait appartenir à root.
skub
1
@skub: Le propriétaire de /var/www/est root. dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000 gui=1000n'a pas fonctionné aussi bien (Ubuntu a supprimé l'entrée après un échec du redémarrage).
Wowpatrick
2
Votre source de montage est "dev" ??
James T Snell
@wowpatrick - votre périphérique de montage devrait être quelque chose comme / dev / sda1, il ne devrait pas être 'dev'.
skub
1
@skub: C'est un dossier partagé de VirtualBox, donc / dev est juste. Je l'ai compris maintenant, ça sudo mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/wwwfonctionne très bien.
Wowpatrick

Réponses:

119

Pour monter un périphérique avec certains droits, vous pouvez utiliser la -o Optiondirective lors du montage du périphérique. Pour monter le périphérique que vous avez décrit, exécutez:

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

Par exemple, monter un dossier partagé de VirtualBox /var/wwwavec www-datacomme propriétaire ressemblerait à ceci:

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

Si vous souhaitez monter le périphérique au démarrage, vous pouvez ajouter l'entrée suivante dans votre /etc/fstabfichier:

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

Encore une fois, avec le même exemple, l'entrée dans le /etc/fstabfichier ressemblerait à ceci:

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

Pour les systèmes de fichiers qui ne supportent pas le montage en tant qu'utilisateur spécifique (comme ext4), ce qui précède donnera l'erreur

Unrecognized mount option "uid=33" or missing value

pour changer le propriétaire d'un support ext4, lancez simplement

chown username /mountpoint

après qu'il a été monté.

Wowpatrick
la source
J'ai pu utiliser l'option uid / gid sur ext4.
CMCDragonkai
Cela ne semble pas fonctionner avec mount --bind, j'utilise un système de fichiers btrfs
meffect
Le umask ne devrait-il pas être umask=0077au lieu de umask=0022donner la permission seulement au propriétaire de lire ou d'écrire? Il semble que umask=0022cela donnera des autorisations de lecture aux autres si je le lis correctement. Je veux que seul l'utilisateur qui monte le disque ait la permission de lire ou d'écrire.
Mian Asbat Ahmad le
3

Pour un système de fichiers comme ext3 ou ext4, après avoir

    chown -R username:group /mountpoint

pour changer le propriétaire des fichiers existants, vous pouvez définir le bit d'ID de groupe pour que de nouveaux fichiers soient créés avec le groupe spécifique (ne fonctionne pas pour l'ID d'utilisateur sous Linux):

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

L'entrée de Wikipedia sur setuid et setgid est assez informative, voir la section sur les annuaires .

js.
la source
18
Changer la propriété de tous les fichiers sur le périphérique est très envahissant. Puisqu'il existe une -ooption pour le montage, c'est la meilleure façon.
Expiation limitée le
6
-oMalheureusement, cela ne fonctionne pas pour ext4, comme expliqué dans la réponse de @wowpatrick.
js.
14
chownIl est ridicule de transmettre le contenu du lecteur monté à un autre utilisateur. Vous n'avez aucune idée de ce que vous pourriez briser pour les applications de ce lecteur. Cela peut aller si tout le contenu appartient à votre utilisateur, mais c'est un très gros no-no ...
carlspring
Le périphérique en question est / dev / www, il est facile de contrôler les applications qui y ont accès (probablement uniquement un serveur WWW, que vous pouvez désactiver au cours de l'opération). Même si l'application qui l'utilise est toujours en cours d'exécution, elle continuera à fonctionner, car c'est le but de l'opération.
js.