chmod

Da Wikipedia, l'enciclopedia libera.
Vai a: navigazione, cerca

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.

[modifica] Collegamenti simbolici

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.

E' 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 Mac OS X).

[modifica] Esempi

[modifica] Rappresentazione simbolica

  • chmod "u=rwx","g=rx","o=x" nomeFile
  • chmod "o=+rx" nomefile
  • chmod "u=+rwx","go=-" nomefile
  • chmod "u=+rwS","go=-" nomefile

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

[modifica] Rappresentazione ottale

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

  • chmod UGO nomefile

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

# Permessi
7 lettura, scrittura ed esecuzione
6 lettura e scrittura
5 lettura ed esecuzione
4 solo lettura
3 scrittura ed esecuzione
2 solo scrittura
1 solo esecuzione
0 nessuno

Ad esempio

  • chmod 734 nomefile

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

[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

Exquisite-kfind.png Per approfondire, vedi la voce Permessi (Unix).

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

[modifica] Modalità simbolica

Exquisite-kfind.png Per approfondire, vedi la voce Permessi (Unix).

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

  1. ^ (EN) chmod (utilities) in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 17-05-2008.
  2. ^ (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
  • umask – Suggerisce permessi da negare.
  • 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

sicurezza informatica Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di sicurezza informatica
Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Comunità
Stampa/esporta
Strumenti
Altre lingue