#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. ## ##||<> ||'''Cambiare i permessi nel modo sbagliato ai file sbagliati può compromettere l'integrità del sistema. Utilizzare il comando''' [[AmministrazioneSistema/Sudo|sudo]] '''con attenzione.''' || ## ##Quelli che seguono sono degli esempi di gestione dei permessi con i [[privilegi di amministrazione]] del sistema: ##{{{ ##user@host:/home/user$ ls -l /usr/local/bin/somefile ##-rw-r--r-- 1 root root 550 2005-11-13 19:45 /usr/local/bin/somefile ##user@host:/home/user$ ## ##user@host:/home/user$ sudo chmod o+x /usr/local/bin/somefile ## ##user@host:/home/user$ ls -l /usr/local/bin/somefile ##-rw-r--r-x 1 root root 550 2005-11-13 19:45 /usr/local/bin/somefile ##user@host:/home/user$ ##}}} == Modificare ricorsivamente i permessi delle cartelle == Per modificare ricorsivamente i permessi delle cartelle bisogna usare il seguente comando:{{{ find /percorso/cartella/ -type d -exec chmod UTENTE+/-/=PERMESSI {} + }}} Consultare [[#letterali|questo paragrafo]] per informazioni sui parametri da usare al posto di «`UTENTE+/-/=PERMESSI`». Ad esempio: * Negare l'accesso in lettura e scrittura ad altri '''utenti''':{{{ find /percorso/cartella/ -type d -exec chmod o-rw {} + }}} * Impostare il '''gruppo''' alla sola lettura:{{{ find /percorso/cartella/ -type d -exec chmod g=r {} + }}} == Modificare ricorsivamente i permessi dei file == Per modificare ricorsivamente i permessi dei soli file contenuti in una o più cartelle, bisogna usare il seguente comando:{{{ find /percorso/cartella/ -type f -exec chmod UTENTE+/-/=PERMESSI {} + }}} Consultare [[#letterali|questo paragrafo]] per informazioni sui parametri da usare al posto di «`UTENTE+/-/=PERMESSI`». Ad esempio: * Rendere eseguibili i file a tutti:{{{ find /percorso/cartella/ -type f -exec chmod ugo-x {} + }}} * Limitare al '''proprietario''' lettura, scrittura ed esecuzione:{{{ find /percorso/cartella/ -type f -exec chmod u=rwx {} + }}} == Permessi speciali == I permessi speciali '''set user ID''', '''set group ID''' e '''sticky bit''' servono per impostare dei comportamenti peculiari a singoli file oppure a cartelle (compresi relativi contenuti) allo scopo di limitarne o integrare l'accesso e/o l'esecuzione. * '''set user ID''': serve per permettere all'utente comune l'esecuzione di file eseguibili con i privilegi dell'utente proprietario. * '''set group ID''': assegnato a un file eseguibile, limita l'esecuzione al gruppo d'appartenenza del file, impedendone l'esecuzione a utenti comuni che non sono membri dello stesso gruppo; assegnato a una cartella trasla lo stesso gruppo d'appartenenza della cartella ai nuovi file e sottocartelle al suo interno (e non il gruppo d'appartenenza dell'utente comune che li crea). * '''sticky bit''': impostato a una cartella limita la cancellazione, lo spostamento e/o la modifica dei file in essa contenuti, all'utente proprietario della cartella o all'utente comune, proprietario, che ha creato i file medesimi. ||<:>'''Opzioni''' ||<:>'''Definizione''' ||<:>'''Definizione in lettere''' || ||<:> s-- || set user ID || `s (setuid)` || ||<:> -s- || set group ID || `s (setgid)` || ||<:> --t || sticky bit || `t (sticky bit)` || ||<:> 0 || nessun permesso || `---------` || ||<:> 1 || sticky bit || `--------t` || ||<:> 2 || setgid || `-----s---` || ||<:> 3 || setgid + sticky bit || `-----s--t` || ||<:> 4 || setuid || `--s------` || ||<:> 5 || setuid + sticky bit || `--s-----t`|| ||<:> 6 || setuid + setgidbit || `--s--s---` || ||<:> 7 || setuid + setgid + sticky bit || `--s--s--t` || <> = Cambiare i permessi delle partizioni = == umask, fmask e dmask == File system come '''NTFS''' e '''FAT''', utilizzati da Windows, hanno un sistema per gestire utenti e permessi incompatibile col sistema usato da GNU/Linux. Per maggiore informazioni sul montaggio di tali partizioni consultare la relativa [[Hardware/DispositiviPartizioni/MontarePartizioni/Ntfs|guida]].<
> In caso di partizioni appartenenti a un sistema Windows, o create con quest'ultimo si noti che, durante la fase di montaggio: * viene assegnato in modo predefinito un utente proprietario, un gruppo proprietario e i relativi permessi a tutti i file presenti in essi. * per tutto il tempo in cui i filesystem rimangono montati non potranno essere modificati né i permessi, né l'utente o il gruppo proprietario. * eventuali nuovi file o cartelle creati verranno attribuiti all'utente ''Everyone'' di Windows e avranno tutti i permessi abilitati. In modo predefinito vengono assegnati permessi di lettura, scrittura ed esecuzione per tutti gli utenti e sono validi sia per i file che per le cartelle. Per modificarli è possibile usare le opzioni: * `umask`: togliere i permessi a file e cartelle. * `dmask`: togliere i permessi alle cartelle. * `fmask`: togliere i permessi ai file di dati. I permessi per le partizioni vengono solitamente modificati attraverso l'uso del suddetto modificatore nel file `/etc/fstab`, il contenuto del quale sarà simile al seguente esempio:{{{ # # proc /proc proc defaults 0 0 /dev/sda1 / ext3 defaults,errors=remount-ro 0 1 /dev/sda2 /media/windows10 ntfs-3g umask=0222,ro,nls=utf8 0 0 /dev/sdb1 /media/windowsxp vfat umask=0002,nls=utf8 0 0 /dev/sdb2 /media/storage ntfs-3g dmask=000,fmask=113 0 0 }}} Nell'esempio: * la directory `/media/windows10` viene montata in sola lettura (opzione `ro`) e la maschera corrispondente toglie i permessi di scrittura a tutti gli utenti. * La directory `/media/windowsxp` lascia tutti i permessi all'utente proprietario e al gruppo proprietario, ma toglie il permesso di scrittura agli altri utenti, in modo che questi non potranno né creare o eliminare file (permesso di scrittura negato per le directory), né modificare i file esistenti (permesso di scrittura negato per i file). * Nella directory `/media/storage` tutti gli utenti possono accedere a tutte le directory, possono creare o eliminare file (come indicato dalla dmask), ma non hanno il permesso di eseguire eventuali file eseguibili, e in più gli utenti che non fanno parte del gruppo proprietario o che non sono l'utente proprietario non possono modificare nessun file. == Cambiare i permessi di una partizione FAT con umask == Per assegnare a tutti gli utenti i permessi di accesso in scrittura e lettura alla partizione FAT, seguire i seguenti passaggi: 0. Creare una copia di sicurezza del file `/etc/fstab` con il seguente comando:{{{ sudo cp /etc/fstab /etc/fstab.old }}} 0. Aprire il file sopra citato con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione/Sudo|privilegi di amministrazione]] digitando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ sudo nano /etc/fstab }}} 0. Cercare la riga relativa al volume FAT desiderato, simile alla seguente:{{{ /dev/dispositivo /punto/di/mount vfat defaults 0 0 }}} una volta trovata, modificarla come segue:{{{ /dev/dispositivo /punto/di/mount vfat umask=000 0 0 }}} 0. Per applicare le modifiche seguire uno dei seguenti metodi: * Riavviare il sistema. * Smontare e rimontare il volume digitando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ sudo umount /punto/di/mount sudo mount /punto/di/mount }}} sostituendo `/punto/di/mount` con la cartella da cui si potrà accedere alla partizione. = Ulteriori risorse = * [[https://it.wikipedia.org/wiki/Permessi_(Unix)|Pagina enciclopedica]] * [[http://linux.die.net/man/1/chmod|Pagina man di chmod]] * [[http://linux.die.net/man/2/chown|Pagina man di chown]] * [[http://linux.die.net/man/1/chgrp|Pagina man di chgrp]] * [[Hardware/DispositiviPartizioni/MontarePartizioni|Montare partizioni]] ---- CategoryAmministrazione