Linux: monta un dispositivo con diritti utente specifici


86

Come posso montare un dispositivo con diritti utente specifici all'avvio? Ho ancora qualche problema a capirlo. Vorrei aumentare il divario con uid=1000e gid=1000. La mia voce corrente nel /etc/fstab/file è simile alla seguente:

dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000

Non dimenticare gui = 1000. Inoltre, qual è la proprietà / i diritti di / var / www. Dovrebbe essere di proprietà di root.
skub

1
@skub: il proprietario di /var/www/è root. dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000 gui=1000non ha funzionato così bene (Ubuntu ha rimosso la voce dopo un riavvio non riuscito).
wowpatrick,

2
La tua sorgente di mount è "dev" ??
James T Snell,

@wowpatrick - il tuo dispositivo di mount dovrebbe essere qualcosa come / dev / sda1, non dovrebbe essere 'dev'.
skub

1
@skub: è una cartella condivisa VirtualBox, quindi / dev è giusto. Ormai l'ho capito, sudo mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/wwwfunziona benissimo.
wowpatrick,

Risposte:


119

Per montare un dispositivo con determinati diritti, è possibile utilizzare la -o Optiondirettiva durante il montaggio del dispositivo. Per montare il dispositivo che hai descritto, esegui:

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

Per esempio il montaggio di un VirtualBox cartella condivisa per /var/wwwcon www-datacome proprietario sarebbe simile a questa:

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

Se si desidera montare il dispositivo all'avvio, è possibile aggiungere la seguente voce al /etc/fstabfile:

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

Ancora una volta, con lo stesso esempio, la voce del /etc/fstabfile sarebbe simile a questa:

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

Per i filesystem che non supportano il montaggio come utente specifico (come ext4), quanto sopra fornirà l'errore

Unrecognized mount option "uid=33" or missing value

per cambiare il proprietario di un mount ext4 basta eseguire

chown username /mountpoint

dopo che è stato montato.


Sono stato in grado di utilizzare l'opzione uid / gid su ext4.
CMCDragonkai,

Questo non sembra funzionare con mount - bind, sto usando un file system btrfs
meffect

L'umask non dovrebbe essere umask=0077invece di umask=0022dare il permesso solo al proprietario di leggere o scrivere? Sembra che umask=0022darà autorizzazioni di lettura ad altri se lo sto leggendo correttamente. Voglio che solo l'utente che monta il disco abbia il permesso di leggere o scrivere.
Mian Asbat Ahmad

3

Per un file system come ext3 o ext4, dopo averlo fatto

    chown -R username:group /mountpoint

per modificare il proprietario dei file attualmente esistenti è possibile impostare il bit ID gruppo in modo che vengano creati nuovi file con il gruppo specifico (non funziona per l'ID utente in Linux):

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

La voce di Wikipedia su setuid e setgid è piuttosto istruttiva, vedere la sezione sulle directory .


18
La modifica della proprietà di tutti i file sul dispositivo è molto invasiva. Poiché esiste -oun'opzione per mount, è il modo migliore.
Espiazione limitata

6
-osfortunatamente non funziona con ext4, come spiegato nella risposta di @wowpatrick.
js.

14
chowning ridare il contenuto dell'unità montata ad un altro utente. Non hai idea di cosa potresti rompere per qualsiasi applicazione su quell'unità. Potrebbe andare bene se tutti i contenuti appartengono al tuo utente, ma questo è un no-no molto grande ...
carlspring

Il dispositivo in questione è / dev / www, è facile controllare quali applicazioni hanno accesso ad esso (probabilmente solo un server WWW, che è possibile disattivare durante l'operazione). Anche se l'app che la utilizza è ancora in esecuzione, continuerà a funzionare, poiché questo è il punto dell'operazione.
js.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.