Linux - Montar dispositivo con derechos de usuario específicos

86

¿Cómo puedo montar un dispositivo con derechos de usuario específicos al inicio? Todavía tengo algunos problemas para resolverlo. Me gustaría montar la división con uid=1000y gid=1000. Mi entrada actual al /etc/fstab/archivo se ve así:

dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000
wowpatrick
fuente
No olvides gui = 1000. Además, ¿cuál es la propiedad / derechos de / var / www. Debería ser propiedad de root.
skub
1
@skub: el propietario de /var/www/es root. dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000 gui=1000no funcionó tan bien (Ubuntu eliminó la entrada después de un reinicio fallido).
wowpatrick
2
¿Tu fuente de montaje es "dev"?
James T Snell
@wowpatrick: su dispositivo de montaje debería ser algo así como / dev / sda1, no debería ser 'dev'.
skub
1
@skub: es una carpeta compartida de VirtualBox, por lo que / dev es la correcta. Ya lo descubrí, sudo mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/wwwfunciona bien.
wowpatrick

Respuestas:

119

Para montar un dispositivo con ciertos derechos, puede usar la -o Optiondirectiva mientras lo monta. Para montar el dispositivo que describió, ejecute:

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

Por ejemplo el montaje de un VirtualBox carpeta compartida a /var/wwwla www-dataque el propietario se vería así:

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

Si desea montar el dispositivo al inicio, puede agregar la siguiente entrada a su /etc/fstabarchivo:

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

De nuevo, con el mismo ejemplo, la entrada al /etc/fstabarchivo se vería así:

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

Para los sistemas de archivos que no admiten el montaje como un usuario específico (como ext4), lo anterior dará el error

Unrecognized mount option "uid=33" or missing value

para cambiar el propietario de un montaje ext4 simplemente ejecute

chown username /mountpoint

después de que se haya montado.

wowpatrick
fuente
Pude usar la opción uid / gid en ext4.
CMCDragonkai
Esto no parece funcionar con mount --bind, estoy usando un sistema de archivos
btrfs
¿No debería ser la máscara de usuario en umask=0077lugar de umask=0022dar permiso solo al propietario para leer o escribir? Parece que umask=0022dará permisos de lectura a otros si lo estoy leyendo correctamente. Quiero que solo el usuario que monta el disco tenga permiso de lectura o escritura.
Mian Asbat Ahmad
3

Para un sistema de archivos como ext3 o ext4, después de hacer

    chown -R username:group /mountpoint

para cambiar el propietario de los archivos existentes actualmente, puede configurar el bit de identificación del grupo para que cree nuevos archivos con el grupo específico (no funciona para la identificación del usuario en Linux):

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

La entrada de Wikipedia sobre setuid y setgid es bastante informativa, consulte la sección sobre directorios .

js.
fuente
18
Cambiar la propiedad de todos los archivos en el dispositivo es muy invasivo. Como hay una -oopción para montar, es la mejor manera.
Expiación limitada el
66
-odesafortunadamente no funciona para ext4, como se explica en la respuesta de @wowpatrick.
js.
14
chownIngerir el contenido del disco montado a otro usuario es ridículo. No tiene idea de lo que podría romper para cualquier aplicación en esa unidad. Puede estar bien si todos los contenidos pertenecen a su usuario, pero este es un gran no-no ...
carlspring
El dispositivo en cuestión es / dev / www, es fácil controlar qué aplicaciones tienen acceso a él (probablemente solo un servidor WWW, que puede apagar durante la operación). Incluso si la aplicación que la usa todavía se está ejecutando, seguirá ejecutándose, ya que ese es el punto de la operación.
js.