GNU/Linux >> Linux Esercitazione >  >> Linux

Permessi dei file Linux:tutto ciò che devi sapere

Linux è un sistema operativo multiutente che consente di configurare più account utente e gruppi di utenti per accedere allo stesso computer. Come puoi immaginare, questo solleva alcuni problemi di sicurezza. Fortunatamente, Linux viene fornito con potenti impostazioni e opzioni di autorizzazione dei file che impediscono agli utenti di accedere alle informazioni riservate e sensibili degli altri.

Potrai definire diversi gruppi di utenti e assegnare loro autorizzazioni file aggiuntive. Senza le autorizzazioni appropriate, un utente o un gruppo di utenti non sarà in grado di accedere ai tuoi file e directory, il che mantiene tutte le tue informazioni al sicuro.

Per questa lettura, abbiamo preparato una guida dettagliata sui permessi dei file Linux. Alla fine, dovresti avere una solida comprensione di cosa significa ogni autorizzazione di file e come proteggere i tuoi file e directory utilizzando la funzionalità.

Comprendere la proprietà e le autorizzazioni dei file

Per comprendere la proprietà e le autorizzazioni dei file Linux, devi prima comprendere "utenti" e "gruppi".

Utenti vs. Gruppo

Linux ti consente di creare più "utenti". Questo aiuta a separare i file e le directory per le varie persone che usano il computer. Ogni utente ha alcune proprietà specifiche, tra cui un ID utente e una directory principale.

Per visualizzare i diversi utenti sul tuo sistema, puoi inserire il seguente comando nel tuo terminale:

$ cat /etc/passwd

Per gestire tutti gli utenti, Linux introduce il concetto di "gruppi". Puoi creare uno o due gruppi e quindi aggiungere tutti gli utenti del sistema a uno o più di questi gruppi, il che ti consente di gestirli più facilmente.

Puoi anche creare un gruppo ma non compilarlo con nessun utente, nel qual caso sarà un gruppo con zero utenti.

Ma, d'altra parte, dopo aver creato un utente, questo viene automaticamente associato al "gruppo predefinito". Ovviamente puoi aggiungere l'utente a un gruppo diverso. In quanto tale, un utente può far parte di più gruppi.

Per visualizzare tutti i gruppi sul tuo sistema, inserisci il seguente comando nel tuo terminale:

$ cat /etc/group

Nota:Dopo aver eseguito i due comandi precedenti, noterai che il tuo sistema ha già tonnellate di utenti e gruppi che non hai creato. Tutti questi sono utenti e gruppi di sistema. Questi sono necessari per eseguire tutti i processi in background in modo sicuro.

Proprietà dei file e concessione delle autorizzazioni

Ogni volta che un utente crea un nuovo file o directory, è "di proprietà" dell'utente e del gruppo predefinito dell'utente. Inoltre, ogni file o directory può essere di proprietà di un solo utente e di un singolo gruppo.

Quindi, come consenti ad altri utenti di accedere ai tuoi file e directory? Qui è dove devi impostare i permessi dei file. Tutti i file e le directory hanno tre tipi di classi di autorizzazione. Questi sono i seguenti:

  • Proprietario:in questa classe, le autorizzazioni riguarderanno solo il proprietario del file.
  • Gruppo:in questa classe, l'autorizzazione influirà sul gruppo che possiede il file. Tuttavia, se il proprietario del file è in questo gruppo, utilizza l'autorizzazione "utente" anziché l'autorizzazione "gruppo".
  • Altro:in questa classe, le autorizzazioni riguarderanno tutti gli altri utenti che si trovano nel sistema.

Puoi assegnare autorizzazioni diverse a ciascuna di queste classi per controllare quale utente e gruppo ottiene quale livello di accesso ai tuoi file e directory. Detto questo, diamo un'occhiata alle diverse autorizzazioni che puoi assegnare.

