Permessi dei file in Linux/Unix: come leggere, scrivere e modificare

⚡ Riepilogo intelligente

Nei sistemi Linux e Unix, i permessi sui file controllano chi può leggere, scrivere ed eseguire ciascun file, proteggendo un sistema multiutente attraverso due livelli: la proprietà, che assegna i permessi a un utente, un gruppo e altri, e i permessi di lettura, scrittura ed esecuzione.

  • 👥 Proprietà: Ogni file e ogni directory appartiene a un utente (proprietario), a un gruppo e ad altri, a volte chiamati "il mondo".
  • 🔑 Permessi: Ad ogni classe proprietaria si applicano tre autorizzazioni: lettura (r), scrittura (w) ed esecuzione (x).
  • 📃 Listing: Il comando ls -l mostra una stringa di permessi come -rw-rw-r– per proprietario, gruppo e tutti gli altri utenti.
  • 🔢 Modalità assoluta: Il comando chmod, impostato con un numero ottale di tre cifre, imposta i permessi per tutte e tre le classi contemporaneamente, ad esempio 764.
  • Modalità simbolica: Il comando chmod con i permessi u, g, o, a e +, -, = modifica la classe di un proprietario senza intaccare le altre.
  • 🧭 Comandi di proprietà: Il comando chown cambia proprietario e gruppo, mentre chgrp cambia solo il gruppo.
  • 🤖 Aiuto tramite intelligenza artificiale: Gli assistenti basati sull'intelligenza artificiale e GitHub Copilot possono generare e spiegare i comandi chmod e chown.

Permessi dei file in Linux e Unix: come leggere, scrivere e modificare

Permessi dei file in Linux Unix e i suoi gestori decidono chi può leggere, modificare o eseguire ciascun file, garantendo così la sicurezza di un sistema multiutente condiviso. Questa pagina illustra la proprietà dei file, i permessi di lettura, scrittura ed esecuzione e i comandi per modificarli.

Linux è un clone di Unix, il sistema operativo multiutente che può essere utilizzato simultaneamente da molti utenti. Linux può essere utilizzato anche su mainframe e server senza alcuna modifica. Tuttavia, ciò solleva problemi di sicurezza, poiché un utente non autorizzato o malintenzionato può corrompere, modificare o rimuovere dati cruciali. Per una sicurezza efficace, Linux suddivide l'autorizzazione in due livelli:

  • Proprietà
  • permesso

Il concetto di permessi e proprietà dei file è fondamentale in Linux. Qui spieghiamo i permessi e la proprietà in Linux e li analizziamo entrambi. Iniziamo con la proprietà.

Proprietà dei file Linux

A ogni file e directory del sistema Unix/Linux vengono assegnati tre tipi di proprietario, come indicato di seguito. Il diagramma seguente mostra come viene mappata la proprietà all'utente, al gruppo e agli altri.

Diagramma della proprietà dei file in Linux che mostra utente, gruppo e altre classi di permessi.

Utente

Un utente è il proprietario del file. Per impostazione predefinita, la persona che ha creato un file ne diventa il proprietario. Pertanto, un utente viene talvolta chiamato anche proprietario.

Gruppo

A gruppo di utenti Può contenere più utenti. Tutti gli utenti appartenenti a un gruppo hanno le stesse autorizzazioni di gruppo Linux sul file. Supponiamo di avere un progetto in cui diverse persone necessitano di accedere a un file. Invece di assegnare manualmente le autorizzazioni a ciascun utente, è possibile aggiungere tutti gli utenti a un gruppo e assegnare le autorizzazioni di gruppo al file, in modo che solo i membri di questo gruppo, e nessun altro, possa leggere o modificare i file.

Altro

Qualsiasi altro utente che abbia accesso a un file. Questa persona non ha creato il file né appartiene a un gruppo di utenti che potrebbe possederlo. In pratica, significa chiunque altro. Pertanto, quando si impostano le autorizzazioni per gli altri, si dice anche che si impostano le autorizzazioni per tutti.

Ora sorge la grande domanda: come fa Linux a distinguere tra questi tre tipi di utente in modo che un utente 'A' non possa influenzare un file che contiene informazioni o dati vitali di un altro utente 'B'? È come non volere un collega che lavora sul tuo Computer Linux per visualizzare le tue immagini. È qui che entrano in gioco le autorizzazioni, che definiscono il comportamento dell'utente.

Analizziamo il sistema di permessi su Linux.

Permessi dei file Linux

