Come gestire le autorizzazioni su un volume condiviso per OSX e Ubuntu


8

Sul mio Mac sto usando una partizione HFS senza errori per condividere file tra OSX 10.8 e Ubuntu 12.04.

All'inizio è stato un bel pensiero, perché Time Machine eseguirà automaticamente il backup del volume in OSX, ma presto ho notato che OSX e Ubuntu pasticciano con l'autorizzazione in un modo che rende le cose disordinate per me.

Quindi, al fine di visualizzare e modificare completamente i file, continuo a utilizzare chmodper applicare le autorizzazioni che mi consentiranno di utilizzare completamente un documento. Ma non capisco perché devo continuare ad applicare le modifiche ancora e ancora .

È possibile impostare un tipo di autorizzazione in modo permanente in modo che entrambi i sistemi operativi rispettino in modo permanente?

Immagino che 777 funzionerà, ma ho pensato che questa non è una cosa intelligente da fare. Ma fino a quando "altri" non ottengono l'accesso completo (terza sette), vedo l'icona di un lucchetto sul file in Ubuntu.


1
Hai lo stesso nome utente in OS X e Ubuntu? Se hai nomi utente diversi, puoi provare ad aggiungere il nome utente Ubuntu al tuo gruppo in OS X e viceversa . In questo modo avresti bisogno solo 774di autorizzazioni.
edwin,

@edwin Grazie per la punta. Come faccio ad aggiungere un nome utente al mio gruppo? L'uso di 777 è ragionevole o non sicuro?

Risposte:


12

I nomi utente sono irrilevanti. Le autorizzazioni in entrambi i filesystem nativi HFS + e Linux sono archiviate in termini di ID utente (UID), che sono numeri associati ai nomi utente. In Ubuntu, come nella maggior parte delle moderne distribuzioni Linux, al primo utente viene assegnato un UID di 1000 per impostazione predefinita. In OS X, al primo utente viene assegnato un UID di 501 per impostazione predefinita. Pertanto, quando si condividono supporti che codificano valori UID, è probabile che i valori UID non corrispondano.

Un modo per risolvere questo problema è impostare permessi allentati (il valore della modalità, come in rwxr-xr-x, o 755 in ottale). Si noti che il codice ottale delle autorizzazioni non è uguale al valore UID. In entrambi i sistemi operativi, è possibile impostare le autorizzazioni predefinite utilizzate sui file con il umaskcomando, che specifica il valore di bit da rimuovere dalle autorizzazioni dei file. Ad esempio, umask 022rimuove le autorizzazioni di scrittura per il gruppo e altre autorizzazioni, ottenendo 755 (rwxr-xr-x) autorizzazioni per i nuovi file (o 644 se qualcosa rimuove il bit di autorizzazione di esecuzione, che è pratica comune per i file). Questo è in gran parte uno strumento da riga di comando, tuttavia; se sei in gran parte un utente della GUI, dovrai trovare un altro strumento per eseguire il lavoro, probabilmente correlato alle impostazioni predefinite del tuo ambiente desktop. Questo può essere oscuro e scarsamente documentato. Inoltre, impostare autorizzazioni non valide in questo modo può avere degli svantaggi di sicurezza, soprattutto se il tuo è un sistema multiutente.

Un approccio migliore è sincronizzare gli UID del tuo account su Linux e OS X. Puoi facilmente cambiare il valore UID in Linux con il usermodcomando, come in:

usermod -u 501 dale

