GNU/Linux: capire proprietari e permessi dei file

Questa è una pillola di ripasso, nata dalla domanda di Marco (grazie Marchino): come funzionano i permessi sui file in Linux. Il concetto è semplice, ma va capito bene perché lo userai di continuo.

Le tre zone: UGO

In un sistema Linux gli utenti sono divisi, rispetto a ogni singolo file, in tre zone, dalla più vicina al file alla più lontana:

  • user: l’utente proprietario del file;
  • group: il gruppo proprietario del file;
  • others: tutti gli altri, cioè chiunque non sia il proprietario né membro del gruppo proprietario.

Per ricordartele c’è un acronimo facilissimo, come il famoso ragioniere: u, g, o, cioè UGO.

I tre permessi: rwx

A ciascuna delle tre zone si può assegnare un insieme di tre permessi:

  • r (read): lettura;
  • w (write): scrittura;
  • x (execute): esecuzione.

Anche qui un acronimo da imparare a memoria: rwx. UGO e rwx sono le uniche due cose da mandare a memoria quando si parla di permessi.

Leggere i permessi con ls -L

Creiamo un file di prova:

echo "prova permessi" > permessi.txt
ls -l permessi.txt

L’output è qualcosa del genere:

-rw-r--r-- 1 root root 15 ott 18 20:28 permessi.txt

Quello che ci interessa è la prima colonna, la sequenza di trattini e lettere, e le due colonne successive, che dicono utente e gruppo proprietari del file. In questo esempio ho creato il file da root, quindi utente root e gruppo root. Chiunque non sia root e non sia nel gruppo root rientra in others.

Il primo carattere della sequenza indica il tipo: un trattino è un file normale, una d è una directory (ce ne sono altri, ma per ora basta così). Seguono nove caratteri, in tre triplette:

  • i primi tre sono i permessi dello user;
  • i secondi tre sono i permessi del group;
  • gli ultimi tre sono i permessi di others.

In ogni tripletta le lettere stanno sempre nella stessa posizione, rwx. Se al posto di una lettera c’è un trattino, quel permesso manca. Quindi rw-r–r– significa: il proprietario può leggere e scrivere, il gruppo può solo leggere, tutti gli altri possono solo leggere.

Cosa significano davvero

Per i file:

  • read: leggere il contenuto del file;
  • write: modificare il contenuto o cancellare il file;
  • execute: mandare il file in esecuzione (un eseguibile, uno script).

Per le cartelle il significato cambia un po’:

  • read: elencare i file contenuti nella cartella;
  • write: creare, modificare e rimuovere file dentro la cartella;
  • execute: entrare nella cartella e attraversarla per accedere alle sue sottocartelle e ai file che contengono. È il permesso meno intuitivo, ma una volta capito è facile.

Conclusione

Riassumendo: la stringa che apre l’output di ls -l raggruppa i permessi in tre triplette, user, group e others, e ogni lettera presente indica un permesso attivo. Nell’articolo successivo vediamo i comandi per modificare permessi, proprietario e gruppo.

Link e risorse

Sostieni il canale

PER SOSTENERE IL CANALE BASTANO UN LIKE E UN’ISCRIZIONE!

questi link sono affiliati Amazon, acquistando i libri che ti consiglio sostieni il canale!