Con Linux, puoi accedere a tre tipi di autorizzazioni per i file. Questi sono i seguenti:

  • Lettura:un file che dispone dell'autorizzazione di lettura consente agli utenti di visualizzarne il contenuto. Considerando che, se una directory ha il permesso di lettura, gli utenti possono vedere solo il nome dei file e delle altre directory archiviate al suo interno.
  • Scrittura:un file che dispone dell'autorizzazione di scrittura consente agli utenti di modificare il contenuto di quel file e persino di eliminarlo. Considerando che, per le directory che dispongono dell'autorizzazione di scrittura, gli utenti possono modificare i file e le directory in essa memorizzati, nonché creare nuovi file e directory.

Nota:l'autorizzazione di scrittura non ha alcun effetto su una directory a meno che non sia abilitata anche l'autorizzazione di esecuzione. Questo perché il sistema può recuperare i permessi di una cartella solo quando è impostato il bit di esecuzione.

  • Esegui:un file necessita solo dell'autorizzazione di scrittura per essere eseguito da un utente. Tuttavia, anche l'autorizzazione di lettura deve essere abilitata, altrimenti non influirà. Nel caso di una directory con il permesso di esecuzione, l'utente potrà entrare nella directory (usando il comando cd) e visualizzare i metadati dei file e delle directory in essa contenuti.

A questo punto, dovresti avere una comprensione teorica di base del ruolo degli utenti Linux, dei gruppi e dei concetti di proprietà e autorizzazioni dei file. Quindi, con questo fuori mano, vediamo come possiamo usarli praticamente.

Come visualizzare i permessi dei file?

Potresti già sapere che usando il comando ls ottieni un elenco di tutti i file in una directory specifica. Tuttavia, non fornisce alcun dettaglio sulla sicurezza dei file. Per queste informazioni, dovrai usare il comando ls -l.

Ciò ti consentirà di eseguire il comando ls con l'opzione "lista lunga" che ti fornirà informazioni dettagliate su ciascuno dei file. Per fare ciò, puoi utilizzare il seguente comando:

$ ls -l <path to directory>

Questo ti darà informazioni sui permessi dei file della directory data. In alternativa, se desideri ottenere i dettagli dei permessi dei file della tua directory corrente, puoi inserire questo comando:

$ ls -l

Per questa lettura, useremo il comando ls -l nella nostra home directory.

Vediamo cosa significano queste informazioni.

  1. La prima cosa da notare è che ogni riga separata contiene informazioni sui vari file e directory che si trovano nella directory da cui hai eseguito il comando.
  2. Successivamente, il primo carattere in ciascuna riga inizierà con un "-" che indica che è un file, la lettera "d", che significa che è una directory, o "l", che suggerisce che si tratta di un collegamento. Nell'immagine sopra, sappiamo che Desktop è una directory perché la riga inizia con "d". Tuttavia, ciao mondo è un file perché inizia con "-".
  3. Dopodiché, otterremo altri nove caratteri che presenteranno una particolare combinazione delle tre lettere "r,w,x" e del simbolo "-". Viene utilizzato per indicare l'autorizzazione del file o della directory corrispondente. In una sezione successiva, discuteremo di come leggere questi nove caratteri per comprendere i permessi dei file.
  4. Dopo questo, ci saranno altre due colonne. Ciò identificherà il proprietario e il gruppo del file o della directory. Nell'esempio sopra, come puoi vedere, tutti i file e le directory appartengono al proprietario "root" e al gruppo "root" predefinito.
  5. La colonna successiva ti indicherà la dimensione del file o della directory in byte.
  6. Quindi, abbiamo altre due colonne che mostreranno la data e l'ora dell'ultima modifica del file.
  7. E infine, l'ultima colonna mostrerà il nome del file o della directory.

Comprendere le autorizzazioni di sicurezza

Subito dopo il primo carattere di ogni riga, i successivi nove caratteri vengono utilizzati per mostrare i permessi del file o della directory corrispondente.

Consideriamo la directory Desktop dall'immagine sopra. Ha i permessi rwxr-xr-x. Ma cosa significa?

Bene, dovrai prima dividere i nove caratteri in tre segmenti contenenti tre caratteri ciascuno. Il primo segmento indica l'autorizzazione per l'Utente, il secondo mostra l'autorizzazione per il gruppo e il terzo mostra l'autorizzazione per l'altro.

In quanto tale, l'Utente dispone dell'autorizzazione rwx. Il gruppo ha l'autorizzazione r-x.

