Montaggio del filesystem con ID utente speciale impostato


19

Voglio montare il dispositivo /dev/sda3nella directory /foo/bar/baz. Dopo aver montato la directory dovrebbe avere l'utente uid johndoe. Così ho fatto:

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

e ho aggiunto la seguente riga al mio /etc/fstab:

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

Quando lo faccio ora sudo -u johndoe mount /dev/sda3il comando stat -c %U /foo/bar/bazrisulta rootinvece che johndoe. Qual è il modo migliore per montare questo filesystem ext4 con uid johndoeset?

Risposte:


20

Non è possibile forzare un proprietario su un disco con un filesystem ext4. Solo i filesystem che non supportano le autorizzazioni Linux come fat hanno un attributo per la proprietà / grouphip: uid=valuee gid=value. Vedere la pagina del manuale sul supporto .

Dovresti cambiare il proprietario sul filesystem montato come in:

sudo chown johndoe /foo/bar/baz

Se è necessario modificare le autorizzazioni in modo ricorsivo:

sudo chown -R johndoe /foo/bar/baz

... e se anche il gruppo deve essere cambiato johndoe:

sudo chown -R johndoe: /foo/bar/baz

2
Il cambiamento ricorsivo della proprietà è generalmente una cattiva idea se puoi aiutarla. Una volta cancellata la proprietà "corretta", non è praticamente più possibile recuperarla. I bindfs dell'IMO sono il modo corretto di gestirlo (vedi la mia risposta).
Catskul,

3
bindfs sembra un altro livello di complessità. La mia risposta è più adatta per un disco rigido esterno (per il backup) che è stato utilizzato in un'installazione precedente con un ID utente diverso. Non dovrebbe essere usato in situazioni in cui è necessario conservare più ID utente (filesystem di root), ma in quel caso i bindfs con non -udovrebbero essere usati perché elude le restrizioni di accesso dai diversi ID utente. --mapdovrebbe essere usato se si desidera preservare le restrizioni di accesso.
Lekensteyn,

1
+1 per "è possibile solo su FS senza permesso" - Ho provato a usare uide gid, che non avrebbe funzionato.
Margarciaisaia,

19

bindfsè la risposta. Ci vorrà un file system già montato e fornirà una visione di esso con qualunque cosa tu voglia:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

1
bindfs ha altre modalità operative, vedi: bindfs.org/docs/bindfs.1.html
Lekensteyn,

2
Ugh, usa FUSE.
Navin,

Volevo montare un file system virtuale 9p con autorizzazioni utente diverse rispetto al sistema operativo host. Stavo sbattendo la testa contro il muro cercando di farlo funzionare. I bindfs mi hanno davvero fatto uscire di testa. Ottimo piccolo strumento!
Boann,

6

Supponendo che il gruppo impostato per i file disponga delle autorizzazioni appropriate, dovresti essere in grado di scoprire semplicemente l'ID gruppo (GID) e aggiungerti ad esso.


Per scoprire l'id di gruppo di un file, utilizzare ls -n. Esempio di output:

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

Vuoi il quarto campo per GID, che nel mio caso è il secondo 1000.

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

Una volta eseguito, dovresti avere il controllo completo ovunque gli attributi del file per il gruppo lo consentano.

Come notato nell'altra risposta relativa alle autorizzazioni utente, se è necessario correggere il gruppo su alcuni file, eseguire una di queste:

sudo chown -R :foobar ./
sudo chgrp -R  foobar ./

1
Nota se si desidera passare l'utente o il gruppo da A a B senza modificare la proprietà dei file che non sono A; puoi utilizzare sudo chown --from A B -R ./per utenti e sudo chown --from :A :B ./gruppi
Laterale Frattale
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.