GNU/Linux >> Linux Esercitazione >  >> Linux

Concetti di autorizzazione dei file Linux

Questo articolo esplora i concetti fondamentali dei permessi dei file Linux®. Si inizia con le basi e si passa ad argomenti più avanzati. Fornisce anche alcuni esempi pratici. Per ottenere un'introduzione ai permessi dei file e per imparare a visualizzare i permessi dei file, consulta Controllare i permessi dei file Linux con ls.

Accesso ai file

In un ambiente multiutente come Linux, è importante controllare quali utenti possono modificare o eliminare vari file sul sistema. Questo controllo non è solo una precauzione di sicurezza necessaria, ma previene incidenti catastrofici. Se un utente può influire solo su un numero minimo di file, ci sono meno possibilità che un comando digitato in modo errato o un errore di battitura in uno script distrugga un file essenziale o pubblichi informazioni riservate su un sito Web pubblico.

Prima di esplorare come per gestire l'accesso ai file, devi prima comprendere i concetti di proprietà dei file e autorizzazioni dei file. Si noti che la proprietà e le autorizzazioni si applicano anche alle directory perché le directory sono fondamentalmente un tipo speciale di file per quanto riguarda il filesystem. Anche se ci sono alcune differenze per le directory, i concetti di base sono gli stessi, quindi la maggior parte dei concetti o dei comandi di autorizzazione dei file discussi in questo articolo si applicano anche alle directory.

Nozioni di base sulla proprietà

Ogni file e directory su un file system Linux ha un proprietario. Il proprietario di un file può assegnare le autorizzazioni per il file. Se l'utente mom123 possiede il filelawndarts , hai bisogno dell'autorizzazione di mom123 per giocare con lawndarts . Potrebbe darti l'accesso, negarti del tutto l'accesso o semplicemente farti dare un'occhiata a lawndarts senza giocarci.

L'utente che possiede un file può impostare o modificare le sue autorizzazioni, determinando chi (incluso anche il proprietario) può leggere il file, eseguirlo, modificarlo o eliminarlo. È un privilegio semplice, ma ha un impatto di vasta portata.

Gruppo di file

Mentre ogni file ha un utente che lo possiede e può controllarne i permessi, ogni file appartiene anche a un gruppo . Un gruppo descrive un insieme di utenti che condividono autorizzazioni di file che potrebbero essere diverse dall'utente tipico. Un utente può appartenere a più di un gruppo, ma un file può appartenere a un solo gruppo.

La proprietà del gruppo è un modo pratico per consentire al proprietario di un file di assegnare un set di autorizzazioni a un file per persone che non conosce ("Puoi guardare, ma non puoi toccare.") e un altro set di autorizzazioni per le persone di cui si fida con il file ("Puoi guardare e toccare. Ma nessun altro può.").

Cambiare la proprietà

Un utente tipico può controllare le autorizzazioni di un file ma non può assegnare la proprietà a un altro utente. Per cambiare la proprietà, devi utilizzare il superutente, comunemente noto come root .

Se non hai effettuato l'accesso come root , dovresti usare sudo comando per utilizzare i privilegi di root per modificare il proprietario di un file.

Il file system è più flessibile per quanto riguarda la modifica del gruppo di file. Puoi comunque utilizzare i privilegi di root per modificare il gruppo, ma se il proprietario del file appartiene al gruppo di destinazione, il proprietario del file può anche passare un file al gruppo di destinazione.

Il comando chown

Il comando principale utilizzato per modificare il proprietario o il gruppo di un file è chown . La sintassi più comune usata con chown è mostrato nell'esempio seguente:

chown user:group file1 file2 file3

L'user nell'esempio precedente c'è l'utente di cui vuoi possedere il file e il group è il gruppo a cui vuoi far appartenere il file. I due punti separano i due elementi del comando. Dopo la coppia utente e gruppo, elenchi uno o più file interessati dalla modifica.

Nota :chown accetta anche un punto al posto dei due punti quando si separano i nomi utente e gruppo. L'uso del punto è obsoleto ma è ancora supportato e potresti vederlo in vecchi script o documentazione. Dovresti usare i due punti, se possibile.

Puoi omettere l'utente o il gruppo ma non entrambi. Se desideri modificare solo il proprietario di un file, puoi utilizzare la seguente sintassi:

chown user file1

Se hai un nome utente che include un punto e non desideri modificare il gruppo, includi i due punti dopo l'utente come mostrato nell'esempio seguente:

chown john.smith: file1

Se vuoi usare chown per modificare semplicemente il gruppo, assicurati di includere i due punti prima del nome del gruppo, anche se non specifichi un utente come mostrato nell'esempio seguente:

chown :group file1
Il comando chgrp

Se preferisci non usare i due punti quando vuoi solo cambiare il gruppo per un file, puoi usare chgrp come mostrato nell'esempio seguente:

chgrp group file1

Funziona proprio come chown :group file1 , ma è più facile da digitare e leggere.

L'opzione -R

Se vuoi cambiare il proprietario di una particolare directory e dei suoi file e sottodirectory, usa il -R opzione per apportare una modifica ricorsiva come mostrato nell'esempio seguente:

chown -R user:group directoryname

Il -R l'opzione funziona con chgrp anche. Con entrambi i comandi, la modifica si applica prima alla directory principale e quindi scorre tutto all'interno della directory (comprese le sottodirectory).

I collegamenti simbolici (collegamenti simbolici) richiedono un trattamento speciale per chown o chgrp operazioni. Un collegamento simbolico è un alias per un altro file, simile a un collegamento in Microsoft® Windows®. Invece di applicare la modifica al collegamento simbolico stesso, il file system applica la modifica alla destinazione del collegamento simbolico. Pertanto, se il collegamento simbolico link punta al file thefile.txt , considera il seguente comando:

chown user:group link

Quando il comando viene eseguito, il sistema cambia il proprietario e il gruppo per il file di destinazione thefile.txt . La proprietà del collegamento simbolico, link rimane invariato.

Se vuoi cambiare il proprietario o il gruppo di un collegamento simbolico, usa il -h flag per chown e chgrp , come mostrato nell'esempio seguente:

chown -h user:group link

Nozioni di base sulle autorizzazioni

Ci sono due parti delle autorizzazioni:cosa è consentito fare a qualcuno con un file e chi è qualcuno può essere.

Cosa è consentito

Esistono tre categorie di azioni utente per file e directory:lettura, scrittura ed esecuzione.

Leggi

L'autorizzazione di lettura per un file controlla chi può aprire o visualizzare il contenuto di un file.

L'autorizzazione di lettura per una directory controlla se è possibile visualizzare o meno un elenco dei file nella directory, tuttavia, l'autorizzazione di lettura non è sufficiente. È inoltre necessario eseguire l'autorizzazione affinché la directory possa visualizzare l'elenco dei file.

Scrivi

L'autorizzazione di scrittura per un file controlla se è possibile modificare o meno il contenuto del file.

L'autorizzazione di scrittura per una directory controlla se è possibile aggiungere, eliminare o rinominare i file in quella directory. Per esercitare le tue autorizzazioni di scrittura in una directory, devi anche eseguire l'autorizzazione per la directory.

Nota :Solo l'autorizzazione di scrittura sulla directory che lo racchiude influisce sulla possibilità o meno di rinominare o eliminare un file. Alcune operazioni, come rm , fai un controllo per impedirti di eliminare un file che non possiedi. Non c'è niente che possa fermare un altro programma che non ha un controllo simile integrato dall'eliminazione di un file su cui non puoi scrivere e di cui non possiedi.

Esegui

L'autorizzazione di esecuzione per un file consente di eseguire quel file dalla riga di comando. Per eseguire qualsiasi comando (chown , ls , rm , e così via), è necessario disporre dell'autorizzazione di esecuzione per il file che rappresenta quel comando. Se provi a eseguire un comando e ricevi un permission denied errore, non hai l'autorizzazione all'esecuzione.

Il permesso di esecuzione per una directory ti consente di eseguire un'operazione in quella directory o di cambiare la tua directory di lavoro (cd ) in quella directory.

Anche se hai il permesso di lettura per una directory, non puoi effettivamente eseguire ls comando in quella directory per vedere l'elenco dei file a meno che tu non disponga anche dell'autorizzazione di esecuzione. Altrimenti, quando provi a eseguire ls , vieni bloccato prima ancora che il sistema possa verificare l'autorizzazione di lettura. Per influenzare qualsiasi cosa all'interno di una directory, è necessario disporre dell'autorizzazione di esecuzione per la directory.

Chi può fare cosa

Ora che sai quali autorizzazioni sono disponibili, considera le categorie utilizzate per controllare chi è interessato da tali autorizzazioni. Le categorie sono utente, gruppo e altro.

La categoria utente

L'utente la categoria di autorizzazione si riferisce alle autorizzazioni che si applicano al proprietario del file. È l'unica categoria che ha come target un solo utente perché solo un utente può possedere il file.

La categoria del gruppo

Il gruppo la categoria si riferisce agli utenti che si trovano nello stesso gruppo del file. Se il file è nel gruppo devs e il file dispone dell'autorizzazione di scrittura per il suo gruppo, ciò significherebbe che gli utenti in devs il gruppo ha accesso in scrittura al file.