E infine, l'altro ha il permesso r-x.

Qui, "r" significa autorizzazioni di "lettura".

Quindi, "w" indica le autorizzazioni di "scrittura".

Successivamente, "x" significa che hai i permessi di "esecuzione".

Ogni segmento avrà queste autorizzazioni disposte in questo ordine:rwx. Non troverai una sequenza come rxw o wxr. Se le autorizzazioni di lettura, scrittura o esecuzione vengono revocate, noterai "-" al posto della lettera corrispondente.

Da questa conoscenza, possiamo dedurre che nella directory Desktop, l'Utente ha il permesso di leggere, scrivere ed eseguire. Mentre il Gruppo e l'Altro hanno solo i permessi di lettura ed esecuzione, ma non di scrittura.

Allo stesso modo, per il file Hello World ha i permessi rw-rw-r–. Ciò significa che l'Utente e il Gruppo hanno autorizzazioni di lettura e scrittura, ma nessuna autorizzazione di esecuzione. Allo stesso tempo, l'altro ha solo i permessi di lettura, senza i permessi di scrittura o di esecuzione.

Rappresentazione numerica e simbolica dei permessi dei file

Nella sezione precedente, ti abbiamo mostrato come vengono indicate le autorizzazioni utilizzando le lettere "r,w,x" insieme al simbolo "-". Questa è nota come modalità simbolica. C'è anche un altro modo per denotare i permessi dei file:la modalità numerica.

Per semplificare la comprensione, riconsideriamo il file hello world, che ha i permessi rw-rw-r–.

In base a ciò, l'Utente dispone delle autorizzazioni rw-. Pertanto, le autorizzazioni di lettura e scrittura sono abilitate, mentre l'autorizzazione di esecuzione è disabilitata.

Ogni permesso abilitato è indicato con 1 e il permesso disabilitato è indicato con 0. In questo modo, otteniamo un numero binario, che in questo caso è 110. Successivamente, dovremo convertirlo in ottale, che ci dà il numero 6.

Pertanto, per il file hello world, l'utente ha l'autorizzazione 6. Allo stesso modo, anche il gruppo ha l'autorizzazione 6. e l'altro ha l'autorizzazione 4. Pertanto, in modalità numerica, l'autorizzazione per il file hello world è 664.

Il primo numero nella rappresentazione numerica rappresenta sempre l'autorizzazione Utente, con il secondo numero utilizzato per descrivere l'autorizzazione Gruppo e il terzo utilizzato per rappresentare l'autorizzazione per tutti gli Altri utenti.

Potresti pensare che sarà difficile convertire al volo binario in ottale per impostare i permessi per i file e le directory. Ma tutto ciò che devi fare è ricordare questo:

  • r =4
  • w =2
  • x =1
  •  – =0

Pertanto, se desideri creare un valore triplo rwx di r-x, l'equivalente numerico sarà 4+0+1=5. Allo stesso modo, per rw-, la rappresentazione numerica è 4+2+0=6. E per l'autorizzazione rwx, la rappresentazione numerica è 4+2+1=7.

Abbiamo anche incluso un elenco che mostra tutti i modi numerici equivalenti di ogni possibile tripletta rwx.

  • Il numero "0" indica la terzina rwx "—".
  • Il numero "1" indica la terzina rwx "–x".
  • Il numero "2" indica la terzina rwx "-w-".
  • Il numero “3” denota la terzina rwx “-wx”.
  • Il numero "4" indica la terzina rwx "r–".
  • Il numero "5" indica la terzina rwx "r-x".
  • Il numero "6" indica la terzina rwx "rw-".
  • Il numero "7" indica la terzina rwx "rwx".

Se trovi che la rappresentazione in modalità numerica dei permessi sia un po' difficile da ricordare, non devi preoccuparti. La maggior parte degli strumenti supporta la modalità simbolica. Solo in circostanze particolari, troppo di rado, sarà necessario utilizzare la modalità numerica.

Il comando “chmod”:modificare i permessi dei file

A questo punto, dovresti avere una comprensione completa di come funzionano le autorizzazioni dei file Linux e come capire quali autorizzazioni hanno i diversi gruppi di utenti per un determinato file o directory.