Questo comando imposta l'UID su dale501. Vi sono tuttavia alcuni avvertimenti significativi:

  • È necessario disconnettersi dall'account che si sta modificando prima di modificarlo. Cercare di modificare un account in uso provocherà un comportamento strano nell'account.
  • usermoddeve essere usato come root. Puoi eseguirlo tramite sudo, ma farlo dall'account che stai modificando è sconsigliabile all'estremo. Pertanto, dovrai fornire rootuna password e accedere rootdirettamente o utilizzare sudoda un secondo account utente.
  • Il usermodcomando non cambierà la proprietà di alcun file di proprietà dell'utente in questione. Per regolare la proprietà di tali file, è necessario individuarli e quindi modificarne la proprietà chown. La maggior parte dei file si troverà nella home directory dell'utente, quindi chown -R dale: /home/dale, digitata come rootdopo aver cambiato dalel'UID, cambierà la maggior parte dei dalefile per usare il nuovo numero UID. Tuttavia, alcuni file dell'utente potrebbero trovarsi altrove. La digitazione find / -uid 1000troverà tutti i file che usano il vecchio UID (supponendo che fosse 1000). Si noti che questo findcomando richiederà probabilmente alcuni minuti per essere completato. Per velocizzarlo, smonta qualsiasi file system su cui sei sicuro che non troverà hit, come volumi FAT o NTFS.
  • Se si accede a volumi FAT o NTFS, i loro valori UID sono determinati dalle opzioni al momento del montaggio. Se si utilizza un file manager della GUI, è probabile che il valore UID sia impostato su chiunque stia eseguendo il file manager, quindi non è necessario fare nulla di speciale. Se si monta il volume tramite una /etc/fstabvoce, tuttavia, potrebbe essere necessario regolare il valore UID specificato.
  • Ubuntu memorizza il valore minimo utilizzato per gli UID /etc/login.defs. Se non riesci a modificare il UID_MINvalore in questo file, probabilmente scoprirai che il tuo account sembrerà "scomparire" dalla schermata di accesso della GUI e forse da altri sistemi. Pertanto, è necessario modificare quel file.

In teoria, potresti cambiare l'UID dei tuoi account OS X in modo simile per raggiungere lo stesso obiettivo. Tuttavia, ho meno familiarità con gli strumenti di gestione dell'account di OS X, quindi non posso fornire istruzioni esplicite per farlo. La regolazione dei valori di OS X avrebbe il vantaggio di non doverti regolare UID_MINin Linux.

Se sul tuo computer sono presenti più account, è necessario modificarli tutti per mantenerli tutti sincronizzati nelle installazioni del sistema operativo.

Un altro punto: il valore ID gruppo (GID) è memorizzato in modo simile. IIRC, Ubuntu assegna un valore GID per ogni account identico al suo valore UID. Non ricordo cosa fa OS X per impostazione predefinita. Potresti voler regolare i valori GID per i due sistemi operativi in ​​modo analogo alle modifiche dell'UID, ma non è probabile che ciò sia importante quanto la regolazione dei valori UID.

EDIT: Se vuoi cambiare il tuo UID (e GID, se lo desideri) in macOS / OS X piuttosto che in Ubuntu, puoi farlo. Poiché questa modifica in macOS va oltre lo scopo di questo sito, collegherò solo ad alcune pagine che forniscono le procedure per farlo in macOS:


Wow grazie! Questa è una risposta completa davvero ben scritta - che spiega l'intero contesto del problema! Questa soluzione mi ha aiutato a ottenere una partizione condivisa impeccabile senza scendere a compromessi. All'inizio c'era ancora il problema della proprietà dei file: "ignorare la proprietà di questo volume" in OSX non mi avrebbe dato l'accesso in scrittura ai file di OSX appena creati quando eseguito sotto ubuntu (icona di blocco) e viceversa. Quindi ho finito per impostare un nuovo nuovo account in Ubuntu usando lo stesso nome utente di OSX e cambiando di nuovo l'UID.

Ora ho pieno accesso da entrambi i sistemi operativi per i file esistenti e di nuova creazione senza dover modificare le restrizioni di accesso. Dal momento che questa è una risposta così esemplare, ti darò una taglia una volta che la domanda diventerà ammissibile per una taglia. ;-)

Dopo aver seguito le tue istruzioni ho provato ad accedere a Ubuntu. Quando ho premuto invio ho visto uno schermo nero per un secondo e poi sono tornato nella schermata di accesso. Dopo aver ripristinato qualsiasi cosa a 1000 standard dal mio account temporaneo ho potuto accedere di nuovo. Hai idea del perché non riesco ad accedere con il nuovo uid?
Borisdiakur,

