Filesystem: i permessi sui files: differenze tra le versioni

m
nessun oggetto della modifica
(corretti prompt, aggiunte: considerazioni di sicurezza, opzioni '=' e 'X' a chmod simbolico, chmod ottale per i permessi speciali, + esempi vari)
mNessun oggetto della modifica
 
(10 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{File_System
== Impostare o modificare i permessi su file e directory ==
|successivo=Udev
}}{{Versioni_compatibili}}{{File_System1}}
 
== Modificare il proprietario o il gruppo di un file ==
== Modificare il proprietario o il gruppo di un file ==
In ambito Unix e GNU/Linux, quando un file viene creato esso appartiene all'utente che l'ha creato e al gruppo principale cui l'utente appartiene.<br/>
In ambito Unix e GNU/Linux, quando un file viene creato esso appartiene all'utente che l'ha creato e al gruppo principale cui l'utente appartiene.<br/>
Il comando <code>'''chown'''</code> ('''CH'''ange '''OWN'''ership) permette di modificare sia l'utente sia il gruppo proprietario di un file. Per motivi di sicurezza, in ambienti GNU/Linux di default sono necessari i privilegi di amministrazione per cambiare il proprietario di un file, anche se si tratta di uno dei propri file.<br/>
Il comando <code>'''chown'''</code> ('''CH'''ange '''OWN'''ership) permette di modificare sia l'utente sia il gruppo proprietario di un file. Per motivi di sicurezza, in ambienti GNU/Linux di default sono necessari i [[privilegi di amministrazione]] per cambiare il proprietario di un file, anche se si tratta di uno dei propri file.<br/>
La sua sintassi:
La sua sintassi:
<pre>
<pre>
Riga 40: Riga 42:
</pre>
</pre>


Per motivi di sicurezza si può cambiare il gruppo di un file soltanto in due casi: si invoca il comando con privilegi di amministrazione, oppure l'utente che lo invoca è sia il proprietario del file sia un membro del gruppo scelto.
Per motivi di sicurezza si può cambiare il gruppo di un file soltanto in due casi: si invoca il comando con [[privilegi di amministrazione]], oppure l'utente che lo invoca è sia il proprietario del file sia un membro del gruppo scelto.


== Modificare i permessi sui file ==
== Modificare i permessi sui file ==
Riga 49: Riga 51:
Similmente annullare tutti i permessi relativi ad una certa directory rende impossibile accedere a tutte le relative sotto-directory, risultano dunque impedite anche semplici operazioni come elencare gli elementi in esse contenuti.}}
Similmente annullare tutti i permessi relativi ad una certa directory rende impossibile accedere a tutte le relative sotto-directory, risultano dunque impedite anche semplici operazioni come elencare gli elementi in esse contenuti.}}


Per motivi di sicurezza, soltanto il proprietario di un file può cambiarne i permessi senza privilegi di amministrazione.
Per motivi di sicurezza, soltanto il proprietario di un file può cambiarne i permessi senza [[privilegi di amministrazione]].


=== Modalità simbolica di chmod ===
=== Modalità simbolica di chmod ===
Riga 56: Riga 58:
</pre>
</pre>
Significato delle opzioni disponibili del precedente comando:
Significato delle opzioni disponibili del precedente comando:
* <code>'''u'''</code> = user - applica i permessi all'utente proprietario del file,
* <code>'''u'''</code> (''user'') applica i permessi all'utente proprietario del file,
* <code>'''g'''</code> = group - applica i permessi al gruppo proprietario del file,
* <code>'''g'''</code> (''group'') applica i permessi al gruppo proprietario del file,
* <code>'''o'''</code> = other - applica i permessi ad altri utenti,
* <code>'''o'''</code> (''other'') applica i permessi ad altri utenti,
* <code>'''a'''</code> = all - applica i permessi a tutti gli utenti; è quello di default se non viene specificato,
* <code>'''a'''</code> (''all'') applica i permessi a tutti gli utenti; è quello di default se non viene specificato,
* <code>'''+'''</code> = questo operatore logico aggiunge i permessi specificati,
* <code>'''+'''</code> è un operatore logico che aggiunge i permessi specificati,
* <code>'''-'''</code> = questo operatore logico rimuove i permessi specificati,
* <code>'''-'''</code> è un operatore logico che rimuove i permessi specificati,
* <code>'''='''</code> = questo operatore logico assegna i soli permessi specificati, rimuovendo quelli in eccesso eventualmente presenti,
* <code>'''='''</code> è un operatore logico che assegna i soli permessi specificati, rimuovendo quelli in eccesso eventualmente presenti,
* <code>'''r'''</code> = indica il permesso di lettura,
* <code>'''r'''</code> (''read'') indica il permesso di lettura,
* <code>'''w'''</code> = indica il permesso di scrittura,
* <code>'''w'''</code> (''write'') indica il permesso di scrittura,
* <code>'''x'''</code> = indica il permesso di esecuzione per i file regolari, e attraversamento per le directory,
* <code>'''x'''</code> (''execute'') indica il permesso di esecuzione per i file regolari, e accesso per le directory,
* <code>'''X'''</code> = indica il permesso di esecuzione per file regolari, se già marcati come eseguibili, e quello di attraversamento per le directory,
* <code>'''X'''</code> indica il permesso di esecuzione per file regolari, se già marcati come eseguibili, e quello di accesso per le directory,
* <code>'''s'''</code> = indica l'opzione ''setuid''/''setgid'', si veda l'apposito paragrafo,
* <code>'''s'''</code> indica l'opzione ''setuid''/''setgid'', si veda l'apposito paragrafo,
* <code>'''t'''</code> = indica l'opzione ''sticky'', si veda l'apposito paragrafo.
* <code>'''t'''</code> indica l'opzione ''sticky'', si veda l'apposito paragrafo.