Quindi, con questo fuori mano, parliamo di modificare i permessi dei file. Per fare ciò, creiamo prima un nuovo file usando il seguente comando:

$ touch file.txt

Questo creerà un nuovo "file.txt" nella directory da cui stiamo eseguendo il comando. Quindi, eseguiamo il comando ls -l per vedere i permessi del file.

Come puoi vedere dall'immagine, file.txt ha i permessi rw-rw-r–. Da ciò, sappiamo che né l'utente, né il gruppo né altri hanno il permesso di eseguire il file. Cambiamo questo.

Per aggiungere l'autorizzazione "esegui" a tutti gli utenti, dobbiamo utilizzare il seguente comando:

$ chmod a+x file.txt

Qui, a indica che stiamo modificando l'autorizzazione per tutti gli utenti e +x indica che stiamo "aggiungendo autorizzazioni di esecuzione".

Ora, vediamo se ha cambiato l'autorizzazione per il file eseguendo nuovamente il comando ls -l.

Come puoi vedere, dall'immagine sopra, i permessi del file per file.txt sono ora cambiati in rwxrwxr-x, dando a tutti gli utenti il ​​permesso di esecuzione.

Se non aggiungi la "a" nel comando, il comando chmod presumerà che la modifica si applichi a tutti gli utenti per impostazione predefinita. Quindi puoi inserire il comando:

$ chmod +x file.txt

Oltre a questo, chmod accetterà anche le lettere u,g e o usate per indicare "Utente", "Gruppo" e "Altro". Inoltre, invece dell'opzione "+", puoi utilizzare l'opzione "-", che revocherà l'autorizzazione.

Consideriamo come esempio il seguente comando:

$ chmod o-rx,g-w file.txt

Nel comando precedente, utilizziamo o-rx per rimuovere i permessi di lettura ed esecuzione da Altro. Invece, utilizziamo g-w per rimuovere l'autorizzazione di scrittura dal gruppo. Nota che dobbiamo aggiungere una virgola (,) tra le due azioni per separarle.

Oltre all'opzione "+" e "-", puoi anche utilizzare "=" per definire le autorizzazioni per un gruppo di utenti. Invece di aggiungere o revocare autorizzazioni, l'opzione "=" viene utilizzata per impostare autorizzazioni specifiche.

Prendi in considerazione il seguente comando:

$ chmod u=rx, g=r file.txt

Nel comando precedente, la parte u=rx imposterà l'autorizzazione per l'utente come r-x. Allo stesso modo, g=r imposterà l'autorizzazione per il gruppo come r–.

Imposta le autorizzazioni utilizzando la modalità numerica

Puoi anche impostare le autorizzazioni utilizzando la modalità numerica. Ad esempio, supponiamo che tu voglia impostare le autorizzazioni per file.txt come rwxr–r–. Facendo riferimento alla tabella sopra, puoi vedere che la rappresentazione numerica di questa autorizzazione è 744.

Pertanto, tutto ciò che dobbiamo fare è inserire il seguente comando per modificare i permessi del file.

$ chmod 744 file.txt

Imposta l'autorizzazione a tutti i file in una directory

A volte, potrebbe essere necessario modificare le autorizzazioni per tutti i file appartenenti a una directory. Cambiarli uno per uno richiederà molto tempo e non è pratico. A questo scopo, abbiamo l'opzione -R.

Ad esempio, supponiamo che tu voglia aggiungere l'autorizzazione di esecuzione a tutti i file nella directory Documenti solo per l'utente. Per fare ciò, puoi eseguire il seguente comando:

$ chmod -R u+x Documents

Modifica le autorizzazioni per file e directory di cui non sei proprietario

Il comando chmod ti consente solo di modificare i permessi di file e directory che possiedi. Nel caso in cui sia necessario modificare i permessi di file e directory che non possiedi, dovrai utilizzare sudo.

$ sudo chmod <specify the file permissions> <specify the file/directory name>

Autorizzazioni speciali

A questo punto dovresti avere una conoscenza pratica delle autorizzazioni dei file, della proprietà dei file e di come modificare le autorizzazioni dei file per i diversi gruppi di utenti.