L'altra categoria

L'altro la categoria è un catch-all per tutti coloro che non rientrano nelle categorie utente o gruppo. Utilizza questa categoria per determinare se altri utenti possono leggere il file, modificarlo o eseguirlo come comando.

Priorità categoria

È importante notare che le categorie di autorizzazione vengono applicate nell'ordineutente, gruppo, altro. La prima categoria di autorizzazione che il sistema trova per un utente è l'unica che si applica. Se sei il proprietario del file, i tuoi permessi sono tutto ciò che è impostato per l'utente, quindi il sistema non si preoccuperà di controllare il gruppo o altri permessi per il file:ha già trovato quello che utilizzerà.

Questo concetto è importante perché se imposti un'autorizzazione per altri, tale autorizzazione non viene applicata al proprietario del file oa chiunque faccia parte del gruppo di quel file. Quegli utenti ottengono le autorizzazioni impostate rispettivamente nelle categorie utente o gruppo.

Se non imposti un'autorizzazione di lettura su un file per la categoria del gruppo, ma la imposti per l'utente e altre categorie, gli utenti nel gruppo del file non hanno accesso in lettura, ma tutti gli altri lo hanno.

Autorizzazioni più utenti

La combinazione di proprietà, categorie utente e autorizzazioni offre molte opzioni per il controllo dell'accesso a file e directory. I seguenti esempi mostrano alcune possibilità:

  • Se si rende un file di sola lettura per l'altra categoria ma si lascia che le categorie di utenti e gruppi vi scrivano, è possibile stabilire un gruppo di editor per un file consentendo comunque ad altri utenti di leggerlo. Basta aggiungere gli utenti privilegiati allo stesso gruppo del file.

  • Se imposti l'autorizzazione di lettura per la categoria utente e la rimuovi dal gruppo e da altre categorie, ti assicuri che solo il proprietario del file possa visualizzarne il contenuto.

  • Quando si imposta l'autorizzazione di esecuzione per un file, si consente che venga eseguito come comando. Se hai un comando che vuoi che solo utenti specifici possano eseguire, rimuovi l'autorizzazione di esecuzione sul file per l'altra categoria.

Le directory ricevono lo stesso trattamento. Molte directory dei log di sistema sono impostate per essere lette ed eseguite solo dalla categoria utente (spesso root ) ed escludere tali autorizzazioni da altre categorie per garantire che solo qualcuno con accesso da superutente possa visualizzare i log, indipendentemente dalle autorizzazioni impostate sui file stessi.

Perché esiste la radice

L'utente root esiste per fornire accesso e controllo. L'utente root può modificare la proprietà e le autorizzazioni di qualsiasi file o directory sul sistema. Quell'utente può anche interagire con file e directory come se disponesse delle autorizzazioni più permissive disponibili.

Anche se l'utente non può leggere un file ma l'altra categoria può, root può leggerlo. Allo stesso modo, se l'utente può leggere il file ma altri no, root può comunque leggere il file. Ma se nessuna categoria ha l'autorizzazione di lettura (non utente, non gruppo e non altro), anche root non può leggere il file.

Questo comportamento è particolarmente utile per i file che non vuoi modificare accidentalmente. Se le autorizzazioni di scrittura vengono rimosse da tutte le categorie di un file, nemmeno root può modificare il contenuto del file senza modificare tali autorizzazioni.

Conclusione

Con una conoscenza di base di come funzionano i permessi dei file in Linux, sei più preparato a proteggere i file da danni accidentali o dannosi. Puoi anche tenere d'occhio gli errori causati da autorizzazioni di file restrittive, come un'applicazione che non è in grado di scrivere nel proprio registro (causata dall'avere l'autorizzazione nowrite per l'utente che possiede il processo) o un server web che non è in grado di servire un file html (causato dal fatto che non dispone dell'autorizzazione di lettura o che la directory non ha l'autorizzazione di esecuzione).


Linux
  1. Linux:tutto è un file?

  2. Linux – Solo per l'esecuzione di autorizzazioni file?

  3. Elenca i membri di un gruppo in Linux

  4. Esempi di comandi "chmod" di base in Linux

  5. Come posso cancellare l'autorizzazione s su una directory in Linux?

Meno comandi in Linux

Scopri l'uso del comando chgrp (Change Group) in Linux

Comprendere i permessi dei file Linux

Un ragazzo di Windows in un mondo Linux:utenti e autorizzazioni di file

Montare l'autorizzazione CIFS negata su Linux - Risolto!

Comprendere le autorizzazioni di base dei file e la proprietà in Linux