Pagina 1 di 1

Gestione dei permessi e utenti su Linux

Inviato: 11/06/2024, 14:37
da FrancyDotNet
I Permessi nei Sistemi Unix/Linux: Una Guida Completa

Nel sistema Unix/Linux, la gestione dei permessi di file e directory è cruciale per mantenere la sicurezza e l'efficienza del sistema. I permessi determinano chi può accedere e modificare file e directory e in che modo. Questo articolo offre una panoramica dei permessi in Unix/Linux, esplorando i concetti fondamentali, la loro struttura e i metodi per modificarli. Inoltre, discuterà i permessi speciali che offrono ulteriore controllo su file e directory.

1. Concetti Fondamentali dei Permessi

In Unix e Linux, ogni file e directory è associato a tre tipi principali di permessi: lettura (r), scrittura (w) e esecuzione (x). Questi permessi definiscono le operazioni che possono essere effettuate su un file o una directory e sono suddivisi tra tre categorie di utenti: il proprietario, il gruppo e tutti gli altri utenti.
  • Lettura (r): Consente di visualizzare il contenuto di un file o di elencare i contenuti di una directory. Senza questo permesso, un utente non può vedere cosa c'è all'interno di una directory o leggere il contenuto di un file.
  • Scrittura (w): Permette di modificare il contenuto di un file o di aggiungere/rimuovere file in una directory. Se un utente non ha il permesso di scrittura su un file, non potrà modificarne il contenuto, e se non ha il permesso su una directory, non potrà aggiungere o eliminare file al suo interno.
  • Esecuzione (x): Consente di eseguire un file come programma o accedere a una directory. Senza questo permesso, anche se un file è leggibile, non sarà possibile eseguirlo, e senza il permesso su una directory, non si potrà navigare all'interno di essa.
Esempio: Supponiamo di avere un file chiamato script.sh e desideriamo verificare i suoi permessi. Utilizzando il comando:

Codice: Seleziona tutto

ls -l script.sh
Si potrebbe ottenere una output simile a:

Codice: Seleziona tutto

-rwxr-xr--
Questo indica che il file script.sh ha i permessi di lettura, scrittura ed esecuzione per il proprietario, lettura ed esecuzione per il gruppo, e solo lettura per gli altri utenti.

2. Struttura dei Permessi

I permessi sono visualizzati attraverso il comando

Codice: Seleziona tutto

ls -l
, che fornisce una rappresentazione dettagliata dei permessi per ciascun file e directory. La struttura dei permessi è espressa in una stringa di dieci caratteri.
  • Il primo carattere indica il tipo di file: per un file normale, per una directory e altri caratteri per file speciali come i link simbolici.
  • I successivi tre caratteri rappresentano i permessi del proprietario del file: lettura, scrittura e esecuzione, ad esempio

    Codice: Seleziona tutto

    rwx
    significa che il proprietario può leggere, scrivere ed eseguire il file.
  • I tre caratteri successivi mostrano i permessi per il gruppo associato al file. Se il gruppo ha solo permessi di lettura ed esecuzione, appariranno come

    Codice: Seleziona tutto

    r-x
    .
  • Gli ultimi tre caratteri mostrano i permessi per gli altri utenti. Ad esempio,

    Codice: Seleziona tutto

    r--
    significa che solo il permesso di lettura è concesso agli utenti esterni.
Esempio: Per visualizzare i permessi di una directory chiamata data, si utilizza:

Codice: Seleziona tutto

ls -ld data
Supponiamo che l'output sia:

Codice: Seleziona tutto

drwxr-xr-x
Questo indica che data è una directory (), con permessi di lettura, scrittura ed esecuzione per il proprietario, e permessi di lettura ed esecuzione per il gruppo e per gli altri utenti.

3. Modifica dei Permessi

La modifica dei permessi avviene attraverso il comando

Codice: Seleziona tutto

chmod
, che può essere utilizzato in due modalità: simbolica e numerica.

Modo Simbolico

Il modo simbolico utilizza lettere per rappresentare i permessi e gli utenti:
  • u per il proprietario (user)
  • g per il gruppo (group)
  • o per gli altri (others)
  • a per tutti (all)
I permessi possono essere aggiunti (), rimossi () o impostati (). Per esempio, per aggiungere il permesso di esecuzione al proprietario si utilizza

Codice: Seleziona tutto

chmod u+x file.txt
, mentre per rimuovere il permesso di scrittura agli altri si usa

Codice: Seleziona tutto

chmod o-w file.txt
.

Esempio: Se desideriamo concedere al gruppo il permesso di scrittura su un file chiamato documento.txt, utilizziamo:

Codice: Seleziona tutto

chmod g+w documento.txt
Per rimuovere il permesso di scrittura agli altri utenti:

Codice: Seleziona tutto

chmod o-w documento.txt
Modo Numerico

Il modo numerico utilizza una combinazione di numeri per rappresentare i permessi. Ogni permesso ha un valore numerico (lettura=4, scrittura=2, esecuzione=1). La somma di questi valori per il proprietario, il gruppo e gli altri utenti crea un numero a tre cifre. Ad esempio,

Codice: Seleziona tutto

chmod 754 file.txt
imposta i permessi come

Codice: Seleziona tutto

rwxr-xr--
.

Esempio: Per impostare i permessi a

Codice: Seleziona tutto

rwxr--r--
su un file chiamato file.txt, utilizziamo:

Codice: Seleziona tutto

chmod 744 file.txt
4. Permessi Speciali

I permessi speciali in Unix/Linux offrono un ulteriore livello di controllo sui file e le directory:
  • Setuid (s): Quando impostato su un file eseguibile, il file viene eseguito con i permessi del proprietario del file, non con i permessi dell'utente che lo esegue. Questo è utile per programmi che necessitano di privilegi elevati.
  • Setgid (s): Quando impostato su una directory, i file creati all'interno della directory avranno il gruppo della directory come gruppo del file. Se impostato su un file eseguibile, funziona in modo simile al setuid.
  • Sticky bit (t): Quando impostato su una directory, solo il proprietario dei file e l'utente root possono eliminare o rinominare i file all'interno della directory. Questo è spesso usato su directory temporanee come

    Codice: Seleziona tutto

    /tmp
    .
Esempio: Per impostare il bit setuid su un file eseguibile chiamato program, utilizziamo:

Codice: Seleziona tutto

chmod u+s program
Per impostare il bit sticky su una directory chiamata uploads, utilizziamo:

Codice: Seleziona tutto

chmod +t uploads
5. Conclusioni

La gestione dei permessi in Unix e Linux è una componente cruciale dell'amministrazione del sistema. Comprendere come leggere e modificare i permessi aiuta a proteggere i dati e garantire che solo gli utenti autorizzati possano accedere o modificare file e directory. Utilizzare i permessi speciali in modo appropriato può offrire ulteriore controllo e sicurezza. Con una solida conoscenza dei permessi, è possibile mantenere un ambiente di lavoro sicuro e ben organizzato.

Esempio di sintesi: Dopo aver appreso i permessi e i comandi, supponiamo di voler rendere un file chiamato script.sh leggibile ed eseguibile solo dal proprietario e dal gruppo, ma non dagli altri utenti. Utilizzeremmo:

Codice: Seleziona tutto

chmod 750 script.sh
In questo modo, il file sarà accessibile per la lettura e l'esecuzione al proprietario e al gruppo, mentre gli altri utenti non avranno alcun accesso.