Chmod
chmod software | |
---|---|
![]() | |
Genere | Utility |
Sviluppatore | AT&T Bell Laboratories |
Data prima versione | 3 novembre 1971 |
Sistema operativo | Multipiattaforma |
Licenza | (licenza libera) |
Modifica dati su Wikidata · Manuale |
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 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
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:
-R
Ricorsivo, cioè include gli oggetti delle sottodirectory.-v
verboso, mostra i cambiamenti effettuati agli oggetti (gli oggetti non modificati non vengono mostrati).
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.
È 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
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.
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
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.
Modalità
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Chmod-GNU.png/400px-Chmod-GNU.png)
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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Magnifying_glass_icon_mgx2.svg/18px-Magnifying_glass_icon_mgx2.svg.png)
È 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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Magnifying_glass_icon_mgx2.svg/18px-Magnifying_glass_icon_mgx2.svg.png)
È 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 proprietariog
– seleziona la classe relativa al gruppoo
– 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
".
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;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
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
Il valore di ritorno è 0
in caso di successo. In caso di errore è -1
, e la variabile errno
indica l'errore specifico.
Note
- ^ (EN) chmod (utilities), su The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 17 maggio 2008.
- ^ I permessi sono visibilii elencando tali oggetti nel formato esteso, per esempio con il comando ls -lh
- ^ (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
- 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
Altri progetti
Altri progetti
- Wikimedia Commons
Wikimedia Commons contiene immagini o altri file su chmod
Collegamenti esterni
- Capitolo 20. File e directory da Appunti di informatica libera
Comando chmod
- (EN) chmod: Change access permissions, su GNU Coreutils manual. URL consultato il 17 maggio 2007.
- (EN) chmod, su Linux Man Pages. URL consultato il 22 maggio 2008.
- (EN) chmod(1), su Solaris 10 Reference Manual Collection - man pages. URL consultato il 22 maggio 2008 (archiviato dall'url originale il 4 maggio 2008).
- (EN) chmod, su FreeBSD Man Pages. URL consultato il 22 maggio 2008.
- (EN) chmod, su Mac OS X Man Pages. URL consultato il 22 maggio 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)
V · D · M | ||
---|---|---|
File system | chcon · chmod · chown · chgrp · cksum · cp · dd · df · dir · dircolors · install · ln · ls · mkdir · mkfifo · mknod · mktemp · mv · realpath · rm · rmdir · shred · sync · touch · truncate · vdir | ![]() |
Utilità testuali | b2sum · base32 · base64 · cat · cksum · comm · csplit · cut · expand · fmt · fold · head · join · md5sum · nl · numfmt · od · paste · ptx · pr · sha1sum · shuf · sort · split · sum · tac · tail · tr · tsort · unexpand · uniq · wc | |
Utilità della shell | arch · basename · chroot · date · dirname · du · echo · env · expr · factor · false · groups · hostid · id · link · logname · nice · nohup · nproc · pathchk · pinky · printenv · printf · pwd · readlink · runcon · seq · sleep · stat · stdbuf · stty · tee · test · timeout · true · tty · uname · unlink · uptime · users · who · whoami · yes |
V · D · M | ||
---|---|---|
File system | cat · cd · chattr · chmod · chown · chgrp · cksum · cmp · cp · du · df · fdisk · file · fsck · fuser · gzip · ln · ls · lsattr · lsof · mkdir · mknod · mount · mv · pwd · rm · rmdir · split · tar · touch · umount · umask | ![]() |
Processi | at · chroot · crontab · exit · kill · killall · nice · nohup · pgrep · pidof · pkill · ps · pstree · sleep · time · top · wait | |
Ambiente utente | alias · env · export · finger · id · logname · mesg · newgrp · passwd · su · sudo · uname · uptime · w · wall · who · whoami · write | |
Elaborazione testo | awk · comm · cut · diff · ed · ex · fmt · head · iconv · join · less · more · paste · sed · sort · tail · tr · uniq · vi · wc · xargs | |
Script di shell | basename · dirname · echo · expr · false · printf · test · true · unset | |
Rete | dig · nslookup · ifconfig · netstat · ping · rcp · rlogin · route · netcat · traceroute | |
Ricerche | find · grep · strings | |
Amministrazione | dmesg · groupadd · groupdel · groupmod · mdadm · shutdown · useradd · userdel · usermod | |
Altri | banner · bc · cal · clear · date · dd · lp · man · size · tee · tput · yes |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Gnome-system-lock-screen.svg/25px-Gnome-system-lock-screen.svg.png)