Ogni file e directory nel tuo sistema Unix/Linux ha le seguenti tre autorizzazioni definite per tutti e tre i proprietari di cui sopra.

  • Leggi: Questo permesso ti autorizza ad aprire e leggere un file. Il permesso di lettura su una directory ti consente di elencarne il contenuto.
  • Scrivi: Il permesso di scrittura ti autorizza a modificare il contenuto di un file. Il permesso di scrittura su una directory ti autorizza ad aggiungere, rimuovere e rinominare i file memorizzati nella directory. Considera uno scenario in cui hai il permesso di scrittura su un file, ma non sulla directory in cui è memorizzato. Sarai in grado di modificare il contenuto del file, ma non potrai rinominarlo, spostarlo o rimuoverlo dalla directory.
  • Esegui: In WindowsUn programma eseguibile ha solitamente l'estensione ".exe", che permette di avviarlo facilmente. Nei sistemi Unix/Linux, non è possibile eseguire un programma se non si dispone dei permessi di esecuzione. Se i permessi di esecuzione non sono impostati, è comunque possibile visualizzare o modificare il codice sorgente del programma (a condizione che siano impostati i permessi di lettura e scrittura), ma non eseguirlo.

Vediamo come funzionano i permessi dei file in Linux con alcuni esempi. Eseguendo il comando `ls -l` nel terminale si ottiene:

ls -l

Lo screenshot qui sotto mostra la stringa di autorizzazione in un lungo elenco.

L'output del comando ls -l del terminale mostra la stringa di permessi rw-rw-r-- per un file

Qui abbiamo evidenziato '-rw-rw-r–', e questo codice dall'aspetto insolito è quello che ci informa sui permessi Unix concessi al proprietario, al gruppo di utenti e a tutti gli altri utenti.

Qui, il primo trattino (-) indica che abbiamo selezionato un file. L'icona sottostante contrassegna un file normale.

Piccola icona che indica che l'elemento elencato è un file normale

Altrimenti, se si fosse trattato di un elenco, sarebbe stata visualizzata una 'd', come nell'elenco seguente.

Elenco del terminale che mostra una directory contrassegnata da una "d" iniziale nella stringa dei permessi

I personaggi sono abbastanza facili da ricordare.

  • r = permesso di lettura
  • w = permesso di scrittura
  • x = permesso di esecuzione
  • – = nessuna autorizzazione

Analizziamo la situazione in questo modo. La prima parte del codice è 'rw-'. Ciò suggerisce che il proprietario 'Home' può:

  • Leggi il file
  • Scrivere o modificare il file

Il proprietario non può eseguire il file, poiché il bit di esecuzione è impostato su '-'. L'icona sottostante mostra il bit di esecuzione azzerato e sostituito da un trattino.

Piccola icona che mostra il bit di autorizzazione all'esecuzione cancellato e sostituito da un trattino.

Per impostazione predefinita, molte distribuzioni Linux come Fedora, CentOS e Ubuntu Aggiungere un utente a un gruppo con lo stesso nome dell'utente. Quindi, l'utente 'tom' viene aggiunto al gruppo chiamato 'tom'.

La seconda parte è 'rw-'. È destinata al gruppo di utenti 'Home' e i membri del gruppo possono:

  • Leggi il file
  • Scrivere o modificare il file

La terza parte è per il mondo, ovvero per qualsiasi utente. Dice 'r–'. Ciò significa che l'utente può solo:

  • Leggi il file

La seguente suddivisione associa ciascuna parte della stringa di autorizzazione al proprietario, al gruppo e al mondo intero.

Analisi della stringa di permessi rw-rw-r-- suddivisa in sezioni relative a proprietario, gruppo e mondo.

Modificare i permessi di file/directory in Linux utilizzando il comando 'chmod'

Supponiamo che tu non voglia che un collega veda le tue immagini personali. Puoi ottenere questo risultato modificando i permessi di accesso ai file.

Possiamo usare il comando 'chmod' command, che sta per 'change mode'. Utilizzando questo comando, possiamo impostare i permessi (lettura, scrittura, esecuzione) su un file o una directory per il proprietario, il gruppo e tutti gli altri utenti.

Sintassi:

chmod permissions filename

Esistono due modi per utilizzare il comando:

  • Modalità assoluta
  • Modalità simbolica

Modalità assoluta (numerica) in Linux

In questa modalità, i permessi dei file non sono rappresentati da caratteri, bensì da un numero ottale di tre cifre. La tabella seguente riporta i numeri corrispondenti a tutti i tipi di permesso.

Numero Tipo di autorizzazione Simbolo
0 Nessun permesso -
1 Eseguire -X
2 Scrivi -w-
3 Esegui + Scrivi -wx
4 Leggi r-
5 Leggi + Esegui rx
6 Leggere e scrivere rw
7 Leggere + Scrivere + Eseguire rwx

Vediamo il comando chmod in azione, come mostrato nella finestra del terminale qui sotto.

Terminale con chmod 764 sul file sample per modificarne i permessi

Nella finestra del terminale qui sopra, abbiamo modificato i permessi del file 'sample' impostandoli su '764'. Il codice assoluto '764' indica quanto segue:

  • Il proprietario può leggere, scrivere ed eseguire.
  • Il gruppo di utenti può leggere e scrivere.
  • Il mondo sa solo leggere.

Questo viene mostrato come '-rwxrw-r–', come nel risultato seguente.

Elenco del terminale che mostra il file di esempio con la stringa di permessi -rwxrw-r-- dopo chmod 764

Ecco come modificare i permessi utente di un file in Linux assegnandogli un numero assoluto.

Modalità simbolica in Linux

