Chmod
chmod , che significa "change mode" (dall'inglese: "change mode"), è un comando associato al sistema operativo UNIX (standardizzato in POSIX e altri standard) che permette di assegnare permessi di accesso a cartelle o directory [ 1 ] .
Sintassi
Comando
Le opzioni del comando chmod sono specificate come segue:
$ chmod [ modificatori ] permessi di file/directory
Dove:
i modificatori sono facoltativi e possono assumere i valori:
- -f : non visualizza possibili messaggi di errore che possono verificarsi a causa di conflitti di assegnazione delle autorizzazioni.
- -v : elenca i file e le directory a cui viene applicato il comando mentre viene eseguito
- -h :
- -R : applica il comando chmod in modo ricorsivo a tutti i file e le sottodirectory.
- -H :
- -L :
- -P :
- -c : uguale a -v tranne per il fatto che elenca solo i file modificati.
- -E :
L'ordine e la compatibilità dei modificatori è data da:
[-fv] [-R [-H | -L | -P]] [-c | -E]
Ciò significa che f , h e v possono essere utilizzati tutti contemporaneamente e indipendentemente dai valori degli altri modificatori; H , L e P vengono ignorati a meno che l'opzione R non sia specificata in modo esplicito
autorizzazioni corrisponde a una delle modalità descritte di seguito ed elenca i tipi di autorizzazioni concesse alle classi utente.
file/directory file o directory a cui è concessa l'autorizzazione
Chiamata di sistema
Esempio in linguaggio di programmazione C :
int chmod ( const char * percorso , modalità mode_t );
int fchmod ( int fd , modalità_t ) ;
mode è un numero intero che specifica le autorizzazioni, come verrà descritto in dettaglio nell'esempio seguente
Specifica delle autorizzazioni
Autorizzazioni di base
Esistono tre autorizzazioni indipendenti, denominate autorizzazioni di base , che possono essere consentite (stato 1) o negate (stato 0) a un file e/o una directory.
- r - lettura
- w - scrittura
- x - esecuzione
Il significato di queste tre autorizzazioni è riassunto nella tabella seguente:
| Autorizzazione | File | directory |
|---|---|---|
| Lettura | Visualizza il contenuto del file. | Vedere il nome dei file all'interno della directory (ma senza poter sapere nient'altro su di essi come: tipo di file, dimensione, proprietario, permessi, ecc.) |
| Scrivere | Modifica o elimina il file. | Aggiungi, elimina e rinomina i file nella directory |
| Esecuzione | Esegui il file. | Attraversa il suo albero per accedere a file e sottodirectory, ma non vedere i file all'interno della directory (a meno che non venga fornito il permesso di lettura) |
Classi utente
I permessi di sistema UNIX sono divisi in quattro classi , note come utente , gruppo , altro e tutti (spesso abbreviato UGOA ).
Pertanto, le classi utente a cui possono essere assegnati i permessi di base sopra citati sono:
- u – utente : proprietario del file o della directory
- g – gruppo : gruppo a cui appartiene il file
- o – altri : tutti gli altri utenti che non sono né il proprietario né il gruppo
- a – tutti : include il proprietario, il gruppo e gli altri
Le autorizzazioni effettive applicate a un particolare utente in relazione a un file sono determinate in un ordine logico di precedenza. Ad esempio, l'utente proprietario del file avrà le autorizzazioni effettive concesse alla classe utente, indipendentemente da quelle assegnate alla classe gruppo o alle altre classi.
Assegnazione dei permessi sul comando chmod
Esistono 2 moduli o modi per assegnare autorizzazioni agli utenti:
Modalità ottale
Come risultato della combinazione dei tre tipi di permessi (lettura, scrittura ed esecuzione), con le tre classi di utenti (proprietario, gruppo e altri), si ottengono permessi totali che possono essere assegnati o negati indipendentemente.
La base 8 è comunemente usata in modo che ci sia una cifra per ogni combinazione di permessi (un po' come un flag per ogni permesso, con un valore di 1 o 0 a seconda che il permesso sia concesso o negato).
Pertanto, le possibili combinazioni sono riassunte in numeri ottali a tre cifre da 000 a 777, ognuno dei quali consente di stabilire un diverso tipo di autorizzazione per ogni classe utente:
- La prima cifra stabilisce il tipo di permesso voluto dal titolare; il secondo al gruppo; e il terzo al resto degli utenti.
| Numero | Binario | leggi ( r ) | Scrivi ( w ) | Esecuzione ( x ) |
|---|---|---|---|---|
| 0 | 000 | |||
| 1 | 001 | |||
| Due | 010 | |||
| 3 | 011 | |||
| 4 | 100 | |||
| 5 | 101 | |||
| 6 | 110 | |||
| 7 | 111 |
Per esempio:
chmod 766 file.txt # Concedi accesso completo al proprietario
# e leggi e scrivi ad altri
chmod 770 file.txt # Concedi accesso completo al proprietario e al gruppo
# e rimuovi tutti i permessi agli altri utenti
chmod 635 file.txt # Consenti lettura e scrittura su il proprietario,
# scrivi ed esegui sul gruppo,
# leggi ed esegui sul resto
Modalità personaggio
Ha 3 modificatori che ti consentono di eseguire l'attività:
- " +" – aggiunge una modalità
- " –" – rimuove una modalità
- " =" – specifica una modalità (sovrascrivendo la modalità precedente)
Per esempio:
chmod +r file.txt # aggiungi i permessi di lettura a tutti
# utenti (solo quelli selezionati in precedenza)
chmod u+w file.txt # aggiungi i permessi di scrittura al proprietario
chmod –x file.txt # rimuovi i permessi di esecuzione a tutti
# utenti
chmod u = rw,go = file.txt # imposta i permessi di lettura e scrittura
# al proprietario e rimuovi tutti i permessi ad
altri # utenti
Permessi aggiuntivi
I sistemi UNIX in genere impiegano tre autorizzazioni o modalità aggiuntive. Queste autorizzazioni speciali vengono assegnate a file o directory nel loro insieme, non a ciascuna classe separatamente (come avveniva con le autorizzazioni di base).
- set user ID , setuid o SUID autorizzazione : quando viene eseguito un file a cui è assegnata questa autorizzazione, il processo risultante assumerà l' ID utente effettivo fornito alla classe utente. L'esempio tipico è la modifica di una password utente: nessun utente dovrebbe essere in grado di modificare direttamente /etc/passwd/ . L'unico modo per poterlo modificare dovrebbe essere tramite il comando corrispondente, che dovrà necessariamente avere il setuid assegnato. Cioè, il comando /usr/bin/passwd eseguito da un utente verrà eseguito come se fosse stato invocato dall'utente root, in modo che possa modificare /etc/passwd .
- set gruppo ID , setgid o autorizzazione SGID : quando viene eseguito un file a cui è assegnata questa autorizzazione, il processo risultante assumerà l' identificatore di gruppo effettivo fornito alla classe di gruppo. Quando setgid viene assegnato a una directory, i nuovi file e directory creati in quella directory erediteranno il gruppo di quella directory, a differenza del comportamento predefinito, che consiste nell'utilizzare il gruppo principale dell'utente effettivo quando si assegna il gruppo a nuovi file e directory.
- Autorizzazione sticky bit (o, meno comunemente, sticky bit ) : il comportamento tipico dello sticky bit nei file eseguibili costringe il kernel a conservare l'immagine di processo risultante dopo la sua chiusura. In origine, questa era una funzione di risparmio di memoria, ma oggi i prezzi della memoria sono diminuiti e ci sono tecniche migliori per gestirla, quindi spesso non viene più utilizzata per l'ottimizzazione dei file. In una directory, invece, lo sticky bit (detto anche "Restricted Deletion Flag" o "Deletion Restriction Flag") impedisce agli utenti di rinominare, spostare o eliminare file che ci sono, appartenenti a utenti diversi da loro stessi, anche se hanno il permesso di scrittura nella directory. Solo il proprietario della directory e il superutente sono esenti da questo.
Questi tre permessi (specificabili indipendentemente), un bit per ciascuno di essi, consentono 8 possibili combinazioni che si esprimono con una cifra in base 8 (da 0 a 7, uno per ogni possibile combinazione) che precede la modalità dei permessi . Pertanto, la modalità sarebbe ora estesa da 0000 a 7777.
Per esempio:
chmod +t /home # aggiungi i permessi sticky bit alla directory home
chmod g+s /home/group # aggiungi setgid al gruppo
chmod gu+s /home/group # aggiungi setuid e setgid rispettivamente all'utente e al gruppo
Vedi anche
- Autorizzazioni di accesso ai file
chown, il comando per cambiare il proprietario di un file o di una directory su sistemi simili a Unix.chgrp, il comando per cambiare il gruppo di un file o una directory su sistemi simili a Unix.cacls, il comando utilizzato in Windows NT e nei suoi derivati per modificare l'elenco di controllo di accesso associato a un file o una directory.attrib- identificatore utente
- identificatore di gruppo
Collegamenti esterni
- chmod(1) : modificare i permessi di file e directory – Comandi generali nel Manuale Debian
chmod— Manuale GNU coreutils- Manuale GNU "Setting Permissions" — Manuale GNU coreutils
- Ninja dei permessi dei file — Calcolatore dei permessi dei file online
Riferimenti
- ↑ "Cos'è chmod?" . IONOS Guida digitale . Estratto il 27 luglio 2022 .