Ti sei mai trovato in una situazione in cui dovevi eseguire un’operazione su un sistema Linux, solo per ricevere una frustrante negazione di accesso? Bene, dì addio a questi problemi e benvenuto nel mondo dei permessi speciali in Linux!
Questo tutorial è il tuo biglietto per padroneggiare i punti più raffinati dei permessi speciali in Linux — Sticky Bit, Set User ID (SUID) e Set Group ID (SGID). Questi permessi speciali offrono un livello più elevato di controllo della sicurezza.
Continua a leggere e gestisci i tuoi file in modo sicuro con precisione e fiducia!
Prerequisiti
Prima di immergerti nei dettagli dei permessi speciali in Linux, assicurati di avere una macchina Linux. Questo tutorial utilizza Ubuntu 22.04 LTS (Jammy Jellyfish) per dimostrazioni pratiche.
Eseguire File con Permessi Speciali in Linux (SUID)
I permessi dei file Linux determinano tipicamente la capacità di un utente di leggere, scrivere o eseguire un file basandosi sui loro permessi e su quelli del loro gruppo. Tuttavia, ci sono situazioni in cui un utente deve eseguire un file con i permessi del proprietario del file piuttosto che con i propri.
Ad esempio, considera un programma che solo gli utenti root possono eseguire, ma c’è bisogno che un utente normale lo esegua per una specifica attività. In tali casi, SUID diventa inestimabile.
Per vedere come impostare i permessi SUID, segui questi passaggi:
1. Apri il terminale ed esegui i seguenti comandi per creare un utente (useradd
) chiamato A-user
(arbitrario) e assegnagli una password (passwd
).

2. Successivamente, esegui il comando stat
qui sotto per visualizzare i permessi esistenti del comando cat
.
Fai attenzione ai permessi di accesso qui sotto, poiché ne avrai bisogno per confronti successivi:
- 0755 – Consente al file di essere eseguito con i permessi del proprietario, fornendo privilegi elevati agli utenti non privilegiati durante l’esecuzione del file.
- -rwxr-xr-x – Imposta il permesso al proprietario di leggere, scrivere ed eseguire il file (rwx), mentre i membri del gruppo e altri utenti possono leggere ed eseguire il file (r-x e r-x).

cat
command3. Ora, esegui il comando chmod
qui sotto, che non fornisce output ma imposta il bit SUID sul comando cat
.
Questo comando permette al comando cat
di essere eseguito con i permessi del proprietario del file anziché con i permessi dell’utente che sta eseguendo il comando.
? Nota che l’uso di SUID dovrebbe essere fatto con cautela, poiché può potenzialmente introdurre rischi per la sicurezza se non implementato correttamente. Assicurati di applicare SUID solo a comandi e file fidati.
4. Una volta impostato il bit SUID, esegui il seguente comando stat
per verificare il bit SUID ricontrollando i permessi del comando cat
.
Se avrai successo, vedrai quanto segue, dove farai un confronto con le informazioni che hai annotato al passo due:
- 0755 cambiato in 4755, dove il numero 4 rappresenta il bit SUID.
- -rwxr-xr-x cambiato in -rwsr-xr-x, dove s rappresenta il permesso di esecuzione dell’utente (x) rispettivamente.

5. Esegui il seguente comando cat
per testare i permessi dell’utente attualmente connesso per accedere al file /etc/shadow
. Questo file è un file di sistema critico che memorizza le password degli utenti crittografate e informazioni correlate, alle quali solo un utente root può accedere.
Per impostazione predefinita, il comando cat
ti consente di visualizzare il contenuto di un file in Linux. Ma questo comportamento non è sempre vero per ogni file.
Compare il messaggio sottostante poiché l’utente attuale non ha il permesso di accedere al file.

6. Ora, esegui ogni comando qui sotto per passare (su
) al nuovo utente (A-user
) e prova ad accedere nuovamente al file /etc/shadow
.
Questa volta, il comando cat
viene eseguito con i permessi del proprietario del file (di solito root) anziché con i permessi dell’utente che ha eseguito il comando.
Dato che hai temporaneamente concesso il permesso ad A-user di leggere il contenuto di quel file, otterrai un output simile a quello qui sotto.

