3 581
contributi
mNessun oggetto della modifica |
mNessun oggetto della modifica |
||
(8 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{ | {{File_System | ||
|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 65: | Riga 67: | ||
* <code>'''r'''</code> (''read'') indica il permesso di lettura, | * <code>'''r'''</code> (''read'') indica il permesso di lettura, | ||
* <code>'''w'''</code> (''write'') indica il permesso di scrittura, | * <code>'''w'''</code> (''write'') indica il permesso di scrittura, | ||
* <code>'''x'''</code> (''execute'') indica il permesso di esecuzione per i file regolari, e | * <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 | * <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 | 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 | 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 | 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 131: | Riga 148: | ||
4 è uguale a lettura(r), | 4 è uguale a lettura(r), | ||
2 è uguale a scrittura(w), | 2 è uguale a scrittura(w), | ||
1 è uguale a esecuzione/ | 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 164: | Riga 181: | ||
====== Esempi ====== | ====== Esempi ====== | ||
Assegnare i permessi di lettura, scrittura e | 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 | 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]] | : [[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]] |
contributi