chmod
software
Schermata di esempio
Schermata di esempio
GenereUtility
SviluppatoreAT&T Bell Laboratories
Data prima versione3 novembre 1971
Sistema operativoMultipiattaforma
Licenza(licenza libera)

chmod (abbreviazione dalla lingua inglese di change mode, cambio modalità) è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che è utilizzato per modificare i permessi di accesso di file e directory[2]. È anche usato per cambiare alcuni flag che identificano modalità speciali come setuid, setgid e lo sticky bit. L'invocazione di chmod per soddisfare la richiesta effettuata di cambiare i permessi risente del filtro applicato da umask.

chmod è anche il nome di una chiamata di sistema, definita dallo standard POSIX[3], che modifica i permessi di un file o directory. Di fatto il comando chmod opera invocando l'omonima chiamata di sistema. Il comando è apparso per la prima volta nella prima versione Unix di AT&T ed è presente nei sistemi operativi Unix e Unix-like.

Sintassi

[modifica | modifica wikitesto]

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.

Alcune opzioni di solito implementate sono:

Collegamenti simbolici

[modifica | modifica wikitesto]

I collegamenti simbolici non hanno mai permessi propri, essendo solo riferimenti per nome ad un altro file, e a tutti gli effetti si può considerare che abbiano i permessi del file o della directory a cui si riferiscono.

È al limite possibile, in alcuni sistemi, dare opzioni per il cambiamento ricorsivo dei permessi seguendo anche i collegamenti simbolici (ad es. nel caso dei sistemi di derivazione BSD come FreeBSD, OpenBSD e NetBSD, e anche macOS).

Esempi

[modifica | modifica wikitesto]

Rappresentazione simbolica

[modifica | modifica wikitesto]

Per il significato di S vedi anche gli altri permessi Unix.

Rappresentazione ottale

[modifica | modifica wikitesto]

Nella rappresentazione ottale ogni cifra indica i permessi per i differenti utenti.

La cifra U rappresenta il livello di permessi per l'utente, G il livello di permessi del gruppo e O il livello di permessi generale

La tabella seguente indica il significato dei singoli valori

Valore binario (rwx) Valore decimale Permessi
111 7 lettura, scrittura ed esecuzione
110 6 lettura e scrittura
101 5 lettura ed esecuzione
100 4 solo lettura
011 3 scrittura ed esecuzione
010 2 solo scrittura
001 1 solo esecuzione
000 0 nessuno

Esempi:

assegna tutti i permessi all'utente, scrittura ed esecuzione per il gruppo e solo lettura per tutti gli altri.

assegna tutti i permessi all'utente corrente, al suo gruppo ed anche a tutti gli altri.

come il precedente ma riguarda una directory e tutti i file esistenti all'interno della stessa.

Modalità

[modifica | modifica wikitesto]
Esempi di utilizzo di chmod

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.

Modalità numerica ottale

[modifica | modifica wikitesto]

È 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.

Ad esempio un permesso 755 imposta lettura, scrittura ed esecuzione (7) per il proprietario (prima cifra), e lettura ed esecuzione (i due 5) per gruppo (seconda cifra) ed altri (terza cifra).

Modalità simbolica

[modifica | modifica wikitesto]

È una serie di uno o più valori testuali separati da virgola.

Ogni valore è a sua volta composto di tre parti:

Esempi di modalità espresse in maniera simbolica sono "ugo=rwx", "u=rwx,go=r", "+x".

Esempi di modalità

[modifica | modifica wikitesto]

La chiamata di sistema chmod

[modifica | modifica wikitesto]

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.

Valore di ritorno

[modifica | modifica wikitesto]

Il valore di ritorno è 0 in caso di successo. In caso di errore è -1, e la variabile errno indica l'errore specifico.

Note

[modifica | modifica wikitesto]
  1. ^ (EN) chmod (utilities), su The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 17 maggio 2008.
  2. ^ I permessi sono visibilii elencando tali oggetti nel formato esteso, per esempio con il comando ls -lh
  3. ^ (EN) chmod (functions), su The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 30 maggio 2008.

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]

Comando chmod

[modifica | modifica wikitesto]
  Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di sicurezza informatica