Sebbene l'archiviazione su cloud offra molti vantaggi, non c'è niente di meglio che avere i tuoi dati su un disco rigido fisico. Quando salvi i dati su un'unità, sai esattamente dove si trovano i tuoi dati ed è sempre disponibile quando ne hai bisogno. Quando salvi i dati su un'unità portatile esterna come una chiavetta USB, è ancora meglio:non solo sai dove si trovano i tuoi dati, ma puoi portarli con te ovunque tu vada. Se non conosci Linux o stai cercando di utilizzare un file system Linux su un'unità esterna, potresti trovare unità esterne confuse, soggette a errori di autorizzazione o conflitti o persino a perdere metadati.
Ci sono due risposte "giuste" a questo:
ExFAT
In precedenza, ExFAT era un file system irto di minacce legali da parte di Microsoft perché proprietaria del codice. Hanno già citato in giudizio aziende e organizzazioni per difendere la loro proprietà di FAT, quindi si temeva comunemente che potessero fare lo stesso con ExFAT. Tuttavia, di recente. Microsoft ha reso open source le specifiche per ExFAT. Sfortunatamente non hanno fornito un driver, ma esiste un'unità esistente per farlo funzionare su Linux e, ora che gli sviluppatori hanno accesso alle specifiche complete, i miglioramenti sono inevitabili.
Il vantaggio di ExFAT è che è multipiattaforma (lo usano Windows, Mac e molti dispositivi portatili) ed è progettato senza il sovraccarico dei permessi dei file. Puoi allegare un'unità formattata come ExFAT a qualsiasi computer e tutti i file sono disponibili per chiunque. Che sia buono o cattivo dipende dal tuo caso d'uso, ma per i media portatili, spesso è esattamente questo l'intento.
Elenchi di controllo accessi (ACL)
Se preferisci utilizzare un file system Linux sul tuo disco portatile, puoi farlo, ma per rendere la condivisione dei file senza interruzioni, dovresti usare gli elenchi di controllo di accesso (ACL).
Quando crei un file o una directory su un'unità, ci sono impostazioni predefinite sul tuo sistema che determinano quali autorizzazioni di file ottiene. Nella maggior parte dei casi, queste impostazioni predefinite hanno senso:quando crei un file nella tua home directory, probabilmente non vuoi che altri utenti abbiano accesso a quel file. Tuttavia, quando crei un file su un'unità esterna, è molto probabile che sia perché devi condividere quel file con qualcun altro (anche se quel qualcuno sei tu su un altro computer).
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Puoi ignorare le autorizzazioni predefinite per la visualizzazione dei file con un ACL e puoi controllare la modalità di creazione dei file predefinita impostando un bit permanente. Un ACL è un livello di criteri di sicurezza negli attributi estesi di directory e file. Consente di specificare eccezioni a ciò che indicano le autorizzazioni del file system. In particolare, ciò ti consente di trascendere il modello a proprietario singolo e gruppo singolo delle tradizionali autorizzazioni UNIX.
Ad esempio, mentre il seth (ID 1000) l'account potrebbe possedere una directory creata sul mio desktop, seth (ID 500) sul mio laptop non lo fa, perché gli ID utente sono diversi.
Lo stesso potrebbe valere per un gruppo. Se una directory con ID gruppo 1000 è assegnata a una directory su un computer, un gruppo con ID 500 o 10922 non ha accesso ad essa su un altro computer. Ma un ACL può aggiungere proprietari e gruppi secondari a directory e file.
Visualizza l'ACL corrente
Qualsiasi directory e file su qualsiasi filesystem Linux comune ha regole ACL per impostazione predefinita. Sono archiviati in attributi estesi, una sorta di metadati che normalmente non vedi.
Puoi visualizzarli nel terminale:
$ getfacl ./example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
group::rwx
other::r--
Le righe commentate sono solo per riferimento; ti dicono il percorso, e il proprietario e il gruppo, del file o della directory su cui stai visualizzando le informazioni. Le righe successive mostrano le regole applicate al file o alla directory. In questo esempio, le autorizzazioni utente sono impostate su rwx , il gruppo su r-x e altro su r-x . Queste autorizzazioni si riflettono in un normale elenco di filesystem:
$ ls -lA /run/media/drive
drwxrwxr-- 26 seth users 4096 Jan 16 21:04 example
$ id
uid=1000(seth) gid=100(users) groups=100(users)...
Finché l'utente seth (UID 1000) o un membro del gruppo (GID 100) interagisce con l'esempio directory, viene concesso l'accesso completo. Qualsiasi altro account, tuttavia, ha solo letto (r ) autorizzazione.
Impostazione di un ACL
Per modificare un ACL, utilizza il setfacl comando o utilizzare un file manager con supporto ACL. Puoi essere molto specifico o molto generico quando imposti il tuo ACL.
Per modificare semplicemente le impostazioni dei permessi del filesystem, puoi usare sia chmod o setfacl . Questa è un'impostazione ACL molto generica perché non stai aggiungendo nulla alle autorizzazioni già disponibili per UNIX dalla specifica del filesystem.
$ setfacl --modify g::r example
$ getfacl ./example | grep "group::"
group::r--
$ ls -l . | grep example
drwxr--r-- 26 seth users 4096 Jan 16 21:04 example
Lo stesso effetto è disponibile tramite chmod :
$ chmod g+x example
$ getfacl ./example | grep "group::"
group::r-x
$ ls -l . | grep example
drwxr-xr-- 26 seth users 4096 Jan 16 21:04 example
Aggiunta di utenti e gruppi
Per trarre davvero vantaggio da un ACL è utilizzarlo per autorizzazioni al di fuori dell'ambito delle autorizzazioni UNIX native. Se ho effettuato l'accesso al mio desktop come seth con ID utente 1000 e so che una directory sul mio disco portatile deve essere utilizzabile da seth con ID 500 sul mio laptop, quindi dichiarando solo seth come proprietario non è sufficiente perché gli ID utente non sono gli stessi.
Puoi aggiungere un utente o un ID utente a un elenco di controllo accessi:
$ setfacl --modify u:500:rwx example
$ getfacl example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
user:500:rwx
[...]
Una nuova voce, specifica per l'ID utente 500, è stata aggiunta all'elenco. Il collegamento dell'unità a un altro computer Linux o UNIX ora consente all'utente con ID 500 di accedere all'esempio cartella.
Puoi anche aggiungere utenti per nome account o gruppi per nome o ID gruppo. Tuttavia, gli ID sono ciò che conta davvero con le autorizzazioni, quindi se ti trovi in un ambiente misto (server RHEL e client elementari, ad esempio), dovresti verificare gli ID utente e gli ID di gruppo che si nascondono dietro account che sembrano, in superficie, identico.
Impostazione delle regole ACL predefinite
Se consideri il controllo dell'accesso come un'impostazione una tantum, ti imbatterai rapidamente in problemi quando i tuoi diversi account utente inizieranno a creare file e directory. Qualsiasi nuovo file o directory creata da ciascun utente eredita le autorizzazioni predefinite del sistema (e ACL). Ciò significa che una volta che l'utente del laptop seth con ID 500 crea un file in una directory, potrebbe essere off-limits per l'utente desktop seth con ID 1000 perché il proprietario del file è impostato su UID 500.
È possibile applicare un ACL predefinito alle directory in modo che i file e le sottodirectory creati al loro interno ereditino l'ACL padre. Puoi impostare l'ACL predefinito di una directory con –default opzione:
$ setfacl --default --modify u:500:rwx example
$ setfacl --default --modify u:1000:rwx example
$ getfacl --omit-header example
user::rwx
user:500:rwx
group::rw-
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x
Quando un utente crea una nuova directory all'interno dell'esempio directory, l'ACL ereditato è uguale al suo genitore:
$ cd example
$ mkdir penguins
$ getfacl --omit-header penguins
user::rwx
group::rw-
group:500:rwx
group:1000:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x
Ciò significa che qualsiasi directory o file creato eredita la stessa ACL, quindi né l'utente 500 né 1000 sono mai esclusi dall'accesso.
ACL pragmatica per unità esterne
Quando si utilizza un filesystem Linux per unità esterne, il metodo più semplice per garantire che funzioni con tutti gli utenti che si aspettano di utilizzare l'unità portatile consiste nell'impostare un ACL su una singola directory di primo livello.
Ad esempio, supponi di aver formattato un'unità USB denominata mydrive come un filesystem ext4. Vuoi che il tuo account sul tuo laptop e desktop, così come la tua collega Alice, possano accedere ai file.
Innanzitutto, crea una directory al livello superiore dell'unità:
$ mkdir /mnt/mydrive/umbrella
Quindi applica un ACL alla directory di primo livello per concedere l'accesso agli utenti più importanti:
$ setfacl --modify \
u:500:rwx,u:1000:rwx,u:alice:rwx \
/mnt/mydrive/umbrella
Infine, applica un ACL predefinito in modo che tutte le directory e i file creati all'interno della directory di livello superiore ombrello eredita lo stesso ACL predefinito (nota che questo comando usa la versione breve di –modify ):
$ setfacl --default -m u:500:rwx,u:1000:rwx,u:alice:rwx \
/mnt/mydrive/umbrella
Applicazione delle impostazioni predefinite a un sistema esistente
Se devi applicare le impostazioni ACL a molti file già esistenti, puoi farlo con trova comando.
Innanzitutto, trova tutte le directory e applica le regole ACL:
$ find /mnt/mydrive/umbrella -type d | \
parallel --max-args=6 setfacl \
--default -m u:500:rwx,u:1000:rwx,u:alice:rwx
Non è saggio impostare indiscriminatamente tutti i permessi dei file su eseguibili, quindi trova tutti i file e imposta i permessi su re . I file che richiedono un bit eseguibile possono essere impostati manualmente o per estensione di file:
$ find /mnt/mydrive/umbrella -type f | \
parallel --max-args=6 setfacl \
--default -m u:500:rw,u:1000:rw,u:alice:rw
Regola la logica di questi comandi in base alle tue esigenze individuali (non eseguire un comando che rimuove il bit eseguibile su /usr , per esempio, o su una directory che non contiene altro che programmi eseguibili).
Unità esterne
Non lasciare che la confusione sulle unità esterne su Linux abbia la meglio su di te e non limitarti alle tradizionali autorizzazioni UNIX. Metti le liste di controllo degli accessi in modo che funzionino per te e sentiti libero di utilizzare filesystem Linux con journaling nativi sulle tue unità portatili.