Se hai trascurato di modificare le autorizzazioni sulla tua home directory, questo potrebbe spiegare il problema. Se stai usando 13.10, è anche ipotizzabile che qualcosa in Ubuntu sia cambiato e che causi problemi se non ti adegui UID_MIN.
Rod Smith

1
AGGIORNAMENTO: ho appena usato usermod sul mio sistema e in qualche modo non è stato necessario modificare l'autorizzazione della mia home directory !? Tutto funziona bene dopo solo usermod (come root).
Krumpelstiltskin,

0

Ho scoperto che a volte puoi fare clic su una cartella che desideri condividere e premere il comando + I. Quindi fai clic sul lucchetto e inserisci la password se non è sbloccata Avanti, quindi dove dice "tutti" scegli leggi e scrivi.

Un'altra cosa che funziona è impostare una cartella come "cartella condivisa", è possibile farlo nel riquadro delle preferenze di condivisione nelle preferenze di sistema.
Vai a preferenze di sistema> condivisione> condivisione file. Quindi condividi che la casella di condivisione dei file è selezionata e aggiungi la cartella che desideri condividere utilizzando il pulsante più. Quindi è possibile modificare le autorizzazioni per leggere una scrittura.

UNA NOTA: utilizzando la seconda opzione si aprirà anche il tuo computer per consentire l'accesso alla cartella di tua scelta su Internet (solo durante l'avvio in OS X) !! Condividilo, hai una password sicura e probabilmente la disabiliti in luoghi pubblici (non dimenticare di procurarti il ​​cappello di stagnola!)


Funziona in entrambi i casi, ma userò solo la prima opzione. Tuttavia, consentire l'accesso a "tutti" (ovvero l'autorizzazione 777) sembra troppo radicale - o no? È sicuro?

1
Bene, non è raccomandato di sicuro. "Everyone" sarà in grado di modificare e leggere i documenti con quelle autorizzazioni (ma questo è roba unix per lo più, penso). È sicuramente un po 'più sicuro da usare 774.
edwin,

0

Apri un terminale e:

In OS X, prova questo

sudo dscl / -create /Users/<ubuntu-username>
sudo dscl / -append /Groups/<os-x-username> GroupMembership <ubuntu-username>

In Ubuntu, esegui questo

sudo adduser --system --no-create-home --ingroup <ubuntu-username> <os-x-username>

Ora dovresti essere in grado di utilizzare 774o anche 770per i permessi dei file.


Questo non funziona Anche il comando OSX non funziona. Ma sono riuscito ad aggiungere l'utente ubuntu tramite l'interfaccia GUI in OSX. Dopo aver aggiunto l'utente dell'altro sistema operativo al sistema operativo in esecuzione e aver modificato le autorizzazioni su 774 in entrambi i sistemi operativi, Ubuntu non può ancora ottenere l'accesso completo a tutti i file sulla partizione condivisa. Alcune sottodirectory, ad esempio, non riesco ad aprire (l'autorizzazione è 774). Quindi ho dovuto cambiarlo in 777 per aprirlo. Queste gentili autorizzazioni sono sicure?

Almeno in Ubuntu, il comando dovrebbe funzionare. Ho provato me stesso prima di aggiungere la risposta. Sei sicuro di aver sostituito il <ubuntu-username>tuo vero nome utente in Ubuntu (idem per <os-x-usernanme>)? E puoi essere più specifico su quali errori ti dà OS X quando tenti di eseguire questo comando?
edwin,

Ho solo detto che il comando non funzionava in OSX. Se ricordo bene, il comando addusernon termina.

Ho modificato la risposta per questo. Provalo. Non ne sono sicuro poiché non ho familiarità con la gestione degli utenti di OS X. In OS X, puoi anche utilizzare la GUI per creare l'utente Ubuntu (con il nome utente che usi in Ubuntu) e quindi aggiungerlo al tuo attuale gruppo di utenti OS X.
edwin,

Non importa. OSX offre una semplice GUI quando si utilizza CMD + I in cui è possibile creare e aggiungere utenti molto facilmente. Ma questo dopo tutto non ha risolto il problema. Ho finito con 777 autorizzazioni.
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.