CodeGym /Corsi /Docker SELF /Basi dei permessi di accesso: chmod, chown, umask

Basi dei permessi di accesso: chmod, chown, umask

Docker SELF
Livello 2 , Lezione 0
Disponibile

Basi dei permessi di accesso: chmod, chown, umask

1. Concetto di permessi di accesso

Quando lavori con file o directory in Linux, emerge la necessità di gestire l'accesso a essi. Immagina di aver lasciato i tuoi calzini in bella vista, e ora tutti in casa possono usarli! I permessi di accesso in Linux permettono di prevenire "l'uso non autorizzato dei calzini" (o qualcosa di più importante, come i tuoi script). Iniziamo a capire come funziona.

Ogni file (e directory) in Linux ha tre insiemi di permessi di accesso che determinano chi può leggerli, scriverli o eseguirli:

  1. Lettura (r): Permette di visualizzare il contenuto del file o l'elenco dei file nella directory.
  2. Scrittura (w): Consente di modificare il contenuto del file o aggiungere/eliminare file dalla directory.
  3. Esecuzione (x): Consente di eseguire il file come programma (o accedere alla directory).

Modello a tre livelli

Ogni permesso si applica a tre gruppi di utenti:

  • Proprietario (owner): Chi ha creato il file.
  • Gruppo (group): Gli utenti raggruppati in un gruppo a cui è assegnato il file.
  • Altri (others): Tutti gli altri utenti del sistema.

Esempio di permessi di accesso per un file:

-rwxr-xr--

Spieghiamolo:

  • Il primo simbolo - indica che è un file (per una directory sarà d).
  • I primi tre simboli rwx — permessi per il proprietario (lettura, scrittura, esecuzione).
  • I tre simboli successivi r-x — permessi per il gruppo (lettura, esecuzione).
  • Gli ultimi tre simboli r-- — permessi per gli altri (solo lettura).

2. Comando chmod: gestione dei permessi di accesso

Formato simbolico

Il comando chmod modifica i permessi di accesso per file e directory. Il formato simbolico del comando è il seguente:

chmod [chi][azione][permessi] nome_file
  • Chi: u (proprietario), g (gruppo), o (altri), a (tutti).
  • Azione: + (aggiungi permessi), - (rimuovi permessi), = (imposta permessi esatti).
  • Permessi: r (lettura), w (scrittura), x (esecuzione).

Esempi:


# Aggiungiamo i permessi di esecuzione per tutti
chmod a+x script.sh

# Aggiungiamo i permessi di scrittura solo per il gruppo
chmod g+w file.txt

# Togliamo i permessi di lettura agli altri
chmod o-r document.txt

Formato ottale

Il formato ottale (o numerico) è più compatto, ma richiede la comprensione del "magico mondo dei numeri". In questo formato ogni combinazione di permessi è rappresentata da un numero:

  • r = 4
  • w = 2
  • x = 1

I permessi si sommano:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

Formato del comando:

chmod [numero][numero][numero] nome_file

Esempio:


# Impostiamo i permessi rwx per il proprietario, r-x per il gruppo, r-- per gli altri
chmod 754 file.sh

3. Cambiare il proprietario del file: comando chown

Se hai bisogno di trasferire un file a un altro utente (o gruppo), il comando chown ti può aiutare.

Formato:

chown [utente]:[gruppo] nome_file

Esempi:


# Trasferire la proprietà all'utente user1
chown user1 myfile.txt

# Cambiare il proprietario e il gruppo
chown user1:group1 myfile.txt

# Cambiare solo il gruppo
chown :group2 myfile.txt

4. Maschera predefinita: umask

Quando crei un file, i permessi di accesso per esso vengono definiti dal sistema. Ad esempio, i permessi potrebbero essere rw-r--r--. Ma da dove provengono? Risposta: dal comando umask.

Che cos'è umask?

umask definisce quali permessi non saranno impostati per i nuovi file.

Ad esempio:

  • Set di permessi base per un file: 666 (nessuna esecuzione).
  • Maschera: 022.
  • Permessi finali: 644 (666 - 022).

Comandi:

  • Mostra la maschera corrente: umask
  • Imposta una nuova maschera: umask 0022

