Cosa sono i permessi dei file in Linux e come posso assicurarmi che i miei siano sicuri?

0
166

In Linux, i permessi dei file determinano i livelli di privilegio per i proprietari dei file e per tutti altro. È importante assicurarsi che tutti i file rivolti al Web abbiano le autorizzazioni impostate correttamente, in modo che un processo compromesso non possa scrivere in posizioni in cui non dovrebbe.

Cosa sono i permessi dei file?

I permessi dei file tengono traccia dei permessi per tre diversi gruppi. Ogni gruppo è rappresentato da tre bit:

  • r: Il “Read” l'autorizzazione consente a un processo di leggere il contenuto di quel file in memoria.
  • w: La funzione “Scrivi” l'autorizzazione fornisce a un processo l'accesso per sovrascrivere la posizione fisica sul disco in cui è archiviato il file.
  • x: Il comando “Execute” il permesso è per i programmi e consente l'esecuzione di quel file.

Nel terminale, i permessi sono visualizzati in questo modo:

Il primo “d” indica se il file è una directory. Il primo gruppo di tre è per il proprietario del file. In questo caso, il proprietario del file dispone dell'accesso completo in lettura, scrittura ed esecuzione. Il prossimo gruppo di tre è “proprietari del gruppo,” che denota i diritti di accesso per il gruppo a cui appartiene il file, in questo caso di sola lettura. Il gruppo successivo è quello di tutti gli altri, che è di sola lettura.

In genere, i file con “tutti” aperti le autorizzazioni non sono molto sicure. Dovrai assicurarti che l'ultimo gruppo sia impostato su sola lettura o nessun accesso per la maggior parte dei file.

Sotto il cofano, questi sono memorizzati in binario, con ogni permesso che rappresenta un bit. Ad esempio, rw- è 110 in binario, che è 6 in decimale. Quindi, la stringa di autorizzazione:

rwxrw-r– Annuncio

…potrebbe essere memorizzato come “764.” I permessi dei file verranno spesso indicati in questo modo; “777” indica l'accesso completo, “700” è privato, “644” è di sola lettura. Tecnicamente, questo è noto come ottale, non decimale, perché ci sono otto valori possibili per ogni cifra.

Per le directory, i permessi usano gli stessi caratteri, ma sono leggermente diversi:

  • r: Autorizzazione elenco. Consente l'apertura della directory e consente l'utilizzo di ls. Richiede l'impostazione dell'attributo x.
  • w: permesso di scrittura. Consente la creazione di nuovi file, l'eliminazione di file e la ridenominazione dei file. Non impedisce la modifica del contenuto dei file abilitati per la scrittura esistenti all'interno della directory.
  • x:Intraprendebilità. Consente l'uso di cd. Questo è rispettato a livello di sistema e impedirà l'apertura della cartella in un esploratore di file della GUI.

Su alcuni sistemi, in particolare macOS, potrebbe essere presente un messaggio “@” dopo la stringa di autorizzazione del file. Ciò significa che il file ha attributi estesi, che puoi controllare con ls -l@. Ad esempio, l'attributo com.apple.quarantine viene assegnato agli eseguibili che non sono ancora stati aperti, in modo che Gatekeeper possa impedirti di fare doppio clic su di esso, costringendoti a fare clic con il pulsante destro del mouse > open e poi ti chiede inutilmente se sei davvero sicuro di volerlo aprire.

Che cosa sono i proprietari di file e i gruppi?

Il proprietario del file è solo un particolare utente, ma gli utenti nei sistemi Unix non funzionano allo stesso modo di Windows. Unix può avere utenti diversi per singoli processi come mysql e nginx. Questo può rendere le autorizzazioni molto dettagliate; ad esempio, un'istanza di MySQL in esecuzione sotto l'utente mysql può accedere al proprio database, ma l'utente nginx non può.

I gruppi di utenti funzionano in modo simile ma supportano la presenza di più utenti con le stesse autorizzazioni. Gli utenti possono essere aggiunti e rimossi dal gruppo e sono facoltativi per l'impostazione dei permessi dei file.

Come controllare i permessi dei file delle directory

Puoi visualizzare i permessi di file e directory eseguendo ls -l nel tuo terminale. I permessi dei file sono visualizzati all'estrema destra:

Annuncio

Se vuoi visualizzare i permessi del file per un file o una directory specifici, devi reindirizzare l'output ls a grep:

ls -la | grep filename

Nota che la cartella corrente e la cartella principale hanno i loro permessi visualizzati come . e .. quando si utilizza il flag -a. Tuttavia, anche questo mostra solo due livelli di autorizzazioni. Per visualizzare le autorizzazioni per ogni cartella principale, devi utilizzare il comando namei:

namei -l `pwd`

Questo comando potrebbe non essere installato su tutte le distribuzioni Linux. Su macOS, dovrai installarlo da brew.

Per cercare singoli file all'interno di quelle cartelle che potrebbero avere autorizzazioni errate, puoi utilizzare il comando find con il flag -perm:

find ~ -type f -perm 777

Questo cerca in modo ricorsivo e potrebbe richiedere del tempo se lo stai eseguendo nella directory principale.

Come modificare i permessi e la proprietà dei file

Modificare le autorizzazioni dei file è semplice con il comando chmod:

chmod 700 nome file

Puoi anche aggiungere autorizzazioni senza specificare una stringa di autorizzazione completa. Questa è una scorciatoia, ma può far risparmiare tempo. Ad esempio, se non è possibile aprire un file di script, è possibile aggiungere l'autorizzazione per l'esecuzione da parte del proprietario con:

chmod u+x nome file Annuncio

Questo aggiunge l'autorizzazione di esecuzione (x) per l'attuale proprietario (u, per “utente”).

La modifica dei proprietari funziona in modo simile con il comando chown:

chown owner:nome file del gruppo

Il &#8220 ;:gruppo” è facoltativo. Sia chmod che chown possono essere eseguiti in modo ricorsivo su directory, per modificare i permessi dei file per tutto ciò che si trova all'interno di tali directory. Per fare ciò, usa il flag -R maiuscolo:

chmod 700 -R directory

Puoi anche utilizzare chmod come opzione -exec per find, che ti consente di modificare i permessi dei file in tutto il sistema. Ad esempio, questo comando troverà i file con permessi di scrittura aperti e li imposterà in sola lettura:

find/-type f -perm 777 -print -exec chmod 744 {} ;