Ignorando le autorizzazioni predefinite durante il montaggio di volumi HFS + in linux


8

Ho un MacBook Pro con doppio avvio con Snow Leopard e Kubuntu 11.10 e voglio leggere (non mi interessa scrivere) la mia home directory del Mac di casa quando eseguo Kubuntu.

Posso montarlo senza problemi, ma il mio utente su Kubuntu su non può vedere i file su HFS + di proprietà dell'utente mac, a causa del diverso uid (502 su Mac, 1000 su Kubuntu).

Guardando i documenti del kernel su HFS + ho letto che:

When mounting an HFSPlus filesystem, the following options are accepted:
[CUT]
    uid=n, gid=n
        Specifies the user/group that owns all files on the filesystem
        that have uninitialized permissions structures.
        Default:  user/group id of the mounting process.

Quindi ho provato a usare queste opzioni:

$ sudo mount -t hfsplus -o uid=1000,gid=1000 /dev/sda2 /mnt/Mac

Ma sembrano non fare nulla: vedo ancora le stesse autorizzazioni quando mi guardo intorno usando ls -l. Potrei mancare qualcosa, qualche indizio?

So che posso cambiare il mio ID utente su Ubuntu per abbinarlo a Mac Os X, ma preferirei evitarlo, se possibile.

Risposte:


9

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

Modificare:

Inoltre, leggendo il documento mi sono reso conto che l' mapopzione (1.10 e successive) potrebbe adattarsi meglio:

sudo bindfs --map=502/1000 /media/diskFoo ~/myUIDdiskFoo

Soluzione molto interessante. Risolve il problema senza modificare i comportamenti predefiniti dei sistemi operativi e rende possibili molte più opzioni. Fai solo attenzione se il sistema è condiviso con altri utenti, questo potrebbe esporre file privati ​​a un pubblico inaspettato.
gerlos,

1
Si. Sono rimasto sorpreso dal fatto che l'utilità di montaggio del sistema non offra questa capacità. In alternativa puoi usare la mapfunzionalità di bindfs per mappare semplicemente l'utente da 502 a 1000 che potrebbe essere più sicuro e più di quello che avevi previsto.
Catskul,

Dato che non ho la reputazione di commentare, noterò solo che c'è un piccolo errore nella risposta di Catskul, un = mancante dovrebbe essere: sudo bindfs --map = 502/1000 / media / diskFoo ~ / myUIDdiskFoo
J. Simon van der Walt

1

Alla fine, ho creato un utente linux con lo stesso UID dell'utente mac os x, ma non è possibile sfogliare tutte le directory della mia casa su mac hfs + volume perché molti file erano di proprietà dell'utente mac "sconosciuto", UID 99 (vedi http://googlemac.blogspot.com/2007/03/user-99-unknown.html ).

Sembra che lo abbiano fatto per permetterti di montare e leggere il tuo volume quando lo colleghi a un altro computer. Quando un utente normale guarda quei file di proprietà di UID 99, li vede come suo proprietario. Piuttosto strano. Solo root li vede così come sono.

Quindi ho riavviato in Mac Os X, ho effettuato l'accesso con un altro utente con privilegi di amministratore e ho usato chown -R 502: 20 / Users / gerlos / * per cambiare il proprietario di ogni file nella mia casa. Ora posso leggere tutto senza alcun problema.

Osservazioni:

  • lo strumento gui predefinito di kubuntu per creare nuovi utenti su Kubuntu 11.10 non può creare utenti con UID inferiore a 1000. Usa invece adduser sul terminale.
  • puoi conoscere il tuo UID utente usando il comando "id" sul terminale.
  • su mac os x, devi essere root per vedere il vero proprietario dei file. Quindi aspettati risultati diversi se digiti "ls -n / Users / gerlos" e "sudo ls -n / Users / gerlos".

Quella differenza di OSX tra l'utente "reale" di unix e l'utente riconosciuto dal Finder mi ha dato un sacco di mal di testa ... può persino far comportare in modo strano alcune app su OSX (es. Dropbox non sincronizzerà i tuoi file). Per evitare qualsiasi problema, accedi al tuo sistema OSX, apri un terminale e assicurati che l'utente unix possieda tutto ciò che l'utente OS X possiede già. Forse non capisco qualcosa, ma nella mia esperienza l'utilizzo della GUI non è abbastanza.
gerlos,

1

In realtà sto cercando di fare qualcosa di simile quando mi sono imbattuto in questa domanda. Comprendo, dal tuo primo post, che l'opzione di mount richiesta è chiedere quale utente uid debba essere usato al posto del default del tuo sistema linux (cioè uid 1000). Quindi invece dovresti usare 502, che è il proprietario del file system che stai cercando di montare.

Ho provato questo nella mia situazione e ha funzionato alla grande, con uid 99 per un filesystem condiviso tra i miei sistemi. Con questo non avrò bisogno di andare in giro a cambiare utente. Quindi grazie per averlo condiviso. Questo potrebbe non essere più utile per te, ma può aiutare qualcun altro. Saluti


1
Giusto. La soluzione migliore è lasciare soli UID e permessi, montare il tuo file system HFS + come fai normalmente e quindi montare la tua casa sotto il file system HFS + usando bindfs, quindi tutto sembra appartenere al tuo utente linux. In questo modo non sarà mai necessario utilizzare UID personalizzati, né per modificare le autorizzazioni nel file system HFS +, in modo da preservare il comportamento predefinito in entrambi i sistemi. Dal momento che è possibile rimontare con i bindf la casa di ogni utente, è possibile conservare i file privati ​​anche nei sistemi condivisi, mantenendoli comunque accessibili agli utenti.
Gerlos,
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.