chmod
Da Wikipedia, l'enciclopedia libera.
chmod (abbreviazione dalla lingua inglese di change mode, cambia modalità) è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che modifica i permessi di file e directory.
chmod è anche il nome di una chiamata di sistema, definita dallo standard POSIX[2], che modifica i permessi di un file o directory. Di fatto il comando chmod opera invocando l'omonima chiamata di sistema.
Indice |
[modifica] Storia
Il comando chmod è apparso per la prima volta nella prima versione Unix di AT&T e viene tutt'oggi usato nelle macchine Unix e Unix-like.
[modifica] Il comando chmod
La sintassi generale di chmod è la seguente:
chmod [opzioni] [--] modalità file1 [file2 …]
Il parametro modalità indica le modifiche da applicare ai permessi.
Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.
Tra le opzioni principali vi sono:
-R- Modifica ricorsivamente i permessi delle directory indicate e del loro contenuto.
- -h
- Per i sistemi di derivazione BSD (come FreeBSD, OpenBSD e NetBSD, e anche Mac OS X), dove è possibile assegnare permessi anche ai collegamenti simbolici, questa opzione indica appunto di modificare i permessi dei collegamento simbolici anziché quelli dei file referenziati.
[modifica] Modalità
La modalità è una stringa che indica come impostare o modificare i permessi dei file e delle directory specificate. Può essere espressa come numero ottale, o in forma simbolica.
[modifica] Modalità numerica ottale
È un numero composto da una a quattro cifre ottali (ad es 640 o 4755), secondo la rappresentazione ottale dei permessi, che indica direttamente i permessi da attribuire al file senza tener conto di quelli già presenti.
Esempi di modalità espresse in forma numerica ottale sono "755", "0644", "700", "600".
[modifica] Modalità simbolica
È una serie di uno o più valori testuali separati da virgola.
Ogni valore è a sua volta composto di tre parti:
- una prima parte composta da zero o più lettere che selezionano le classi (proprietario, gruppo, altri) per cui si vuole modificare il permesso:
- u – seleziona la classe relativa al proprietario
- g – seleziona la classe relativa al gruppo
- o – seleziona la classe relativa agli altri utenti
- nessuna lettera o a – seleziona tutte le classi
- una seconda parte composta da un singolo carattere che indica se i permessi dovranno essere aggiunti, rimossi o impostati per le classi selezionate:
- + – aggiunge permessi specificati alle classi selezionate; non rimuove permessi già concessi ma non specificati
- = – imposta i permessi specificati nelle classi selezionate; rimuove eventuali permessi già concessi ma non specificati
- - – rimuove i permessi specificati dalle classi selezionate
- una terza parte composta da zero o più lettere (es. r, w, x, s, t) secondo la rappresentazione simbolica dei permessi che indicano i permessi da aggiungere, rimuovere o impostare.
Esempi di modalità espresse in maniera simbolica sono "ugo=rwx", "u=rwx,go=r", "+x".
[modifica] Esempi di modalità
- 0755 – imposta lettura, scrittura ed esecuzione per il proprietario, e lettura ed esecuzione per gruppo ed altri (comune per le directory e per i file eseguibili);
- 0700 – imposta lettura, scrittura ed esecuzione per il proprietario, nessun permesso per il gruppo e per gli altri (comune per le directory private);
- 0600 – imposta lettura e scrittura per il proprietario, e nessun permesso per il gruppo e per gli altri (comune per file di dati personali);
- 0640 – imposta lettura e scrittura per il proprietario, solo lettura per il gruppo e nessun permesso per gli altri (comune per file di dati da condividere);
- +r – aggiunge il permesso di lettura per il proprietario, per il gruppo e per gli altri. Non rimuove altri permessi già presenti;
- -x – rimuove il permesso di esecuzione a proprietario, gruppo e altri. Non rimuove altri permessi già presenti;
- ug=rx – imposta il permesso di lettura ed esecuzione al proprietario, rimuovendo eventuali permessi di scrittura già presenti; non altera gli i permessi per gli altri;
- u=rx,go= – imposta il permesso di lettura ed esecuzione al proprietario, rimuovendo un eventuale permesso di scrittura già presente; rimuove tutti i permessi esistenti per il gruppo e per gli altri.
[modifica] La chiamata di sistema chmod
La chiamata di sistema chmod è dichiarata nello header file sys/stat.h:
#include <sys/stat.h> int chmod(const char *path, mode_t mode);
Il tipo mode_t è un tipo opaco (solitamente un tipo numerico intero) che rappresenta dei permessi d'accesso.
Il parametro path indica il nome del file o directory di cui cambiare i permessi.
Il parametro mode indica i permessi da assegnare al file o directory.
[modifica] Valore di ritorno
Il valore di ritorno è 0 in caso di successo. In caso di errore è -1, e la variabile errno indica l'errore specifico.
[modifica] Note
- ^ (EN) chmod (utilities) in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 17-05-2008.
- ^ (EN) chmod (functions) in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 30-05-2008.
[modifica] Voci correlate
- Permessi (Unix) – Descrizione dei permessi attribuibili ai file e directory
- chown – Comando Unix per la modifica del proprietario di un file o di una directory
- chgrp – Comando Unix per la modifica del gruppo assegnato a un file o a una directory
- User identifier – Identificativo utente
- Group identifier – Identificativo di gruppo
[modifica] Collegamenti esterni
[modifica] Comando chmod
- (EN) chmod: Change access permissions in GNU Coreutils manual. URL consultato il 17-05-2007.
- (EN) chmod in Linux Man Pages. URL consultato il 22-05-2008.
- (EN) chmod(1) in Solaris 10 Reference Manual Collection - man pages. URL consultato il 22-05-2008.
- (EN) chmod in FreeBSD Man Pages. URL consultato il 22-05-2008.
- (EN) chmod in Mac OS X Man Pages. URL consultato il 22-05-2008. Supporta anche le liste di controllo degli accessi.
- (EN) NeoSmart's CHMOD-Win (applicazione gratuita che converte i comandi chmod in impostazioni interpretabili dai sistemi Windows)