7. Per motivi di sicurezza, esegui i seguenti comandi per exit
dal utente corrente (A-user) e ripristina i permessi del comando cat
al suo stato originale.

cat
command8. Infine, esegui il comando qui sotto per verificare che il bit SUID sia stato rimosso.
Nota che il bit SUID 4 e s non sono più presenti nei permessi di accesso.

Abilitazione dei flussi di lavoro collaborativi nelle directory Linux (SGID)
Eseguire file con permessi speciali in Linux tramite SUID funziona senza dubbio bene. Ma cosa succede se miri a flussi di lavoro collaborativi, dove più utenti collaborano ai progetti? Tipicamente, è necessario assicurarsi che i file appena creati ereditino la proprietà del gruppo della directory genitore.
Di fronte a questo scenario, l’SGID si rivela essere il game-changer. Questa potente funzionalità semplifica la gestione delle risorse condivise e migliora i flussi di lavoro basati su gruppi negli ambienti Linux.
Per vedere come funziona il SGID, creerai un gruppo, aggiungerai utenti ad esso, imposterai il permesso SGID su una directory e ne testerai la funzionalità come segue:
1. Esegui i seguenti comandi per accedere come utente root e creare un nuovo gruppo chiamato demo
(arbitrario). Questo gruppo sarà utilizzato per testare la funzionalità SGID.
Questi comandi non

2. Successivamente, esegui i comandi seguenti per creare due utenti (userA
e userB
) che utilizzerai per simulare un ambiente collaborativo.

3. Dopo aver creato nuovi utenti, esegui i comandi usermod
seguenti, che non producono output nel terminale ma aggiungono gli utenti (userA
e userB
) al gruppo demo
.
4. Ora, esegui ciascun comando seguente, crea una directory (mkdir
) chiamata /demo-dir
(arbitraria) e imposta le proprietà di utente e gruppo della directory su userA
e demo
, rispettivamente.
? Quando questi comandi sono eseguiti con successo, non producono output, il che si applica a tutta questa guida.
5. Successivamente, esegui il seguente comando ls
per visualizzare i permessi della directory /demo-dir
.
L’output qui sotto verifica che l’utente della directory /demo-dir sia impostato su userA e il gruppo su demo.

6. Con le autorizzazioni verificate, esegui il comando chmod
qui sotto per impostare il bit SGID sulla directory /demo-dir/
come segue:
g+s
– Set the SGID bit on the/demo-dir/
directory.o-rwx
– Remove all permissions (read, write, execute) for others.u+rwx
– Grant read, write, and execute permissions to the owner.g+rwx
– Grant read, write, and execute permissions to the group.
7. Una volta impostato il bit SGID, esegui il seguente comando per verificare le autorizzazioni della directory /demo-dir
.
Se avrai successo, vedrai il bit SGID impostato, rappresentato dal numero 2
prima delle autorizzazioni in modalità ottale e s
nel punto dell’autorizzazione di esecuzione del proprietario del gruppo (x
) (rws
).

8. Successivamente, esegui ciascun comando qui sotto per creare una directory /home
per userA
.
9. Esegui i seguenti comandi per passare (su
) a userA
e creare un file (touch
) chiamato textA.txt
(arbitrario) nella directory /demo-dir
.
Questi comandi non generano output (cosa valida per l’intero tutorial), ma verificherai le autorizzazioni del file nel passaggio successivo.
10. Esegui il comando ls
qui sotto per visualizzare le autorizzazioni del file textA.txt
.
Di seguito, il proprietario del gruppo del file textA.txt è demo, che è il gruppo primario del creatore, userA. I membri del gruppo demo possono leggere e modificare il file, mentre altri possono solo leggerlo.
Per garantire che i nuovi file nella directory /demo-dir ereditino la proprietà di gruppo della directory, deve essere impostato un bit SGID sulla directory, che verrà trattato nei passaggi successivi.

11. Ora, eseguire i seguenti comandi per uscire
dall’utente corrente (userA) e impostare il bit SGID (chmod g+s
) nella directory /demo-dir

12. Una volta impostato il bit SGID, eseguire il seguente comando per verificare il bit SGID aggiunto alla directory /demo-dir
.
Come mostrato di seguito, noterai che il bit SUID 2 è stato aggiunto, e c’è una s nella posizione dell’esecuzione del proprietario del gruppo. Questo output conferma che il bit SGID è stato impostato con successo sulla directory /demo-dir.

13. Successivamente, tornare a userA
e creare un altro file chiamato testA.txt
(arbitrario) nella directory /demo-dir
.
14. Una volta creato, eseguire il comando ls
qui sotto per controllare la proprietà del nuovo file (testA.txt
).
Se il SGID funziona come previsto, l’output mostra che mentre l’utente userA è il proprietario, il possesso del gruppo è demo a causa del bit SGID impostato sulla directory /demo-dir.

15. Ora, crea una directory /home
per userB
per testare ulteriormente la funzionalità SGID.
16. Passa a userB
e crea un file chiamato testB.txt
(arbitrario) nella stessa directory /demo-dir
.

17. Visualizza (ls
) le informazioni sul nuovo file (testB.txt
).
Verifica il possesso del file textB.txt.

Protezione dei file all’interno delle directory (Bit sticky)
L’abilitazione dei flussi di lavoro collaborativi nelle directory Linux favorisce il lavoro di squadra e la collaborazione senza soluzione di continuità. Ma quando è necessario stabilire un ambiente sicuro per gestire i file in modo efficace, le autorizzazioni Bit sticky faranno al caso tuo.
Impostando il Bit sticky, essenzialmente metti “le chiavi del castello” nelle mani del proprietario del file, del proprietario della directory o dell’utente root. In questo modo si garantisce che solo loro abbiano l’autorità per eliminare o rinominare il file all’interno della directory, fornendo un ulteriore salvagente per i dati sensibili.
Per impostare le autorizzazioni Bit sticky, devi prima creare una directory condivisa con i seguenti passaggi:
1. Accedi come utente root e crea una directory (condivisa) dove più utenti possono creare file.
2. Successivamente, esegui i seguenti comandi per cambiare i permessi della directory /shared-dir
per concedere i permessi di scrittura a tutti.
Il primo numero (1
) in 1777
imposta il Sticky Bit, mentre il resto (777
) rende la directory leggibile, scrivibile ed eseguibile da tutti.
Le seguenti sono caratteristiche o attributi dello Sticky Bit in un sistema Linux:
Feature | Function |
Directory Protection | When the Sticky Bit is set on a directory, it allows only the owner of a file within that directory to delete or rename their own files. Other users, even if they have write permissions to the directory, cannot delete or rename files owned by other users. |
Shared Directories | The sticky bit is handy for directories that are shared among multiple users. For example, on a system with a /tmp directory used by all users to store temporary files, setting the Sticky Bit prevents users from accidentally or maliciously deleting files owned by other users. |
Di seguito, puoi vedere la lettera ‘t‘ nella parte finale del campo dei permessi, che indica che lo Sticky Bit è impostato sulla directory /shared-dir.

3. Passa a userA
e crea un file chiamato fileA.txt
(arbitrario) nella directory /shared-dir
:
4. Esci da userA, passa a userB
e crea un altro file chiamato fileB.txt
(arbitrario) nella stessa directory /shared-dir
.
5. Ora, uscire da utenteB
, passare a utenteA
e tentare di eliminare il file fileB.txt
di utenteB
.
Otterrai un output come quello sotto poiché solo il proprietario del file può apportare modifiche o eliminarlo.

6. Infine, eseguire il seguente elenco di comandi (ls
) per elencare tutti i file nella directory condivisa (/shared-dir
).
Se le autorizzazioni Sticky Bit funzionano, vedrai che il file fileB.txt creato da utenteB è al sicuro e non è stato eliminato.

Conclusione
Avvolgendo questa esplorazione delle autorizzazioni speciali in Linux, hai sbloccato un robusto set di strumenti: SUID, SGID e Sticky Bit. Armato di questa conoscenza, ora puoi regolare l’accesso e proteggere i tuoi file con precisione.
Ma non fermarti qui! Perché non provare a configurare una directory condivisa con SGID e sperimentare come i file ereditano la proprietà del gruppo? Il mondo Linux è tuo e con ogni impresa, padroneggerai l’arte di proteggere il tuo sistema con maestria!
Source:
https://adamtheautomator.com/special-permissions-in-linux/