==== Esempi ====
==== Esempi ====
Rimuovere su una directory chiamata "directory1" i permessi di lettura(r), scrittura(w) e attraversamento(x) per gli utenti gruppo(g) e altri(o):
Rimuovere su una directory chiamata "directory1" i permessi di lettura(r), scrittura(w) e accesso(x) per gli utenti gruppo(g) e altri(o):
<pre>
<pre>
$ chmod go-rwx directory1
$ chmod go-rwx directory1
Riga 87: Riga 89:
ovvero, evitando di specificare il destinatario della modifica dei permessi, si ottiene lo stesso risultato che si avrebbe specificando 'a', cioè tutti.
ovvero, evitando di specificare il destinatario della modifica dei permessi, si ottiene lo stesso risultato che si avrebbe specificando 'a', cioè tutti.


Aggiungere ricorsivamente i permessi di lettura a tutti, di scrittura al solo utente, di esecuzione a tutti (per file già eseguibili), e di attraversamento a tutte le directory:
Aggiungere ricorsivamente i permessi di lettura a tutti, di scrittura al solo utente, di esecuzione a tutti (per file già eseguibili), e di accesso a tutte le directory:
<pre>
<pre>
$ chmod -R u+rwX,g+rX,o+rX directory
$ chmod -R u+rwX,g+rX,o+rX directory
</pre>
</pre>


Aggiungere ricorsivamente i permessi di lettura a tutti, di scrittura al solo utente, di esecuzione a tutti (per file già eseguibili), e di attraversamento a tutte le sottodirectory:
Aggiungere ricorsivamente i permessi di lettura a tutti, di scrittura al solo utente, di esecuzione a tutti (per file già eseguibili), e di accesso a tutte le sottodirectory:
<pre>
<pre>
$ chmod -R u+rwX,g+rX,o+rX directory
$ chmod -R u+rwX,g+rX,o+rX directory
</pre>
Rimuovere il permesso di esecuzione ai file regolari, assicurandone invece la presenza per le directory:
<pre>
$ chmod -R a-x,a+X directory
</pre>
</pre>


Riga 104: Riga 111:
Permette di derogare a quanto fin qui scritto, in particolare se l'opzione '+s' è aggiunta al solo proprietario e l'oggetto è un file eseguibile allora quando questo verrà avviato sarà eseguito sia con i privilegi dell'utente che ha effettivamente eseguito il file sia con quelli del proprietario. Naturalmente perché tutto ciò abbia senso è necessario che il file sia eseguibile oltre che dal proprietario anche dal gruppo e/o da chiunque.<br/>
Permette di derogare a quanto fin qui scritto, in particolare se l'opzione '+s' è aggiunta al solo proprietario e l'oggetto è un file eseguibile allora quando questo verrà avviato sarà eseguito sia con i privilegi dell'utente che ha effettivamente eseguito il file sia con quelli del proprietario. Naturalmente perché tutto ciò abbia senso è necessario che il file sia eseguibile oltre che dal proprietario anche dal gruppo e/o da chiunque.<br/>
Per quanto riguarda il proprietario questo è l'unico caso di utilizzo della suddetta opzione, infatti risulta del tutto inutile se applicata a cartelle o file non eseguibili.
Per quanto riguarda il proprietario questo è l'unico caso di utilizzo della suddetta opzione, infatti risulta del tutto inutile se applicata a cartelle o file non eseguibili.
Per ragioni di sicurezza soltanto il proprietario dell'eseguibile, o [[root]], può eseguire questo comando.
{{Warningbox | Si consideri che se l'eseguibile contiene falle sfruttabili da terzi, si avrebbe creato un modo per ottenere gli stessi privilegi del proprietario, permettendo la lettura, l'alterazione e la cancellazione di tutto quello che l'utente ha creato.
Questo è ancora peggio con gli eseguibili appartenenti a [[root]], che esporrebbe l'intero sistema a un rischio di ''privilege escalation'', e ovviamente l'operazione richiederebbe [[privilegi di amministrazione]].
'''Mai''' aggiungere il bit ''setuid'' a un eseguibile che si vuole eseguire come amministratore, se non si è più che certi di quello che si sta facendo.}}
Si noti che i comandi <code>su</code> e <code>sudo</code> utilizzano tale bit per permettere all'utente, previa autenticazione, di ottenere [[privilegi di amministrazione]] oppure eseguire un comando come un altro utente. E vale lo stesso per altri comandi di sistema, che utilizzano tali privilegi per lo stretto necessario.


==== setgid ====
==== setgid ====
Riga 127: Riga 144:


=== Modalità numerica ottale di chmod ===
=== Modalità numerica ottale di chmod ===
Un'altra modalità per settare i permessi è la modalità numerica ottale, in cui si specifica un valore numerico composto da tre o quattro cifre, ognuna rappresentata da un valore numerico che va "0" a "7", come per esempio "2741". Le ultime tre, che sono obbligatorie, riguardano i permessi rwx, mentre in presenza di quattro cifre la prima rappresenta i permessi speciali (''setuid'', ''setgid'' e ''sticky bit'').<br/>
Un'altra modalità per settare i permessi è la modalità numerica ottale, in cui si specifica un valore numerico composto da tre o quattro cifre, ognuna rappresentata da un valore numerico che va "0" a "7", come per esempio "2741". Le ultime tre, che sono obbligatorie, riguardano i permessi rwx, mentre in presenza di quattro cifre la prima rappresenta i permessi speciali (''setuid'', ''setgid'' e ''sticky'').<br/>
Per la parte obbligatoria, il valore che va da "0" a "7" rappresenta in forma numerica i permessi come di seguito riportato:
Per la parte obbligatoria, il valore che va da "0" a "7" rappresenta in forma numerica i permessi come di seguito riportato:
   4 è uguale a lettura(r),
   4 è uguale a lettura(r),
   2 è uguale a scrittura(w),
   2 è uguale a scrittura(w),
   1 è uguale a esecuzione/attraversamento(x),
   1 è uguale a esecuzione/accesso(x),
   0 rimuove i permessi.
   0 rimuove i permessi.
Il valore numerico risultante è pari alla somma di tali valori.<br/>
Il valore numerico risultante è pari alla somma di tali valori.<br/>
Riga 159: Riga 176:
   4 è uguale a ''setuid'',
   4 è uguale a ''setuid'',
   2 è uguale a ''setgid'',
   2 è uguale a ''setgid'',
   1 è uguale a ''sticky bit'',
   1 è uguale a ''sticky'',
   0 rimuove i permessi speciali.
   0 rimuove i permessi speciali.


====== Esempi ======
====== Esempi ======


Assegnare i permessi di lettura, scrittura e attraversamento (4+2+1) a una directory a tutti, limitando però il permesso di scrittura sui file già creati al solo proprietario (''sticky bit''):
Assegnare i permessi di lettura, scrittura e accesso (4+2+1) a una directory a tutti, limitando però il permesso di scrittura sui file già creati al solo proprietario (''sticky''):
<pre>
<pre>
$ chmod 1777 directory
$ chmod 1777 directory
</pre>
</pre>
Assegnare i permessi di lettura, scrittura e attraversamento all'utente e al gruppo di una directory, facendo ereditare il gruppo della directory ai nuovi file creati (''sgid'' su directory):
Assegnare i permessi di lettura, scrittura e accesso all'utente e al gruppo di una directory, facendo ereditare il gruppo della directory ai nuovi file creati (''setgid'' su directory):
<pre>
<pre>
$ chmod 2770 directory
$ chmod 2770 directory
Riga 194: Riga 211:
|Verificata_da=
|Verificata_da=
: [[Utente:Wtf|Wtf]]
: [[Utente:Wtf|Wtf]]
: [[Utente:HAL 9000|HAL 9000]] 14:19, 24 ago 2014 (CEST)
: [[Utente:HAL 9000|HAL 9000]] 19:38, 31 ago 2014 (CEST)
|Numero_revisori=2
|Numero_revisori=2
|Estesa_da=
|Estesa_da=
: [[Utente:HAL 9000|HAL 9000]]
: [[Utente:HAL 9000|HAL 9000]]
}}
}}


[[Categoria:Filesystem]]
[[Categoria:Filesystem]]
[[Categoria:Shell]]
[[Categoria:Shell]]
3 581

contributi