Oltre a questo, ci sono anche alcune "bandiere di diritto di accesso". Questi vengono utilizzati per fornire autorizzazioni speciali ai file e alle directory.

Punto appiccicoso

Per prima cosa, parliamo del bit appiccicoso. A volte, gli utenti devono condividere e collaborare su un file o una directory. In tal caso, dovrai fornire autorizzazioni di lettura, scrittura ed esecuzione a tutti gli utenti del sistema.

Ma cosa succede se un utente elimina accidentalmente (o rovina) uno dei file nella directory? Non possiamo semplicemente togliere i privilegi di scrittura in quanto ostacolerà la loro capacità di lavorare con il file.

È qui che entra in gioco il bit appiccicoso. Se si imposta lo sticky bit su una directory o un file, solo l'utente root, il proprietario della directory e il proprietario del file avranno l'autorizzazione per eliminarlo o rimuoverlo. Nessun altro utente avrà la possibilità di rimuovere/rinominare i file e le directory abilitati per lo sticky bit anche se dispongono delle autorizzazioni necessarie.

Per impostazione predefinita, lo sticky bit viene utilizzato nella directory /tmp. Come sai, la directory /tmp memorizza i file temporanei di tutti i programmi in esecuzione sul tuo sistema e utilizzati da tutti i diversi utenti del tuo sistema. Pertanto, per evitare la cancellazione accidentale dei file temporanei importanti, Linux, per impostazione predefinita, imposta lo sticky bit su /tmp.

Per impostare lo sticky bit su una delle tue directory, puoi usare il seguente comando:

$ chmod +t <directory_name>

Qui, "t" è il carattere utilizzato per rappresentare il bit appiccicoso e stiamo usando l'interruttore "+" per aggiungere il bit appiccicoso alla directory.

Allo stesso modo, per rimuovere lo sticky bit da una directory, possiamo usare il seguente comando:

$ chmod -t <directory_name>

Bit Setuid e Setgid

Il bit setuid viene utilizzato per eseguire un file come utente proprietario del file. Il bit setgid viene utilizzato per eseguire un file come il gruppo che possiede il file. Il bit setuid viene utilizzato sui file e non influisce sulle directory. Tuttavia, il bit setgid può essere utilizzato nelle directory.

Consente ai nuovi file e sottodirectory creati all'interno della directory di ereditare il gruppo proprietario anziché il gruppo predefinito dell'utente. Inoltre, le nuove sottodirectory nella directory avranno il bit setgid impostato, ma i vecchi file rimarranno inalterati.

Per impostare il bit setuid su un file, puoi usare il seguente comando:

$ sudo chmod +s <file_name>

Considerando che per rimuovere il bit setgid, dovrai invece usare -s. Allo stesso modo, per impostare il setgid su un file, puoi usare il comando:

$ sudo chmod g+s <file_name>

E per rimuoverlo, dovrai usare g-s.

Conclusione

Come puoi vedere, Linux offre funzionalità solide e complete per gestire i diritti basati sugli utenti su file e directory nel sistema. Ci auguriamo che questo articolo ti abbia aiutato a capire come vengono implementate queste autorizzazioni. Tuttavia, in caso di confusione o domande sui permessi dei file Linux, non esitare a lasciarci un commento.

Inoltre, se stai iniziando con Linux, dovresti aggiungere la nostra serie di articoli Learn Linux ai segnalibri. Copre tonnellate di tutorial e guide utili per principianti e utenti avanzati per aiutarli a ottenere il massimo dal loro sistema Linux.


Linux
  1. Directory Linux tmp:tutto ciò che devi sapere

  2. Compressione file Linux:tutto ciò che devi sapere

  3. Swappiness in Linux:tutto ciò che devi sapere

  4. Linux:tutto è un file?

  5. Tutto ciò che devi sapere sul file system Linux

Tutto ciò che devi sapere su Linux Mint Distro

Tutto ciò che devi sapere sugli inode in Linux

Tutto ciò che è importante sapere su Hard Link in Linux

Tutto ciò che è importante sapere sull'UID in Linux

Tutto quello che c'è da sapere sulla directory /tmp di Linux

Hard link e soft link in Linux:tutto ciò che devi sapere