Esempio:


# Imposta la maschera affinché i nuovi file abbiano rw-rw-r--
umask 0002

5. Permessi di amministratore e sudo

Che cos'è sudo?

sudo (abbreviazione di "superuser do") è un comando in sistemi Linux e Unix-like che consente all'utente di eseguire comandi come se fosse il superutente (root) o un altro utente con privilegi elevati.

Il sistema sudo garantisce l'accesso temporaneo alle funzionalità amministrative senza necessità di lavorare costantemente con l'account root, riducendo così i rischi di modifiche accidentali o malevole al sistema.

Importante!

Semplificando molto, sudo viene scritto prima del comando che deve essere eseguito con i permessi di amministratore.

Come funziona sudo?

Esecuzione del comando:

Quando scrivi un comando con sudo, il sistema verifica se il tuo utente ha il diritto di eseguire comandi con privilegi elevati.

Ad esempio:

sudo apt update

Autenticazione:

La prima volta che usi sudo nella sessione corrente, il sistema chiederà di inserire la password dell'utente corrente (non di root).

Dopo aver inserito correttamente la password, il sistema salva l'autenticazione per un breve periodo di tempo (solitamente 5-15 minuti), per evitare di richiedere la password per ogni comando.

Esecuzione del comando:

Se l'utente ha i diritti specificati nella configurazione di sudo, il comando verrà eseguito con i permessi del superutente.

Funzioni e comandi principali di sudo

Esecuzione di un comando con privilegi:

sudo <comando>

Ad esempio:

sudo apt install nginx

Esecuzione di un comando come un altro utente: Usa il flag -u:

sudo -u <nome_utente> <comando>

Ad esempio:

sudo -u user1 ls /home/user1

Accesso a un terminale amministrativo: Avvia una shell con permessi root:

sudo -i

oppure:

sudo su

Visualizzare la configurazione di sudo:

sudo -l

Mostra i comandi che l'utente corrente ha il diritto di eseguire.

Modifica della configurazione di sudo:

sudo visudo

Questo comando apre il file di configurazione /etc/sudoers per una modifica sicura.

6. Esempi

Proviamo ad applicare le nostre conoscenze in pratica.

Compito 1: Gestione dei permessi con chmod

  1. Crea un file:

    touch myfile.txt
    
  2. Imposta per il proprietario i permessi di lettura, scrittura ed esecuzione:

    chmod u+rwx myfile.txt
    
  3. Aggiungi i permessi solo di lettura per gli altri:

    chmod o+r myfile.txt
    
  4. Controlla i permessi:

    ls -l myfile.txt
    

Compito 2: Cambio del proprietario con chown

  1. Crea un file:

    touch ownedfile.txt
    
  2. Cambia il proprietario all'utente user1 (sono necessari i privilegi da admin):

    sudo chown user1 ownedfile.txt
    
  3. Controlla i cambiamenti:

    ls -l ownedfile.txt
    

Compito 3: Esperimenti con umask

  1. Controlla la maschera attuale:

    umask
    
  2. Imposta la maschera a 027:

    umask 027
    
  3. Crea un nuovo file:

    touch newfile.txt
    
  4. Controlla i permessi del file creato:

    ls -l newfile.txt
    

7. Errori tipici e particolarità

  1. Dimenticato sudo durante il cambio del proprietario: Solo l'amministratore può cambiare il proprietario di un file. Se ricevi l'errore "Operation not permitted", prova ad aggiungere sudo.
  2. Ordine errato nel comando chmod: Hai cambiato i permessi sull'oggetto sbagliato. Assicurati di aver selezionato il file o la directory corretta.
  3. umask influisce solo sui nuovi file: Se provi a cambiare i permessi di file già esistenti usando umask, non funzionerà. Usa chmod.

Sapevi che i permessi di accesso in Linux sono così flessibili che puoi creare un file che "vede" solo una persona in tutto l'universo? Come si suol dire, con grandi permessi arriva una grande responsabilità! Ora, armato di chmod, chown e umask, sei pronto a rendere i tuoi sistemi Linux non solo comodi, ma anche sicuri.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION