Un’introduzione ai permessi di Linux

Introduzione

Linux è, per definizione, un sistema operativo multi-utente basato sui concetti Unix di proprietà dei file e permessi per fornire sicurezza a livello di sistema di file. Per amministrare in modo affidabile un server cloud, è essenziale avere una buona comprensione di come funzionano la proprietà e i permessi. Ci sono molte sfumature nel gestire la proprietà dei file e i permessi, ma questo tutorial fornirà una buona introduzione.

Questo tutorial coprirà come visualizzare e comprendere la proprietà e i permessi di Linux. Se stai cercando un tutorial su come modificare i permessi, puoi leggere Fondamenti dei permessi di Linux e come utilizzare Umask su un VPS.

Prerequisiti

Assicurati di comprendere i concetti trattati nei tutorial precedenti di questa serie:

Per seguire questo tutorial, avrai bisogno di accesso a un server cloud. Puoi seguire questa guida per creare un droplet DigitalOcean.

Informazioni sugli Utenti

Come menzionato nell’introduzione, Linux è un sistema multiutente. Dovresti comprendere i fondamenti degli utenti e dei gruppi Linux prima di trattare proprietà e autorizzazioni, poiché sono le entità alle quali si applicano le proprietà e le autorizzazioni. Cominciamo con cosa sono gli utenti.

In Linux, ci sono due tipi di utenti: utenti di sistema e utenti regolari. Tradizionalmente, gli utenti di sistema vengono utilizzati per eseguire processi non interattivi o in background su un sistema, mentre gli utenti regolari vengono utilizzati per accedere e eseguire processi interattivamente. Quando inizializzi e accedi a un sistema Linux, potresti notare che inizia con molti utenti di sistema già creati per eseguire i servizi di cui il sistema operativo dipende. Questo è normale.

Puoi visualizzare tutti gli utenti su un sistema guardando il contenuto del file /etc/passwd. Ogni riga in questo file contiene informazioni su un singolo utente, a partire dal suo nome utente (il nome prima del primo :). Puoi stampare il contenuto del file passwd con cat:

  1. cat /etc/passwd
Output
… sshd:x:109:65534::/run/sshd:/usr/sbin/nologin landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin pollinate:x:111:1::/var/cache/pollinate:/bin/false systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false vault:x:997:997::/home/vault:/bin/bash stunnel4:x:112:119::/var/run/stunnel4:/usr/sbin/nologin sammy:x:1001:1002::/home/sammy:/bin/sh

Superutente

Oltre ai due tipi di utenti, c’è il superutente, o utente root, che ha la capacità di ignorare qualsiasi restrizione di proprietà e autorizzazione dei file. In pratica, ciò significa che il superutente ha il diritto di accedere a qualsiasi cosa sul proprio server. Questo utente viene utilizzato per apportare modifiche a livello di sistema.

È anche possibile configurare altri account utente con la capacità di assumere “diritti da superutente”. Questo viene spesso chiamato avere sudo, perché gli utenti che hanno autorizzazioni per ottenere temporaneamente i diritti da superutente lo fanno precedendo i comandi di livello amministrativo con sudo. In realtà, creare un utente normale che abbia privilegi sudo per le attività di amministrazione di sistema è considerata una pratica migliore. In questo modo, è possibile essere più conservativi nell’uso dell’account utente root.

Gruppi

I gruppi sono insiemi di zero o più utenti. Un utente appartiene a un gruppo predefinito e può anche essere membro di uno qualsiasi degli altri gruppi su un server.

È possibile visualizzare tutti i gruppi nel sistema e i loro membri guardando nel file /etc/group, come si farebbe con /etc/passwd per gli utenti. Questo articolo non tratta della gestione dei gruppi.

Ora che sai cosa sono gli utenti e i gruppi, parliamo della proprietà e dei permessi dei file!

Visualizzazione della proprietà e dei permessi

In Linux, ogni file è di proprietà di un singolo utente e di un singolo gruppo, e ha i suoi propri permessi di accesso. Vediamo come visualizzare la proprietà e i permessi di un file.

Il modo più comune per visualizzare i permessi di un file è utilizzare il comando ls con l’opzione di elenco lungo -l, ad esempio ls -l miofile. Se vuoi visualizzare i permessi di tutti i file nella tua directory corrente, esegui il comando senza l’argomento miofile, in questo modo:

  1. ls -l

Nota: Se ti trovi in una directory home vuota e non hai ancora creato file da visualizzare, puoi seguire elencando il contenuto della directory /etc eseguendo questo comando: ls -l /etc

Ecco un esempio di screenshot dell’output di ls -l, con etichette di ogni colonna di output:

Ogni file elenca la sua modalità (che contiene i permessi), proprietario, gruppo e nome. Per aiutare a spiegare cosa significano tutte quelle lettere e trattini, analizziamo la colonna della modalità nei suoi componenti.

Modalità di Comprensione

Per aiutare a spiegare cosa significano tutti i raggruppamenti e le lettere, ecco una descrizione della metadati di modalità del primo file nell’esempio sopra:

Tipo di File

In Linux, ci sono due tipi di file: normali e speciali. Il tipo di file è indicato dal primo carattere della modalità di un file – in questa guida, questo sarà indicato come il “campo tipo di file”.

I file normali possono essere identificati da un trattino (-) nei loro campi tipo di file. I file normali possono contenere dati o qualsiasi altra cosa. Sono chiamati normali, o regolari, per distinguerli dai file speciali.

I file speciali possono essere identificati da un carattere diverso dal trattino, come una lettera, nei loro campi tipo di file, e vengono gestiti dal sistema operativo in modo diverso rispetto ai file normali. Il carattere che appare nel campo tipo di file indica il tipo di file speciale di un file particolare. Ad esempio, una directory, che è il tipo più comune di file speciale, è identificata dal carattere d che appare nel suo campo tipo di file (come nella schermata precedente). Ci sono diversi altri tipi di file speciali.

Classi di Autorizzazioni

Dal diagramma, puoi vedere che la colonna modo indica il tipo di file, seguito da tre triadi, o classi, di autorizzazioni: utente (proprietario), gruppo e altri. L’ordine delle classi è coerente su tutti i sistemi Linux.

Le tre classi di autorizzazioni funzionano nel seguente modo:

  • Utente: Il proprietario di un file appartiene a questa classe.
  • Gruppo: I membri del gruppo del file appartengono a questa classe. Le autorizzazioni di gruppo sono un modo utile per assegnare autorizzazioni su un determinato file a più utenti.
  • Altri: Qualsiasi utente che non faccia parte delle classi utente o gruppo per questo file appartiene a questa classe.

Lettura delle Autorizzazioni Simboliche

La prossima cosa a cui prestare attenzione sono quei set di tre caratteri. Essi indicano le autorizzazioni, in forma simbolica, che ogni classe ha per un determinato file.

In ogni triade, le autorizzazioni di lettura, scrittura ed esecuzione sono rappresentate nel seguente modo:

  • Lettura: Indicata da una r nella prima posizione
  • Scrittura: Indicata da una w nella seconda posizione
  • Eseguire: Indicato da una x nella terza posizione. In alcuni casi speciali, potrebbe esserci un carattere diverso qui

A hyphen (-) in the place of one of these characters indicates that the respective permission is not available for the respective class. For example, if the group (second) triad for a file is r--, the file is “read-only” to the group that is associated with the file.

Comprensione di Lettura, Scrittura, Esecuzione

Ora che sai come leggere i permessi di un file, dovresti sapere cosa consentono effettivamente di fare ciascuno dei permessi agli utenti. Questo tutorial coprirà ogni permesso individualmente, ma tieni presente che spesso vengono utilizzati in combinazione tra loro per consentire un accesso utile ai file e alle directory.

Ecco una scomposizione dell’accesso che i tre tipi di permessi concedono all’utente:

Lettura

Per un file normale, il permesso di lettura consente a un utente di visualizzare il contenuto del file.

Per una directory, il permesso di lettura consente a un utente di visualizzare i nomi dei file nella directory.

Scrittura

Per un file normale, il permesso di scrittura consente a un utente di modificare ed eliminare il file.

Per una directory, il permesso di scrittura consente a un utente di eliminare la directory, modificare i suoi contenuti (creare, eliminare e rinominare file al suo interno) e modificare i contenuti dei file a cui l’utente ha permessi di scrittura.

Esegui

Per un file normale, il permesso di esecuzione consente a un utente di eseguire un file: l’utente deve anche avere il permesso di lettura. I permessi di esecuzione devono essere impostati per i programmi eseguibili e gli script shell prima che un utente possa eseguirli.

Per una directory, il permesso di esecuzione consente a un utente di accedere o attraversare (cioè cd) e accedere ai metadati dei file nella directory (le informazioni elencate in un ls -l).

Esempi di Modalità (e Permessi)

Ora che sai come leggere la modalità di un file e comprendere il significato di ogni permesso, vedrai alcuni esempi di modalità comuni, con brevi spiegazioni, per mettere insieme i concetti.

  • -rw-------: Un file a cui è possibile accedere solo dal suo proprietario
  • -rwxr-xr-x: Un file eseguibile da ogni utente nel sistema. Un file “eseguibile da tutti”
  • -rw-rw-rw-: Un file aperto alla modifica da parte di ogni utente nel sistema. Un file “scrivibile da tutti”
  • drwxr-xr-x: Una directory che ogni utente nel sistema può leggere e accedere
  • drwxrwx---: Una directory che è modificabile (incluso il suo contenuto) dal proprietario e dal gruppo
  • drwxr-x---: Una directory accessibile dal suo gruppo

Di solito, il proprietario di un file gode delle autorizzazioni più elevate, se confrontate con le altre due classi. Tipicamente, si vedrà che le classi gruppo e altro hanno solo un sottoinsieme delle autorizzazioni del proprietario (equivalenti o inferiori). Questo ha senso perché i file dovrebbero essere accessibili solo agli utenti che ne hanno bisogno per una particolare ragione.

Un’altra cosa da notare è che anche se sono possibili molte combinazioni di autorizzazioni, solo alcune hanno senso nella maggior parte delle situazioni. Ad esempio, l’accesso scrittura o esecuzione è quasi sempre accompagnato dall’accesso lettura, poiché è difficile modificare e impossibile eseguire qualcosa che non si può leggere.

Conclusione

Ora dovresti avere una buona comprensione di come funzionano proprietà e autorizzazioni in Linux. Per imparare come modificare queste autorizzazioni usando chown, chgrp e chmod, fare riferimento a Linux Permissions Basics and How to Use Umask on a VPS.

Se desideri approfondire i fondamenti di Linux, leggi il prossimo tutorial di questa serie, Un’introduzione alla Redirezione I/O in Linux.

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions