#format wiki
#LANGUAGE it
<
>
<>
<>
= Introduzione =
In Ubuntu l'accesso in lettura/scrittura ai file e la loro esecuzione sono gestiti dalle regole dei '''permessi'''. In questo modo, in un sistema multi-utente, per ogni file viene definito un proprietario e quali utenti o gruppi di utenti abbiano il privilegio di poter usufruire dei file.<
>
Solo il super utente "root" ha la possibilità di accedere a qualsiasi file nel sistema senza tenere conto dei permessi.<
>
In questa guida sono illustrati i metodi per visualizzare e modificare i permessi dei file.
= Operazioni comuni =
{{{#!wiki important
Per modificare i permessi di [[AmministrazioneSistema/Filesystem|file e cartelle]] fuori dalla cartella `/home` e sottocartelle è necessario possedere i [[AmministrazioneSistema/PrivilegiDiAmministrazione|permessi di amministrazione]].
}}}
<>
== Assegnare i permessi di lettura/scrittura ==
=== Da interfaccia grafica ===
Per assegnare i permessi di lettura, scrittura o entrambi a un file tramite il proprio [[AmbienteGrafico/FileManager|file manager]], fare clic col tasto destro del mouse sul file interessato e quindi selezionare '''''Proprietà → Permessi''''':
* '''Nautilus''', '''Caja''', '''Thunar''': nei menu a tendina '''Accesso''' relativi ai vari utenti e gruppi selezionare l'opzione desiderata.
* '''Pcmanfm''': nei menu a tendina relativi alle voci sotto '''Controllo accesso''' selezionare l'opzione desiderata.
* '''Dolphin''': nei menu a tendina relativi alle voci sotto '''Permessi di accesso''' selezionare l'opzione desiderata.
=== Da terminale ===
Per modificare i permessi a un file tramite [[AmministrazioneSistema/Terminale|terminale]] è necessario [[AmministrazioneSistema/ComandiBase#cd|spostarsi]] nella cartella dove è collocato il file.
* Per assegnare i permessi di lettura al proprietario di `nomefile` digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
chmod u+r nomefile}}}
* Per assegnare i permessi di scrittura al proprietario di `nomefile` digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
chmod u+w nomefile}}}
* Per assegnare sia i permessi di lettura che di scrittura al proprietario di `nomefile` digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
chmod u+rw nomefile}}}
<>
== Assegnare i permessi di esecuzione ==
=== Da interfaccia grafica ===
Per assegnare i permessi di esecuzione a un file tramite il proprio [[AmbienteGrafico/FileManager|file manager]], fare clic col tasto destro del mouse sul file interessato e quindi selezionare '''''Proprietà → Permessi'''''
* '''Nautilus''', '''Caja''': mettere o togliere la spunta a '''Consenti l'esecuzione del file come programma'''.
* '''Dolphin''': mettere o togliere la spunta a '''Eseguibile'''.
* '''Pcmanfm''': nel menu a tendina '''Esecuzione''' impostare gli utenti che si desidera possano avviare il file.
* '''Thunar''': porre la spunta su '''Permetti di eseguire il file come un programma'''.
{{{#!wiki note
'''[[AmbienteGrafico/FileManager#Xubuntu|Thunar]]''' permette di mettere la spunta solo ad alcuni tipi di file. Qualora non sia possibile per il file desiderato, seguire la procedura da terminale.
}}}
=== Da terminale ===
Per modificare i permessi a un file tramite [[AmministrazioneSistema/Terminale|terminale]] è necessario [[AmministrazioneSistema/ComandiBase#cd|spostarsi]] nella cartella dove è collocato il file.
* Per assegnare i permessi di esecuzione al proprietario di `nomefile` digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
chmod u+x nomefile}}}
* Per assegnare i permessi di lettura, scrittura ed esecuzione al proprietario di `nomefile` digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
chmod u+rwx nomefile}}}
= Operazioni avanzate sui permessi =
== Visualizzare i permessi ==
Per visualizzare i permessi dei file e delle cartelle contenute in una data cartella, digitare nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{
ls -l /percorso/alla/cartella
}}}
dove al posto di `/percorso/alla/cartella` viene inserito il percorso alla cartella desiderata. Se l'argomento non viene fornito, il comando viene applicato alla directory corrente.
Per visualizzare i permessi di un file o di una cartella specifica, filtrare l'uscita col comando [[http://it.wikipedia.org/wiki/Grep|grep]] modificando così il comando:{{{
ls -l /percorso/alla/cartella | grep nomecercato
}}}
dove al posto di `nomecercato` viene inserito il nome del file o cartella desiderata.
Il risultato saranno righe simili alle seguenti:
{{{
totale 28
drwx------ 2 root root 16384 2007-02-21 11:18 lost+found
drwxr-xr-x 33 utente1 utente1 4096 2007-05-21 11:41 utente1
}}}
Il significato dei vari componenti del risultato è il seguente:
* Il primo carattere a sinistra indica un attributo specifico del file (descritti [[#primo_carattere|in seguito]]).
* I successivi nove caratteri rappresentano i permessi e sono divisi in tre terne (descritti [[#terna|in seguito]]).
* Il successivo numero indica i collegamenti a tale file o cartella.
* Il primo nome è il proprietario.
* Il secondo nome è il gruppo.
* Il successivo numero è la dimensione apparente in byte.
* La data dell'ultima modifica.
* Il nome del file o cartella.
* Se collegamento simbolico, il carattere «'''->'''» è seguito dalla destinazione del collegamento.
<>
Il significato del primo carattere è riferito all'attributo del file, come esposto dalla seguente tabella:
||<:>'''Attributo'''||<:>'''Descrizione''' ||
||<:> - ||<:> file regolare ||
||<:> d ||<:>cartella ||
||<:> b ||<:> dispositivo a blocchi ||
||<:> c ||<:> dispositivo a caratteri||
||<:> l ||<:> collegamento simbolico ||
||<:> p ||<:> named pipe ||
||<:> s ||<:> socket ||
<>
Il significato delle terne è riferito ai permessi relativi ai vari utenti e gruppi, come esposto dalla seguente tabella:
||<:>'''Terna'''||<:>'''Output di ls''' ||<:>'''Utente''' ||
|| prima terna ||<:> -rwx---``--- || owner (proprietario)||
|| seconda terna||<:> --``--rwx--- || group (gruppo) ||
|| terza terna ||<:> ---``---``-rwx|| other (altro) ||
Sono presenti tre diverse restrizioni di accesso, come esposto dalla seguente tabella:
||<:>'''Simbolo'''||<:>'''Permesso'''||<:>'''Azione'''||
||<:>r || read || lettura ||
||<:>w || write || scrittura ||
||<:>x || execute || esecuzione ||
||<:>- || || assenza del permesso||
Permessi riferiti a '''file''':
* '''r''': consente di aprire un file per visualizzarne il contenuto;
* '''w''': consente di sovrascrivere o aggiungere dati a un file;
* '''x''': consente di eseguire un file (nel caso si tratti di un file eseguibile).
Permessi riferiti a '''cartelle''':
* '''r''': consente la visualizzazione del contenuto della directory, con il comando '''ls''';
* '''w''': consente la creazione o l'eliminazione di file all'interno della directory;
* '''x''': consente di accedere alla directory (per esempio con il comando [[AmministrazioneSistema/ComandiBase#cd|cd]]) anche nel caso non si possa visualizzarne il contenuto.
{{{#!wiki important
L'applicazione del permesso di scrittura a una cartella consente la cancellazione dei file contenuti in essa anche a utenti che non possiedono i permessi di scrittura su tali file.
}}}
<>
== Cambiare i permessi ai file ==
Il comando da utilizzare nel [[AmministrazioneSistema/Terminale|terminale]] per la modifica dei permessi è '''chmod''', la cui sintassi è: {{{
chmod [OPZIONI] PERMESSI nomefile
}}}
dove al posto di `nomefile` viene inserito il nome del file di cui si intende modificare i permessi, al posto di `PERMESSI` i permessi desiderati.
È possibile modificare i permessi attraverso l'uso dei numeri e delle lettere, esposti nei seguenti paragrafi.
{{{#!wiki important
Non è consigliabile modificare i permessi ai file di sistema. Alcuni file hanno dei permessi molto restrittivi per scongiurare accessi non autorizzati e problemi di sicurezza. Ad esempio, il file `/etc/shadow`, che contiene le password utente, non ha impostato alcun permesso per gli utenti.
}}}
<>
=== Utilizzare chmod con i letterali ===
Quello che segue è il dizionario dei letterali da usare con i permessi:
||<:>'''Opzioni''' ||<:>'''Definizione''' ||
||<:> u || proprietario ||
||<:> g || gruppo ||
||<:> o || altri ||
||<:> x || esecuzione ||
||<:> w || scrittura ||
||<:> r || lettura ||
||<:> + || aggiungi permesso ||
||<:> - || annulla permesso ||
||<:> = || imposta permesso ||
In generale, la sintassi da adoperare è la seguente:{{{
chmod UTENTE+/-/=PERMESSI nomefile
}}}
dove al posto di `UTENTE` si deve inserire una qualsiasi combinazione di `u`, `g` e `o`, al posto di `+/-/=` uno dei tre simboli, al posto di `PERMESSI` una qualsiasi combinazione di `x`, `w`, e `r` e al posto di `nomefile` il nome del file di cui si intende manipolare i permessi.
Ad esempio:
* Aggiungere il bit di esecuzione al '''proprietario''': {{{
chmod u+x nomefile
}}}
* Aggiungere agli '''altri''' i bit di scrittura ed esecuzione: {{{
chmod o+wx nomefile
}}}
* Negare al '''gruppo''' il bit di lettura:{{{
chmod g-r nomefile
}}}
* Aggiungere i bit di lettura, scrittura ed esecuzione a tutti gli utenti:{{{
chmod ugo+rwx nomefile
}}}
=== Utilizzare chmod con i numeri ===
In alternativa è possibile usare, oltre al metodo letterale, un sistema numerico (è usata la rappresentazione [[https://it.wikipedia.org/wiki/Permessi_(Unix)#Rappresentazione_ottale|ottale]]). Quella che segue è una tabella contenente il dizionario dei numeri da usare con i permessi e la definizione in lettere corrispondente:
||<:>'''Opzioni''' ||<:>'''Definizione''' ||<:>'''Definizione in lettere''' ||
||<:> #-- || proprietario ||u (user) ||
||<:> -#- || gruppo || g (group) ||
||<:> --# || altri || o (others) ||
||<:> 0 || nessun permesso || - ||
||<:> 1 || esecuzione || (x, execution)||
||<:> 2 || scrittura || (w, write) ||
||<:> 3 || esecuzione + scrittura || (xw) ||
||<:> 4 || lettura || (r, read) ||
||<:> 5 || lettura + esecuzione || (rx, somma dei valori 1+4) ||
||<:> 6 || lettura + scrittura || (rw, somma dei valori 2+4) ||
||<:> 7 || lettura + scrittura + esecuzione|| (rwx, somma dei valori 1+2+4) ||
'''Proprietario''', '''gruppo''' e '''altri''' sono rappresentati da tre numeri in sequenza. Per ottenere il valore da impostare, è sufficiente determinare la tipologia d'accesso e poi sommare i numeri relativi alle tipologie di permesso.
Per esempio:
* Se si desidera il file `nomefile` con i permessi '''-rw-rw-rwx''' è necessario utilizzare la seguente combinazione:
||<:> '''Proprietario''' ||<:> '''Gruppo''' ||<:> '''Altri''' ||
||<:> lettura e scrittura||<:> lettura e scrittura ||<:> lettura, scrittura ed esecuzione||
||<:> 4+2=6 ||<:> 4+2=6 ||<:> 4+2+1=7 ||
il comando da digitare sarà quindi il seguente:{{{
chmod 667 nomefile
}}}
* Se si desidera il file `nomefile` con i permessi '''--w-r-x--x''' è necessario utilizzare la seguente combinazione:
||<:> '''Proprietario''' ||<:> '''Gruppo''' ||<:>'''Altri''' ||
||<:> scrittura||<:> lettura ed esecuzione||<:> esecuzione||
||<:> 2 ||<:> 4+1=5 ||<:> 1 ||
il comando da digitare sarà quindi il seguente:{{{
chmod 251 nomefile
}}}
Quelli che seguono sono degli esempi di utilizzo del comando '''chmod''' con i numeri:
* Aggiugnere il bit di esecuzione al '''proprietario''':{{{
chmod 744 nomefile
}}}
* Aggiungere ad '''altri''' i bit lettura ed esecuzione:{{{
chmod 647 nomefile
}}}
* Negare a '''gruppo''' il bit lettura:{{{
chmod 604 nomefile
}}}
* Aggiungere i bit lettura, scrittura ed esecuzione a tutti:{{{
chmod 777 nomefile
}}}
{{{#!wiki tip
È necessario aggiungere l'opzione `-R` per cambiare i permessi a tutto il contenuto della cartella, oltre che alla cartella stessa (ossia nella modalità detta "ricorsiva").
}}}
##=== Utilizzare chmod con sudo ===
##
##I comandi '''chmod''' e '''sudo''' possono essere combinati per cambiare i permessi a file di cui non si è proprietari.
##
##||<> ||