In modalità assoluta, si modificano i permessi per tutti e tre i proprietari. In modalità simbolica, è possibile modificare i permessi di un proprietario specifico. Utilizza simboli matematici per modificare i permessi dei file Unix.

Operator Descrizione
+ Aggiunge un'autorizzazione a un file o una directory
- Rimuove l'autorizzazione
= Imposta l'autorizzazione e sovrascrive le autorizzazioni impostate in precedenza.

I vari proprietari sono rappresentati come segue.

Utente Denotazioni
u utente / proprietario
g di gruppo
o Altri
a contro tutti i

Non useremo permessi espressi in numeri come 755, ma in caratteri come rwx. Osserviamo l'esempio riportato di seguito.

Terminale che utilizza il comando simbolico chmod con u, g, o e +, -, = per modificare permessi specifici

Modifica della proprietà e del gruppo in Linux

Per modificare la proprietà di un file o di una directory, è possibile utilizzare il seguente comando:

chown user filename

Nel caso in cui si desideri modificare sia l'utente che il gruppo per un file o una directory, utilizzare il comando:

chown user:group filename

Vediamolo in azione, come mostrato di seguito.

Terminale che esegue il comando chown per cambiare il proprietario e il gruppo di un file

Nel caso in cui si desideri modificare solo il proprietario del gruppo, utilizzare il comando:

chgrp group_name filename

'chgrp' sta per "change group" (cambia gruppo). Lo screenshot qui sotto mostra il comando chgrp in uso.

Terminale che esegue il comando chgrp per modificare solo il proprietario del gruppo di un file

Consiglio

  • Il file /etc/group contiene tutti i gruppi definiti sul sistema.
  • È possibile utilizzare il comando "groups" per trovare tutti i gruppi di cui si è membri, come mostrato di seguito.

Terminale che esegue il comando groups per elencare i gruppi a cui appartiene l'utente

  • È possibile utilizzare il comando newgrp per lavorare come membro di un gruppo diverso dal gruppo predefinito, come mostrato di seguito.

Terminale che esegue il comando newgrp per passare a un gruppo diverso

  • Non è possibile che due gruppi siano proprietari dello stesso file.
  • In Linux non esistono gruppi annidati. Un gruppo non può essere un sottogruppo di un altro.
  • x — l'esecuzione di una directory significa avere il permesso di "entrare" in una directory e ottenere l'eventuale accesso alle sottodirectory.
  • Esistono altri permessi che è possibile impostare per file e directory, che verranno trattati in un tutorial avanzato successivo.

DOMANDE FREQUENTI

Aggiungi il permesso di esecuzione con chmod. La forma simbolica chmod +x script.sh concede l'esecuzione a tutti, mentre chmod u+x script.sh la concede solo al proprietario. Dopodiché, puoi eseguire lo script direttamente con ./script.sh dalla sua directory.

umask imposta i permessi predefiniti rimossi dai file e dalle directory appena creati. I file iniziano da 666 e le directory da 777, quindi il valore umask è subtracted. Un valore umask comune di 022 assegna i permessi 644 ai file e 755 alle directory. Esegui umask per visualizzare il valore corrente.

Si tratta di bit di autorizzazione speciali. setuid esegue un programma con i diritti del proprietario, setgid lo esegue con i diritti del gruppo o fa sì che i nuovi file ereditino il gruppo di una directory, e il bit sticky consente solo al proprietario di un file di eliminarlo all'interno di una directory condivisa come /tmp.

Sì. Solo l'utente root, o un utente che esegue sudo, può cambiare il proprietario di un file con chown. Un normale proprietario può cedere il proprio file a un gruppo di cui fa parte, ma per motivi di sicurezza la riassegnazione a un altro utente richiede i privilegi di root.

Questo errore significa che non hai i permessi per modificare il file. Per eseguire chmod devi essere il proprietario del file o l'utente root; per eseguire chown, in genere, è necessario essere root. Anteponi sudo al comando oppure passa al proprietario del file e riprova.

Utilizza l'opzione ricorsiva -R. Il comando `chmod -R 755 myfolder` applica i permessi alla cartella e a tutti i file e sottocartelle al suo interno, mentre `chown -R user:group myfolder` fa lo stesso per la proprietà. Usa -R con cautela, poiché influisce su ogni elemento presente nella cartella.

Gli assistenti basati sull'intelligenza artificiale possono tradurre una richiesta come "rendi questo script eseguibile solo per me" nel comando chmod corretto, spiegare cosa significa una modalità come 755 e avvisare di impostazioni rischiose come 777. Gli strumenti di sicurezza basati sull'apprendimento automatico segnalano anche i file i cui permessi sembrano pericolosamente aperti.

Sì. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub Può suggerire i comandi chmod, chown e chgrp a partire da un breve commento che descrive i permessi o il proprietario desiderati, e completarli automaticamente durante la digitazione. RevEsamina attentamente ogni suggerimento prima di eseguirlo, poiché le modifiche relative a permessi e proprietà influiscono sulla sicurezza.

Riassumi questo post con: