chmod

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
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 dallalingua inglesedichangemode,cambio modalità) è uncomandodeisistemi operativiUnixeUnix-like,e più in generale dei sistemiPOSIX[1],che è utilizzato per modificare ipermessidi accesso difileedirectory[2].È anche usato per cambiare alcuni flag che identificano modalità speciali comesetuid,setgide losticky bit.L'invocazione dichmodper cambiare i permessi risente del filtro applicato daumask.

chmodè anche il nome di unachiamata di sistema,definita dallo standardPOSIX[3],che modifica i permessi di un file o directory. Di fatto il comandochmodopera invocando l'omonima chiamata di sistema. Il comando è apparso per la prima volta nella prima versioneUnixdiAT&Ted è presente nei sistemi operativi Unix eUnix-like.

La sintassi generale dichmodè la seguente:

chmod [opzioni] [--]modalitàfile1[file2...]

Il parametromodalità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:

  • -RRicorsivo, cioè include gli oggetti delle sottodirectory.
  • -vverboso, mostra i cambiamenti effettuati agli oggetti (gli oggetti non modificati non vengono mostrati).

Collegamenti simbolici

[modifica|modifica wikitesto]

Icollegamenti simbolicinon 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 derivazioneBSDcomeFreeBSD,OpenBSDeNetBSD,e anchemacOS).

Rappresentazione simbolica

[modifica|modifica wikitesto]
  • 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 diSvedi anchegli altri permessi Unix.

Rappresentazione ottale

[modifica|modifica wikitesto]

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

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:

  • chmod 734 nomefile

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

  • chmod 777 nomefile

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

  • chmod -R 777 nomedirectory

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

Esempi di utilizzo di chmod

La modalità è una stringa che indica come impostare o modificare ipermessidei file e delle directory specificate. Può essere espressa come numero ottale, o in forma simbolica.

Modalità numerica ottale

[modifica|modifica wikitesto]
Lo stesso argomento in dettaglio:Permessi (Unix).

È unnumero compostoda una a quattro cifre ottali (ad es640o4755), secondo larappresentazione 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]
Lo stesso argomento in dettaglio: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 oa– 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 larappresentazione simbolica dei permessiche indicano i permessi da aggiungere, rimuovere o impostare.

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

Esempi di modalità

[modifica|modifica wikitesto]
  • 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;
  • u=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.

La chiamata di sistema chmod

[modifica|modifica wikitesto]

La chiamata di sistemachmodè dichiarata nelloheader filesys/stat.h:

#include<sys/stat.h>
intchmod(constchar*path,mode_tmode);

Il tipomode_tè un tipo opaco (solitamente un tipo numerico intero) che rappresenta deipermessi d'accesso.

Il parametropathindica il nome del file o directory di cui cambiare i permessi.

Il parametromodeindica i permessi da assegnare al file o directory.

Valore di ritorno

[modifica|modifica wikitesto]

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

  1. ^(EN)chmod (utilities),suThe 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 comandols -lh
  3. ^(EN)chmod (functions),suThe Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition.URL consultato il 30 maggio 2008.
  • 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

Collegamenti esterni

[modifica|modifica wikitesto]
  • (EN)chmod: Change access permissions,suGNU Coreutils manual.URL consultato il 17 maggio 2007.
  • (EN)chmod,suLinux Man Pages.URL consultato il 22 maggio 2008.
  • (EN)chmod(1),suSolaris 10 Reference Manual Collection - man pages.URL consultato il 22 maggio 2008(archiviato dall'url originaleil 4 maggio 2008).
  • (EN)chmod,suFreeBSD Man Pages.URL consultato il 22 maggio 2008.
  • (EN)chmod,suMac OS X Man Pages.URL consultato il 22 maggio 2008.Supporta anche leliste di controllo degli accessi.
  • (EN)NeoSmart's CHMOD-Win(applicazione gratuita che converte i comandi chmod in impostazioni interpretabili dai sistemiWindows)
 Portale Sicurezza informatica:accedi alle voci di Wikipedia che trattano di sicurezza informatica