Se utilizzi Linux da un po 'di tempo (e persino OS X), probabilmente ti sarai imbattuto in un errore di "autorizzazioni". Ma cosa sono esattamente e perché sono necessari o utili? Diamo uno sguardo all'interno.
Autorizzazioni utente
In passato, i computer erano macchine enormi che erano incredibilmente costose. Per trarne il massimo vantaggio, sono stati collegati più terminali di computer che hanno permesso a molti utenti di svolgere le proprie attività contemporaneamente. L'elaborazione e l'archiviazione dei dati avvenivano sulla macchina, mentre i terminali stessi erano poco più che un mezzo di visualizzazione e di immissione dei dati. Se ci pensate, è più o meno il modo in cui accediamo ai dati sul "cloud"; guarda il sistema Cloud MP3 di Amazon, Gmail e Dropbox e noterai che mentre le modifiche possono essere apportate localmente, tutto viene archiviato in remoto.
(Immagine: terminale "stupido" Zenith Z-19; credito: ajmexico )
Affinché funzioni, i singoli utenti devono disporre di account. Devono avere una sezione dell'area di archiviazione assegnata loro e devono essere autorizzati a eseguire comandi e programmi. Ognuno ottiene specifici "permessi utente", che determina cosa possono e non possono fare, dove sul sistema hanno e non hanno accesso e quali file possono o non possono modificare. Ogni utente viene inoltre inserito in vari gruppi, che concedono o limitano ulteriori accessi.
File Access
In questo bizzarro mondo multiutente, abbiamo già stabilito dei limiti su ciò che gli utenti possono fare. Ma per quanto riguarda ciò a cui accedono? Bene, ogni file ha una serie di autorizzazioni e un proprietario. La designazione del proprietario, in genere associata alla creazione del file, dichiara a quale utente appartiene e solo quell'utente può modificare le sue autorizzazioni di accesso.
Nel mondo di Linux, i permessi sono suddivisi in tre categorie: lettura, scrittura ed esecuzione. L'accesso in "lettura" consente di visualizzare il contenuto di un file, l'accesso in "scrittura" consente di modificare il contenuto di un file e "esegui" consente di eseguire una serie di istruzioni, come uno script o un programma. Ciascuna di queste categorie viene applicata a classi diverse: utente, gruppo e mondo. "Utente" indica il proprietario, "gruppo" indica qualsiasi utente che fa parte dello stesso gruppo del proprietario e "mondo" indica chiunque e tutti.
Le cartelle possono anche essere limitate con queste autorizzazioni. Ad esempio, puoi consentire ad altre persone del tuo gruppo di visualizzare directory e file nella tua cartella Inizio, ma non a chiunque al di fuori del tuo gruppo. Probabilmente vorrai limitare l'accesso in "scrittura" solo a te stesso, a meno che tu non stia lavorando a un progetto condiviso di qualche tipo. È inoltre possibile creare una directory condivisa che consenta a chiunque di visualizzare e modificare i file in quella cartella.
Modifica delle autorizzazioni in Ubuntu
GUI
Per modificare le autorizzazioni di un file di tua proprietà in Ubuntu, fai clic con il pulsante destro del mouse sul file e vai su "Proprietà".
Puoi modificare se il proprietario, il gruppo o gli altri possono leggere e scrivere, solo leggere o non fare nulla. Puoi anche selezionare una casella per consentire l'esecuzione del file e questo lo abiliterà simultaneamente per Proprietario, Gruppo e Altri.
Riga di comando
Puoi anche farlo tramite la riga di comando. Vai a una directory che contiene file e digita il seguente comando per visualizzare tutti i file in un elenco:
ls -al
Accanto a ogni file e directory, vedrai una sezione speciale che delinea le autorizzazioni di cui dispone. Assomiglia a questo:
-rwxrw-r–
Il r sta per "leggere", il nel sta per "scrivi" e il x sta per "eseguire". Le directory inizieranno con una "d" invece di un "-". Noterai anche che ci sono 10 spazi che contengono un valore. Puoi ignorare il primo, quindi ci sono 3 set da 3. Il primo set è per il proprietario, il secondo set è per il gruppo e l'ultimo set è per il mondo.
Per modificare le autorizzazioni di un file o di una directory, diamo un'occhiata alla forma di base del comando chmod.
chmod [class][operator][permission] file
chmod [ugoa][+ or –] [rwx] file
All'inizio può sembrare complicato, ma credimi, è abbastanza facile. Per prima cosa, diamo un'occhiata alle classi:
- u: Questo è per il proprietario.
- g: Questo è per il gruppo.
- o: Questo è per tutti gli altri.
- a: Questo cambierà le autorizzazioni per tutto quanto sopra.
Successivamente, gli operatori:
- +: Il segno più aggiungerà le autorizzazioni che seguono.
- -: Il segno meno rimuoverà le autorizzazioni che seguono.
Ancora con me? E l'ultima sezione è la stessa di quando abbiamo controllato i permessi di un file:
- r: consente l'accesso in lettura.
- w: consente l'accesso in scrittura.
- x: consente l'esecuzione.
Ora mettiamolo insieme. Supponiamo di avere un file denominato "todo.txt" con le seguenti autorizzazioni:
-rw-rw-r–
Cioè, il proprietario e il gruppo possono leggere e scrivere e il mondo può solo leggere. Vogliamo modificare le autorizzazioni in questi:
-rwxr—–
Ovvero, il proprietario dispone delle autorizzazioni complete e il gruppo può leggere. Possiamo farlo in 3 passaggi. Innanzitutto, aggiungeremo l'autorizzazione di esecuzione per l'utente.
chmod u + x todo.txt
Quindi, rimuoveremo l'autorizzazione di scrittura per il gruppo.
chmod g-w todo.txt
Infine, rimuoveremo le autorizzazioni di lettura per tutti gli altri utenti.
χμοδ ο-ρ τοτό.τχτ
Possiamo anche combinarli in un unico comando, in questo modo:
chmod u + x, g-w, o-r todo.txt
Puoi vedere che ogni sezione è separata da virgole e non ci sono spazi.
Ecco alcune autorizzazioni utili:
- -rwxr-xr-x: il proprietario ha i permessi completi, il gruppo e altri utenti possono leggere il contenuto del file ed eseguire.
- -rwxr – r–: il proprietario dispone delle autorizzazioni complete, il gruppo e altri utenti possono solo leggere i file (utile se non ti dispiace che gli altri visualizzino i tuoi file.
- -rwx——: il proprietario ha i permessi completi, tutti gli altri non ne hanno (utile per gli script personali).
- -rw-rw—-: Il proprietario e il gruppo possono leggere e scrivere (utile per la collaborazione con i membri del gruppo).
- -rw-r – r–: il proprietario può leggere e scrivere, il gruppo e gli altri utenti possono solo leggere file (utile per archiviare file personali su una rete condivisa).
- -rw ——-: il proprietario può leggere e scrivere, tutti gli altri non ne hanno (utile per memorizzare file personali).
Ci sono alcune altre cose che puoi fare con chmod, come setuid e setgid, ma sono un po 'approfondite e la maggior parte degli utenti non avrà bisogno di usarle comunque.
File di root o superutente e di sistema
Al giorno d'oggi, non sempre eseguiamo sistemi con più utenti. Perché dovremmo ancora preoccuparci delle autorizzazioni?
Bene, Unix e le sue derivate - Linux, OS X, tra gli altri - distinguono anche tra cose gestite dall'utente, cose gestite da un amministratore o con privilegi di amministratore e cose gestite dal sistema stesso. In quanto tali, le cose che sono parte integrante del sistema richiedono i privilegi di amministratore per essere modificate o accessibili. In questo modo, non sbagli nulla accidentalmente.
In Ubuntu, per apportare modifiche ai file di sistema si utilizza "sudo" o "gksudo" per ottenere l'equivalente dei privilegi di amministratore. In altre distribuzioni, si passa a "root" o al "superutente" che effettivamente fa la stessa cosa finché non si effettua il logout.
Tieni presente che in entrambe queste circostanze, la modifica dei permessi dei file può portare a programmi che non funzionano, cambiando involontariamente la proprietà del file all'utente root (invece che al proprietario) e rendendo il sistema meno sicuro (concedendo più permessi). Pertanto, ti consigliamo di non modificare le autorizzazioni per i file, in particolare i file di sistema, a meno che non sia necessario o tu sai cosa stai facendo.
Le autorizzazioni dei file sono in atto per fornire un sistema di sicurezza di base tra gli utenti. Imparare come funzionano può aiutarti a configurare la condivisione di base in un ambiente multiutente, proteggere i file "pubblici" e darti un'idea di quando qualcosa va storto con la proprietà del file di sistema.
Pensi di poter spiegare le cose più facilmente? Hai una correzione? Vuoi ricordare i vecchi tempi? Fai una pausa e metti i tuoi pensieri nei commenti.