semanage Generatore di comandi
Genera comandi semanage per gestire le mappature delle politiche SELinux (fcontext, login, user, port, boolean)
Introduzione a semanage
## Cos’è semanage?
`semanage` gestisce le mappature delle policy di SELinux: le etichette che indicano al kernel cosa un processo, un file, una porta o un utente connesso è *autorizzato* a fare. Non attiva o disattiva direttamente il modo rigoroso/permissivo (questo è gestito da `setenforce`); invece configura le mappature persistenti utilizzate dalla policy di SELinux.
## Come utilizzarlo
1. **Scegliere un oggetto**: `fcontext` (etichette dei file), `login` (mappatura utente Linux → utente SELinux), `user`, `port` o `boolean`. 2. **Scegliere un’azione**: `add` (`-a`), `modify` (`-m`), `delete` (`-d`) o `list` (`-l`). 3. **Impostare il tipo SELinux** (`-t`) e il **valore** (regex di percorso, porta, utente, ecc.). 4. **Applicare il contesto del file**: Per i cambiamenti relativi a `fcontext`, eseguire successivamente `restorecon` affinché i file esistenti vengano ridenominati. 5. **Copiare ed eseguire**: Anteporre `sudo`.
Oggetti, azioni e opzioni
### `fcontext` Mappature contesto-file Assegna una regex di percorso a un tipo SELinux. Dopo aver aggiunto o modificato qualcosa, esegui `restorecon -Rv /path` per ridenominare i file esistenti: `semanage fcontext -a -t httpd_sys_content_t '/web(/.*)?'`.
### `login` Mappatura utente Linux → utente SELinux Mappa un nome utente Linux (o `__default__`) a un utente SELinux, ad esempio `semanage login -a -s user_u john`.
### `user` Utenti SELinux Crea o modifica utenti SELinux e i ruoli che possono assumere.
### `port` Mappature porta → tipo Etichetta una porta di rete in modo che un servizio confinato possa collegarsi ad essa: `semanage port -a -t http_port_t -p tcp 8080`.
### `boolean` Booleani della policy Attiva o disattiva un booleano specificato per modificare il comportamento della policy (`semanage boolean -m --on httpd_can_network_connect`).
### Azioni `-a` / `-m` / `-d` / `-l` Aggiungi una nuova mappatura, modifica una esistente, elimina una o elenca le mappature attuali.
▶Cos’è un contesto SELinux e perché è importante?
▶Ho aggiunto una regola fcontext, ma httpd non riesce comunque a leggere i file: perché?
▶Come posso permettere a un servizio di ascoltare su una porta non standard?
Se questo strumento è stato di aiuto per te, considera l’idea di regalarmi un caffè.
Comprami un caffè.