close

Chmod

Vai alla navigazione Vai alla ricerca

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
Nessun simbolo.svg
Nessun simbolo.svg
Nessun simbolo.svg
1 001
Nessun simbolo.svg
Nessun simbolo.svg
Simbolo OK.svg
Due 010
Nessun simbolo.svg
Simbolo OK.svg
Nessun simbolo.svg
3 011
Nessun simbolo.svg
Simbolo OK.svg
Simbolo OK.svg
4 100
Simbolo OK.svg
Nessun simbolo.svg
Nessun simbolo.svg
5 101
Simbolo OK.svg
Nessun simbolo.svg
Simbolo OK.svg
6 110
Simbolo OK.svg
Simbolo OK.svg
Nessun simbolo.svg
7 111
Simbolo OK.svg
Simbolo OK.svg
Simbolo OK.svg

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

Collegamenti esterni

Riferimenti

  1. "Cos'è chmod?" . IONOS Guida digitale . Estratto il 27 luglio 2022 .