<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wiki.gazzi.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>GazziNet - Contributi dell&#039;utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.gazzi.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php/Speciale:Contributi/Admin"/>
	<updated>2026-04-12T01:06:10Z</updated>
	<subtitle>Contributi dell&amp;#039;utente</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=CamperLink&amp;diff=652</id>
		<title>CamperLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=CamperLink&amp;diff=652"/>
		<updated>2026-04-06T22:29:44Z</updated>

		<summary type="html">&lt;p&gt;Admin: Creata pagina con &amp;quot;Esempi:  https://www.campermjb.com/ducato-l3h3-surf/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Esempi:&lt;br /&gt;
&lt;br /&gt;
https://www.campermjb.com/ducato-l3h3-surf/&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Pagina_principale&amp;diff=651</id>
		<title>Pagina principale</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Pagina_principale&amp;diff=651"/>
		<updated>2026-04-06T22:29:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;div class=&amp;quot;gazzi-wiki-home&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gazzi-wiki-hero&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;GazziNet Wiki&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Base tecnica interna con appunti operativi, procedure e raccolte tematiche.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gazzi-wiki-grid&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gazzi-wiki-card&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;Sistemi&amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Linux]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Windows]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Database]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Application Server]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Virtualizzatori]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Automation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Varie]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gazzi-wiki-card&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;Rete e sicurezza&amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Sicurezza &amp;amp; Forense]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Operatore]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gazzi-wiki-card&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;Dev e piattaforme&amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Container|Container]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Sviluppo]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[OBS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[HW]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Codex per struttura wiki e pubblicazione articoli]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Progetti/CartClin]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gazzi-wiki-card&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;Supporto&amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Corso]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gazzi-wiki-card&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;Progetto Camper&amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[CamperLink]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Virtualizzatori&amp;diff=643</id>
		<title>Tips Virtualizzatori</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Virtualizzatori&amp;diff=643"/>
		<updated>2026-03-29T20:27:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: Fix markup minore nella sezione Proxmox VE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Breve raccolta di riferimenti sulla virtualizzazione usati nel contesto GazziNet. La pagina serve come indice rapido per verifiche host, risorse e accesso alle piattaforme dedicate.&lt;br /&gt;
&lt;br /&gt;
== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Risorse host ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
lscpu&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e bridge ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
bridge link&lt;br /&gt;
ss -tulpn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage e volumi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
pvs&lt;br /&gt;
vgs&lt;br /&gt;
lvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting operativo ==&lt;br /&gt;
* Verificare sempre se il problema e sull&#039;host, sulla VM o sullo storage sottostante.&lt;br /&gt;
* Prima di agire, annotare uso CPU, RAM, spazio, stato rete e saturazione I/O.&lt;br /&gt;
* Controllare eventuali snapshot, lock, backup in corso o contenitori storage pieni.&lt;br /&gt;
&lt;br /&gt;
== Piattaforme ==&lt;br /&gt;
* [[PROXMOX]]&lt;br /&gt;
&lt;br /&gt;
== Proxmox VE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proxmox VE&#039;&#039;&#039; e una piattaforma di virtualizzazione basata su Debian che integra:&lt;br /&gt;
* &#039;&#039;&#039;KVM&#039;&#039;&#039; per macchine virtuali complete&lt;br /&gt;
* &#039;&#039;&#039;LXC&#039;&#039;&#039; per container Linux&lt;br /&gt;
* gestione storage locale e condiviso&lt;br /&gt;
* clustering, migrazione, backup e replica&lt;br /&gt;
* interfaccia web e CLI native&lt;br /&gt;
&lt;br /&gt;
=== Quando usarlo ===&lt;br /&gt;
Ha senso usare Proxmox VE quando:&lt;br /&gt;
* vuoi centralizzare gestione di VM e container&lt;br /&gt;
* ti servono snapshot, backup e restore in modo semplice&lt;br /&gt;
* vuoi crescere da host singolo a cluster&lt;br /&gt;
* vuoi usare storage locali o condivisi con un&#039;interfaccia unificata&lt;br /&gt;
&lt;br /&gt;
=== Requisiti minimi e logica di sizing ===&lt;br /&gt;
Per valutazione o lab:&lt;br /&gt;
* CPU 64 bit con supporto Intel VT/AMD-V&lt;br /&gt;
* almeno 16 GiB di spazio disco per l&#039;host, oltre allo spazio per guest&lt;br /&gt;
* almeno una NIC&lt;br /&gt;
&lt;br /&gt;
Per produzione:&lt;br /&gt;
* privilegiare hardware server stabile&lt;br /&gt;
* prevedere RAM in base ai guest, non solo all&#039;host&lt;br /&gt;
* separare se possibile traffico management, storage e migration&lt;br /&gt;
* valutare ECC RAM soprattutto se si usa ZFS&lt;br /&gt;
&lt;br /&gt;
== Installazione ==&lt;br /&gt;
&lt;br /&gt;
=== Metodo consigliato: ISO ufficiale ===&lt;br /&gt;
L&#039;installazione da ISO e il metodo raccomandato da Proxmox per utenti nuovi ed esistenti.&lt;br /&gt;
&lt;br /&gt;
Flusso tipico:&lt;br /&gt;
# scaricare la ISO ufficiale&lt;br /&gt;
# preparare la chiavetta di installazione&lt;br /&gt;
# avviare il server dalla ISO&lt;br /&gt;
# scegliere il disco o i dischi di destinazione&lt;br /&gt;
# impostare filesystem/root storage&lt;br /&gt;
# configurare hostname, password root, email e rete&lt;br /&gt;
# completare installazione e riavviare&lt;br /&gt;
&lt;br /&gt;
Durante il setup l&#039;installer:&lt;br /&gt;
* partiziona i dischi locali&lt;br /&gt;
* applica configurazioni base come lingua, timezone e rete&lt;br /&gt;
* installa Debian e i pacchetti Proxmox VE necessari&lt;br /&gt;
&lt;br /&gt;
=== Metodo alternativo: installazione su Debian ===&lt;br /&gt;
Proxmox VE puo anche essere installato sopra un sistema Debian esistente, ma questa via e consigliata solo a utenti avanzati.&lt;br /&gt;
&lt;br /&gt;
Ha senso usarla quando:&lt;br /&gt;
* hai gia un&#039;immagine Debian standard gestita da automazione&lt;br /&gt;
* vuoi maggiore controllo iniziale sul partizionamento&lt;br /&gt;
* vuoi integrare l&#039;host in procedure di bootstrap gia esistenti&lt;br /&gt;
&lt;br /&gt;
Rischi tipici:&lt;br /&gt;
* repository sbagliati o incompleti&lt;br /&gt;
* pacchetti non allineati&lt;br /&gt;
* rete e storage meno prevedibili rispetto all&#039;installer dedicato&lt;br /&gt;
&lt;br /&gt;
=== Installazione automatizzata ===&lt;br /&gt;
Proxmox documenta anche l&#039;&#039;&#039;Automated Installation&#039;&#039;&#039; per deployment unattended.&lt;br /&gt;
&lt;br /&gt;
Serve quando:&lt;br /&gt;
* devi installare piu host bare metal in modo coerente&lt;br /&gt;
* vuoi preparare una ISO con answer file&lt;br /&gt;
* vuoi demandare il post-config a strumenti come Ansible o simili&lt;br /&gt;
&lt;br /&gt;
=== Prime attivita dopo l&#039;installazione ===&lt;br /&gt;
Checklist pratica iniziale:&lt;br /&gt;
* verificare data/ora e DNS&lt;br /&gt;
* applicare aggiornamenti&lt;br /&gt;
* controllare bridge di rete&lt;br /&gt;
* controllare storage locale configurato dall&#039;installer&lt;br /&gt;
* definire repository corretti in base a subscription o no-subscription&lt;br /&gt;
* configurare backup prima di creare guest critici&lt;br /&gt;
* registrare hostname, IP management, storage e note operative&lt;br /&gt;
&lt;br /&gt;
Comandi rapidi:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pveversion -v&lt;br /&gt;
ip a&lt;br /&gt;
bridge link&lt;br /&gt;
pvesm status&lt;br /&gt;
lsblk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filesystem e storage: come scegliere ==&lt;br /&gt;
&lt;br /&gt;
La scelta corretta dipende da:&lt;br /&gt;
* host singolo o cluster&lt;br /&gt;
* storage locale o condiviso&lt;br /&gt;
* bisogno di snapshot/cloni&lt;br /&gt;
* budget RAM&lt;br /&gt;
* necessita di integrita dati e replica&lt;br /&gt;
* carico prevalente: VM, container, ISO, template, backup&lt;br /&gt;
&lt;br /&gt;
=== 1. Setup predefinito LVM + LVM-thin ===&lt;br /&gt;
L&#039;installer attuale usa come default &#039;&#039;&#039;LVM&#039;&#039;&#039; sul disco locale.&lt;br /&gt;
&lt;br /&gt;
Schema tipico:&lt;br /&gt;
* volume group &amp;lt;code&amp;gt;pve&amp;lt;/code&amp;gt;&lt;br /&gt;
* logical volume &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; formattato &#039;&#039;&#039;ext4&#039;&#039;&#039; per il sistema operativo&lt;br /&gt;
* logical volume &amp;lt;code&amp;gt;swap&amp;lt;/code&amp;gt;&lt;br /&gt;
* logical volume &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; come &#039;&#039;&#039;LVM-thin&#039;&#039;&#039; per dischi VM&lt;br /&gt;
&lt;br /&gt;
Vantaggi:&lt;br /&gt;
* semplice&lt;br /&gt;
* buon default per host singolo&lt;br /&gt;
* snapshot e clone efficienti sul thin pool&lt;br /&gt;
* basso overhead RAM rispetto a ZFS&lt;br /&gt;
&lt;br /&gt;
Limiti:&lt;br /&gt;
* non condiviso tra nodi&lt;br /&gt;
* meno funzioni di integrita rispetto a ZFS&lt;br /&gt;
* meno flessibile per storage file-level generici rispetto a una directory dedicata&lt;br /&gt;
&lt;br /&gt;
Consigli pratici:&lt;br /&gt;
* buona scelta per host piccoli o medi con storage locale&lt;br /&gt;
* adatto quando vuoi partire in fretta senza complessita extra&lt;br /&gt;
* tenere backup e ISO possibilmente separati dal thin pool se il disco e piccolo&lt;br /&gt;
&lt;br /&gt;
=== 2. Directory storage su ext4 o XFS ===&lt;br /&gt;
Lo storage di tipo &#039;&#039;&#039;Directory&#039;&#039;&#039; usa una directory POSIX su filesystem Linux standard.&lt;br /&gt;
&lt;br /&gt;
Puoi usarlo per:&lt;br /&gt;
* immagini VM&lt;br /&gt;
* container&lt;br /&gt;
* template&lt;br /&gt;
* ISO&lt;br /&gt;
* backup&lt;br /&gt;
&lt;br /&gt;
Proxmox segnala che:&lt;br /&gt;
* una directory puo essere locale oppure un mount standard Linux&lt;br /&gt;
* il backend assume compatibilita POSIX&lt;br /&gt;
* non offre snapshot a livello storage&lt;br /&gt;
* con immagini &amp;lt;code&amp;gt;qcow2&amp;lt;/code&amp;gt; esiste il workaround degli snapshot interni al formato&lt;br /&gt;
&lt;br /&gt;
Quando scegliere &#039;&#039;&#039;ext4&#039;&#039;&#039;:&lt;br /&gt;
* vuoi il filesystem piu semplice e prevedibile&lt;br /&gt;
* l&#039;uso principale e backup, ISO, template o immagini non troppo complesse&lt;br /&gt;
* vuoi massima familiarita operativa&lt;br /&gt;
&lt;br /&gt;
Quando scegliere &#039;&#039;&#039;XFS&#039;&#039;&#039;:&lt;br /&gt;
* vuoi un filesystem robusto per grandi volumi file-based&lt;br /&gt;
* prevedi repository backup o directory storage di grandi dimensioni&lt;br /&gt;
* preferisci una soluzione nota per throughput e gestione file grandi&lt;br /&gt;
&lt;br /&gt;
Limite importante:&lt;br /&gt;
* se il tuo obiettivo principale sono snapshot e cloni storage-level delle VM, una directory pura non e la scelta migliore&lt;br /&gt;
&lt;br /&gt;
Regola pratica:&lt;br /&gt;
* &#039;&#039;&#039;ext4/XFS + dir&#039;&#039;&#039; vanno molto bene per ISO, template e backup&lt;br /&gt;
* per i dischi VM principali, usare spesso &#039;&#039;&#039;LVM-thin&#039;&#039;&#039; o &#039;&#039;&#039;ZFS&#039;&#039;&#039; e piu coerente&lt;br /&gt;
&lt;br /&gt;
=== 3. ZFS ===&lt;br /&gt;
ZFS combina filesystem e volume manager.&lt;br /&gt;
&lt;br /&gt;
Proxmox ne evidenzia vantaggi importanti:&lt;br /&gt;
* protezione da corruzione dati&lt;br /&gt;
* compressione&lt;br /&gt;
* snapshot&lt;br /&gt;
* cloni copy-on-write&lt;br /&gt;
* vari livelli RAID&lt;br /&gt;
* self-healing&lt;br /&gt;
* integrity checking continua&lt;br /&gt;
* replica asincrona&lt;br /&gt;
* gestione integrata da GUI e CLI&lt;br /&gt;
&lt;br /&gt;
Quando scegliere ZFS:&lt;br /&gt;
* vuoi integrita dati e checksum end-to-end&lt;br /&gt;
* vuoi snapshot e replica native&lt;br /&gt;
* hai abbastanza RAM&lt;br /&gt;
* puoi dare a ZFS accesso diretto ai dischi&lt;br /&gt;
&lt;br /&gt;
Attenzioni fondamentali:&lt;br /&gt;
* Proxmox raccomanda almeno &#039;&#039;&#039;8 GB&#039;&#039;&#039; di RAM per iniziare&lt;br /&gt;
* e raccomandata &#039;&#039;&#039;ECC RAM&#039;&#039;&#039; quando possibile&lt;br /&gt;
* non usare ZFS sopra controller RAID hardware con cache propria&lt;br /&gt;
* meglio HBA o controller in modalita IT&lt;br /&gt;
&lt;br /&gt;
Nota pratica importante:&lt;br /&gt;
* nelle installazioni nuove da Proxmox VE 8.1 il limite ARC viene impostato al &#039;&#039;&#039;10%&#039;&#039;&#039; della RAM fisica, con massimo &#039;&#039;&#039;16 GiB&#039;&#039;&#039;, scritto in &amp;lt;code&amp;gt;/etc/modprobe.d/zfs.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scelte RAID ZFS in installazione:&lt;br /&gt;
* &#039;&#039;&#039;RAID0&#039;&#039;&#039;: massima capacita, nessuna ridondanza&lt;br /&gt;
* &#039;&#039;&#039;RAID1&#039;&#039;&#039;: mirror, adatto a 2 dischi&lt;br /&gt;
* &#039;&#039;&#039;RAID10&#039;&#039;&#039;: buone prestazioni e ridondanza, richiede almeno 4 dischi&lt;br /&gt;
* &#039;&#039;&#039;RAIDZ-1&#039;&#039;&#039;: parita singola&lt;br /&gt;
* &#039;&#039;&#039;RAIDZ-2&#039;&#039;&#039;: parita doppia&lt;br /&gt;
* &#039;&#039;&#039;RAIDZ-3&#039;&#039;&#039;: parita tripla&lt;br /&gt;
&lt;br /&gt;
Consiglio operativo:&lt;br /&gt;
* per host piccoli con 2 dischi, il mirror ZFS e spesso la scelta piu pulita&lt;br /&gt;
* per host con tanti dischi, RAID10 o RAIDZ-2 sono in genere piu prudenziali di RAIDZ-1&lt;br /&gt;
* evitare ZFS se la RAM e molto limitata o se l&#039;hardware e gia vincolato a RAID hardware non bypassabile&lt;br /&gt;
&lt;br /&gt;
=== 4. BTRFS ===&lt;br /&gt;
BTRFS esiste nel mondo Linux come filesystem moderno con snapshot e checksum, ma in Proxmox la documentazione e la pratica operativa ruotano molto di piu attorno a &#039;&#039;&#039;LVM-thin&#039;&#039;&#039; e &#039;&#039;&#039;ZFS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Consiglio pragmatico:&lt;br /&gt;
* se ti serve una scelta stabile e ben coperta dalla documentazione Proxmox, privilegia &#039;&#039;&#039;LVM-thin&#039;&#039;&#039; o &#039;&#039;&#039;ZFS&#039;&#039;&#039;&lt;br /&gt;
* usa BTRFS solo se hai gia competenza specifica e una ragione forte per adottarlo&lt;br /&gt;
&lt;br /&gt;
== Raccomandazioni rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Host singolo piccolo o homelab semplice ===&lt;br /&gt;
Scelta consigliata:&lt;br /&gt;
* installer ISO&lt;br /&gt;
* default &#039;&#039;&#039;LVM + ext4 root + LVM-thin&#039;&#039;&#039;&lt;br /&gt;
* directory separata per ISO e backup se possibile&lt;br /&gt;
&lt;br /&gt;
=== Host singolo con priorita a integrita e snapshot ===&lt;br /&gt;
Scelta consigliata:&lt;br /&gt;
* installer ISO con &#039;&#039;&#039;ZFS mirror&#039;&#039;&#039; se hai 2 dischi&lt;br /&gt;
* ECC RAM se possibile&lt;br /&gt;
* niente RAID hardware davanti a ZFS&lt;br /&gt;
&lt;br /&gt;
=== Nodo dedicato soprattutto a backup ===&lt;br /&gt;
Scelta consigliata:&lt;br /&gt;
* directory storage su &#039;&#039;&#039;ext4&#039;&#039;&#039; o &#039;&#039;&#039;XFS&#039;&#039;&#039;&lt;br /&gt;
* evitare di mescolare senza controllo backup pesanti e dischi VM critici sullo stesso spazio piccolo&lt;br /&gt;
&lt;br /&gt;
=== Cluster o crescita futura ===&lt;br /&gt;
Considerare fin da subito:&lt;br /&gt;
* separazione rete management/storage&lt;br /&gt;
* strategia storage condiviso o replica&lt;br /&gt;
* naming coerente di nodi, bridge e datastore&lt;br /&gt;
* policy di backup e restore testato&lt;br /&gt;
&lt;br /&gt;
== Errori comuni ==&lt;br /&gt;
* usare ZFS sopra RAID hardware opaco&lt;br /&gt;
* sottostimare la RAM necessaria a host e guest&lt;br /&gt;
* riempire lo storage locale con backup, ISO e template fino a saturazione&lt;br /&gt;
* scegliere directory storage pensando di avere snapshot storage-level nativi&lt;br /&gt;
* non documentare bridge, VLAN, datastore e layout dischi&lt;br /&gt;
* creare VM critiche prima di aver validato backup e ripristino&lt;br /&gt;
&lt;br /&gt;
== Verifiche utili su host Proxmox ==&lt;br /&gt;
&lt;br /&gt;
=== Versione e stato generale ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pveversion -v&lt;br /&gt;
uptime&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
bridge link&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage LVM ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
pvs&lt;br /&gt;
vgs&lt;br /&gt;
lvs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Proxmox ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pvesm status&lt;br /&gt;
cat /etc/pve/storage.cfg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ZFS ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
zpool status&lt;br /&gt;
zfs list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fonti ufficiali ==&lt;br /&gt;
* [https://pve.proxmox.com/pve-docs-8/chapter-pve-installation.html Installing Proxmox VE]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Quick_installation Quick installation]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Automated_Installation Automated Installation]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Logical_Volume_Manager_%28LVM%29 Logical Volume Manager (LVM)]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Storage Storage]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Storage%3A_Directory Storage: Directory]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/ZFS_on_Linux ZFS on Linux]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Installation%3A_Tips_and_Tricks Installation: Tips and Tricks]&lt;br /&gt;
&lt;br /&gt;
== Note d&#039;uso ==&lt;br /&gt;
* Separare sempre i problemi di orchestrazione da quelli di singola VM.&lt;br /&gt;
* Non saturare lo storage locale con immagini, backup e template senza controllo dello spazio.&lt;br /&gt;
* Documentare hostname host, datastore coinvolto e VM interessata prima di aprire ticket o incidente.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Virtualizzatori&amp;diff=642</id>
		<title>Tips Virtualizzatori</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Virtualizzatori&amp;diff=642"/>
		<updated>2026-03-29T20:24:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: Espansione sezione Proxmox VE con installazione e consigli filesystem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Breve raccolta di riferimenti sulla virtualizzazione usati nel contesto GazziNet. La pagina serve come indice rapido per verifiche host, risorse e accesso alle piattaforme dedicate.&lt;br /&gt;
&lt;br /&gt;
== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Risorse host ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
lscpu&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e bridge ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
bridge link&lt;br /&gt;
ss -tulpn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage e volumi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
pvs&lt;br /&gt;
vgs&lt;br /&gt;
lvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting operativo ==&lt;br /&gt;
* Verificare sempre se il problema e sull&#039;host, sulla VM o sullo storage sottostante.&lt;br /&gt;
* Prima di agire, annotare uso CPU, RAM, spazio, stato rete e saturazione I/O.&lt;br /&gt;
* Controllare eventuali snapshot, lock, backup in corso o contenitori storage pieni.&lt;br /&gt;
&lt;br /&gt;
== Piattaforme ==&lt;br /&gt;
* [[PROXMOX]]&lt;br /&gt;
&lt;br /&gt;
== Proxmox VE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proxmox VE&#039;&#039;&#039; e una piattaforma di virtualizzazione basata su Debian che integra:&lt;br /&gt;
* &#039;&#039;&#039;KVM&#039;&#039;&#039; per macchine virtuali complete&lt;br /&gt;
* &#039;&#039;&#039;LXC&#039;&#039;&#039; per container Linux&lt;br /&gt;
* gestione storage locale e condiviso&lt;br /&gt;
* clustering, migrazione, backup e replica&lt;br /&gt;
* interfaccia web e CLI native&lt;br /&gt;
&lt;br /&gt;
=== Quando usarlo ===&lt;br /&gt;
Ha senso usare Proxmox VE quando:&lt;br /&gt;
* vuoi centralizzare gestione di VM e container&lt;br /&gt;
* ti servono snapshot, backup e restore in modo semplice&lt;br /&gt;
* vuoi crescere da host singolo a cluster&lt;br /&gt;
* vuoi usare storage locali o condivisi con un&#039;interfaccia unificata&lt;br /&gt;
&lt;br /&gt;
=== Requisiti minimi e logica di sizing ===&lt;br /&gt;
Per valutazione o lab:&lt;br /&gt;
* CPU 64 bit con supporto Intel VT/AMD-V&lt;br /&gt;
* almeno 16 GiB di spazio disco per l&#039;host, oltre allo spazio per guest&lt;br /&gt;
* almeno una NIC&lt;br /&gt;
&lt;br /&gt;
Per produzione:&lt;br /&gt;
* privilegiare hardware server stabile&lt;br /&gt;
* prevedere RAM in base ai guest, non solo all&#039;host&lt;br /&gt;
* separare se possibile traffico management, storage e migration&lt;br /&gt;
* valutare ECC RAM soprattutto se si usa ZFS&lt;br /&gt;
&lt;br /&gt;
== Installazione ==&lt;br /&gt;
&lt;br /&gt;
=== Metodo consigliato: ISO ufficiale ===&lt;br /&gt;
L&#039;installazione da ISO e il metodo raccomandato da Proxmox per utenti nuovi ed esistenti.&lt;br /&gt;
&lt;br /&gt;
Flusso tipico:&lt;br /&gt;
# scaricare la ISO ufficiale&lt;br /&gt;
# preparare la chiavetta di installazione&lt;br /&gt;
# avviare il server dalla ISO&lt;br /&gt;
# scegliere il disco o i dischi di destinazione&lt;br /&gt;
# impostare filesystem/root storage&lt;br /&gt;
# configurare hostname, password root, email e rete&lt;br /&gt;
# completare installazione e riavviare&lt;br /&gt;
&lt;br /&gt;
Durante il setup l&#039;installer:&lt;br /&gt;
* partiziona i dischi locali&lt;br /&gt;
* applica configurazioni base come lingua, timezone e rete&lt;br /&gt;
* installa Debian e i pacchetti Proxmox VE necessari&lt;br /&gt;
&lt;br /&gt;
=== Metodo alternativo: installazione su Debian ===&lt;br /&gt;
Proxmox VE puo anche essere installato sopra un sistema Debian esistente, ma questa via e consigliata solo a utenti avanzati.&lt;br /&gt;
&lt;br /&gt;
Ha senso usarla quando:&lt;br /&gt;
* hai gia un&#039;immagine Debian standard gestita da automazione&lt;br /&gt;
* vuoi maggiore controllo iniziale sul partizionamento&lt;br /&gt;
* vuoi integrare l&#039;host in procedure di bootstrap gia esistenti&lt;br /&gt;
&lt;br /&gt;
Rischi tipici:&lt;br /&gt;
* repository sbagliati o incompleti&lt;br /&gt;
* pacchetti non allineati&lt;br /&gt;
* rete e storage meno prevedibili rispetto all&#039;installer dedicato&lt;br /&gt;
&lt;br /&gt;
=== Installazione automatizzata ===&lt;br /&gt;
Proxmox documenta anche l&#039;&#039;&#039;&#039;Automated Installation&#039;&#039;&#039; per deployment unattended.&lt;br /&gt;
&lt;br /&gt;
Serve quando:&lt;br /&gt;
* devi installare piu host bare metal in modo coerente&lt;br /&gt;
* vuoi preparare una ISO con answer file&lt;br /&gt;
* vuoi demandare il post-config a strumenti come Ansible o simili&lt;br /&gt;
&lt;br /&gt;
=== Prime attivita dopo l&#039;installazione ===&lt;br /&gt;
Checklist pratica iniziale:&lt;br /&gt;
* verificare data/ora e DNS&lt;br /&gt;
* applicare aggiornamenti&lt;br /&gt;
* controllare bridge di rete&lt;br /&gt;
* controllare storage locale configurato dall&#039;installer&lt;br /&gt;
* definire repository corretti in base a subscription o no-subscription&lt;br /&gt;
* configurare backup prima di creare guest critici&lt;br /&gt;
* registrare hostname, IP management, storage e note operative&lt;br /&gt;
&lt;br /&gt;
Comandi rapidi:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pveversion -v&lt;br /&gt;
ip a&lt;br /&gt;
bridge link&lt;br /&gt;
pvesm status&lt;br /&gt;
lsblk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filesystem e storage: come scegliere ==&lt;br /&gt;
&lt;br /&gt;
La scelta corretta dipende da:&lt;br /&gt;
* host singolo o cluster&lt;br /&gt;
* storage locale o condiviso&lt;br /&gt;
* bisogno di snapshot/cloni&lt;br /&gt;
* budget RAM&lt;br /&gt;
* necessita di integrita dati e replica&lt;br /&gt;
* carico prevalente: VM, container, ISO, template, backup&lt;br /&gt;
&lt;br /&gt;
=== 1. Setup predefinito LVM + LVM-thin ===&lt;br /&gt;
L&#039;installer attuale usa come default &#039;&#039;&#039;LVM&#039;&#039;&#039; sul disco locale.&lt;br /&gt;
&lt;br /&gt;
Schema tipico:&lt;br /&gt;
* volume group &amp;lt;code&amp;gt;pve&amp;lt;/code&amp;gt;&lt;br /&gt;
* logical volume &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; formattato &#039;&#039;&#039;ext4&#039;&#039;&#039; per il sistema operativo&lt;br /&gt;
* logical volume &amp;lt;code&amp;gt;swap&amp;lt;/code&amp;gt;&lt;br /&gt;
* logical volume &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; come &#039;&#039;&#039;LVM-thin&#039;&#039;&#039; per dischi VM&lt;br /&gt;
&lt;br /&gt;
Vantaggi:&lt;br /&gt;
* semplice&lt;br /&gt;
* buon default per host singolo&lt;br /&gt;
* snapshot e clone efficienti sul thin pool&lt;br /&gt;
* basso overhead RAM rispetto a ZFS&lt;br /&gt;
&lt;br /&gt;
Limiti:&lt;br /&gt;
* non condiviso tra nodi&lt;br /&gt;
* meno funzioni di integrita rispetto a ZFS&lt;br /&gt;
* meno flessibile per storage file-level generici rispetto a una directory dedicata&lt;br /&gt;
&lt;br /&gt;
Consigli pratici:&lt;br /&gt;
* buona scelta per host piccoli o medi con storage locale&lt;br /&gt;
* adatto quando vuoi partire in fretta senza complessita extra&lt;br /&gt;
* tenere backup e ISO possibilmente separati dal thin pool se il disco e piccolo&lt;br /&gt;
&lt;br /&gt;
=== 2. Directory storage su ext4 o XFS ===&lt;br /&gt;
Lo storage di tipo &#039;&#039;&#039;Directory&#039;&#039;&#039; usa una directory POSIX su filesystem Linux standard.&lt;br /&gt;
&lt;br /&gt;
Puoi usarlo per:&lt;br /&gt;
* immagini VM&lt;br /&gt;
* container&lt;br /&gt;
* template&lt;br /&gt;
* ISO&lt;br /&gt;
* backup&lt;br /&gt;
&lt;br /&gt;
Proxmox segnala che:&lt;br /&gt;
* una directory puo essere locale oppure un mount standard Linux&lt;br /&gt;
* il backend assume compatibilita POSIX&lt;br /&gt;
* non offre snapshot a livello storage&lt;br /&gt;
* con immagini &amp;lt;code&amp;gt;qcow2&amp;lt;/code&amp;gt; esiste il workaround degli snapshot interni al formato&lt;br /&gt;
&lt;br /&gt;
Quando scegliere &#039;&#039;&#039;ext4&#039;&#039;&#039;:&lt;br /&gt;
* vuoi il filesystem piu semplice e prevedibile&lt;br /&gt;
* l&#039;uso principale e backup, ISO, template o immagini non troppo complesse&lt;br /&gt;
* vuoi massima familiarita operativa&lt;br /&gt;
&lt;br /&gt;
Quando scegliere &#039;&#039;&#039;XFS&#039;&#039;&#039;:&lt;br /&gt;
* vuoi un filesystem robusto per grandi volumi file-based&lt;br /&gt;
* prevedi repository backup o directory storage di grandi dimensioni&lt;br /&gt;
* preferisci una soluzione nota per throughput e gestione file grandi&lt;br /&gt;
&lt;br /&gt;
Limite importante:&lt;br /&gt;
* se il tuo obiettivo principale sono snapshot e cloni storage-level delle VM, una directory pura non e la scelta migliore&lt;br /&gt;
&lt;br /&gt;
Regola pratica:&lt;br /&gt;
* &#039;&#039;&#039;ext4/XFS + dir&#039;&#039;&#039; vanno molto bene per ISO, template e backup&lt;br /&gt;
* per i dischi VM principali, usare spesso &#039;&#039;&#039;LVM-thin&#039;&#039;&#039; o &#039;&#039;&#039;ZFS&#039;&#039;&#039; e piu coerente&lt;br /&gt;
&lt;br /&gt;
=== 3. ZFS ===&lt;br /&gt;
ZFS combina filesystem e volume manager.&lt;br /&gt;
&lt;br /&gt;
Proxmox ne evidenzia vantaggi importanti:&lt;br /&gt;
* protezione da corruzione dati&lt;br /&gt;
* compressione&lt;br /&gt;
* snapshot&lt;br /&gt;
* cloni copy-on-write&lt;br /&gt;
* vari livelli RAID&lt;br /&gt;
* self-healing&lt;br /&gt;
* integrity checking continua&lt;br /&gt;
* replica asincrona&lt;br /&gt;
* gestione integrata da GUI e CLI&lt;br /&gt;
&lt;br /&gt;
Quando scegliere ZFS:&lt;br /&gt;
* vuoi integrita dati e checksum end-to-end&lt;br /&gt;
* vuoi snapshot e replica native&lt;br /&gt;
* hai abbastanza RAM&lt;br /&gt;
* puoi dare a ZFS accesso diretto ai dischi&lt;br /&gt;
&lt;br /&gt;
Attenzioni fondamentali:&lt;br /&gt;
* Proxmox raccomanda almeno &#039;&#039;&#039;8 GB&#039;&#039;&#039; di RAM per iniziare&lt;br /&gt;
* e raccomandata &#039;&#039;&#039;ECC RAM&#039;&#039;&#039; quando possibile&lt;br /&gt;
* non usare ZFS sopra controller RAID hardware con cache propria&lt;br /&gt;
* meglio HBA o controller in modalita IT&lt;br /&gt;
&lt;br /&gt;
Nota pratica importante:&lt;br /&gt;
* nelle installazioni nuove da Proxmox VE 8.1 il limite ARC viene impostato al &#039;&#039;&#039;10%&#039;&#039;&#039; della RAM fisica, con massimo &#039;&#039;&#039;16 GiB&#039;&#039;&#039;, scritto in &amp;lt;code&amp;gt;/etc/modprobe.d/zfs.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scelte RAID ZFS in installazione:&lt;br /&gt;
* &#039;&#039;&#039;RAID0&#039;&#039;&#039;: massima capacita, nessuna ridondanza&lt;br /&gt;
* &#039;&#039;&#039;RAID1&#039;&#039;&#039;: mirror, adatto a 2 dischi&lt;br /&gt;
* &#039;&#039;&#039;RAID10&#039;&#039;&#039;: buone prestazioni e ridondanza, richiede almeno 4 dischi&lt;br /&gt;
* &#039;&#039;&#039;RAIDZ-1&#039;&#039;&#039;: parita singola&lt;br /&gt;
* &#039;&#039;&#039;RAIDZ-2&#039;&#039;&#039;: parita doppia&lt;br /&gt;
* &#039;&#039;&#039;RAIDZ-3&#039;&#039;&#039;: parita tripla&lt;br /&gt;
&lt;br /&gt;
Consiglio operativo:&lt;br /&gt;
* per host piccoli con 2 dischi, il mirror ZFS e spesso la scelta piu pulita&lt;br /&gt;
* per host con tanti dischi, RAID10 o RAIDZ-2 sono in genere piu prudenziali di RAIDZ-1&lt;br /&gt;
* evitare ZFS se la RAM e molto limitata o se l&#039;hardware e gia vincolato a RAID hardware non bypassabile&lt;br /&gt;
&lt;br /&gt;
=== 4. BTRFS ===&lt;br /&gt;
BTRFS esiste nel mondo Linux come filesystem moderno con snapshot e checksum, ma in Proxmox la documentazione e la pratica operativa ruotano molto di piu attorno a &#039;&#039;&#039;LVM-thin&#039;&#039;&#039; e &#039;&#039;&#039;ZFS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Consiglio pragmatico:&lt;br /&gt;
* se ti serve una scelta stabile e ben coperta dalla documentazione Proxmox, privilegia &#039;&#039;&#039;LVM-thin&#039;&#039;&#039; o &#039;&#039;&#039;ZFS&#039;&#039;&#039;&lt;br /&gt;
* usa BTRFS solo se hai gia competenza specifica e una ragione forte per adottarlo&lt;br /&gt;
&lt;br /&gt;
== Raccomandazioni rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Host singolo piccolo o homelab semplice ===&lt;br /&gt;
Scelta consigliata:&lt;br /&gt;
* installer ISO&lt;br /&gt;
* default &#039;&#039;&#039;LVM + ext4 root + LVM-thin&#039;&#039;&#039;&lt;br /&gt;
* directory separata per ISO e backup se possibile&lt;br /&gt;
&lt;br /&gt;
=== Host singolo con priorita a integrita e snapshot ===&lt;br /&gt;
Scelta consigliata:&lt;br /&gt;
* installer ISO con &#039;&#039;&#039;ZFS mirror&#039;&#039;&#039; se hai 2 dischi&lt;br /&gt;
* ECC RAM se possibile&lt;br /&gt;
* niente RAID hardware davanti a ZFS&lt;br /&gt;
&lt;br /&gt;
=== Nodo dedicato soprattutto a backup ===&lt;br /&gt;
Scelta consigliata:&lt;br /&gt;
* directory storage su &#039;&#039;&#039;ext4&#039;&#039;&#039; o &#039;&#039;&#039;XFS&#039;&#039;&#039;&lt;br /&gt;
* evitare di mescolare senza controllo backup pesanti e dischi VM critici sullo stesso spazio piccolo&lt;br /&gt;
&lt;br /&gt;
=== Cluster o crescita futura ===&lt;br /&gt;
Considerare fin da subito:&lt;br /&gt;
* separazione rete management/storage&lt;br /&gt;
* strategia storage condiviso o replica&lt;br /&gt;
* naming coerente di nodi, bridge e datastore&lt;br /&gt;
* policy di backup e restore testato&lt;br /&gt;
&lt;br /&gt;
== Errori comuni ==&lt;br /&gt;
* usare ZFS sopra RAID hardware opaco&lt;br /&gt;
* sottostimare la RAM necessaria a host e guest&lt;br /&gt;
* riempire lo storage locale con backup, ISO e template fino a saturazione&lt;br /&gt;
* scegliere directory storage pensando di avere snapshot storage-level nativi&lt;br /&gt;
* non documentare bridge, VLAN, datastore e layout dischi&lt;br /&gt;
* creare VM critiche prima di aver validato backup e ripristino&lt;br /&gt;
&lt;br /&gt;
== Verifiche utili su host Proxmox ==&lt;br /&gt;
&lt;br /&gt;
=== Versione e stato generale ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pveversion -v&lt;br /&gt;
uptime&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
bridge link&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage LVM ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
pvs&lt;br /&gt;
vgs&lt;br /&gt;
lvs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Proxmox ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pvesm status&lt;br /&gt;
cat /etc/pve/storage.cfg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ZFS ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
zpool status&lt;br /&gt;
zfs list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fonti ufficiali ==&lt;br /&gt;
* [https://pve.proxmox.com/pve-docs-8/chapter-pve-installation.html Installing Proxmox VE]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Quick_installation Quick installation]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Automated_Installation Automated Installation]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Logical_Volume_Manager_%28LVM%29 Logical Volume Manager (LVM)]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Storage Storage]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Storage%3A_Directory Storage: Directory]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/ZFS_on_Linux ZFS on Linux]&lt;br /&gt;
* [https://pve.proxmox.com/wiki/Installation%3A_Tips_and_Tricks Installation: Tips and Tricks]&lt;br /&gt;
&lt;br /&gt;
== Note d&#039;uso ==&lt;br /&gt;
* Separare sempre i problemi di orchestrazione da quelli di singola VM.&lt;br /&gt;
* Non saturare lo storage locale con immagini, backup e template senza controllo dello spazio.&lt;br /&gt;
* Documentare hostname host, datastore coinvolto e VM interessata prima di aprire ticket o incidente.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Automation&amp;diff=627</id>
		<title>Tips Automation</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Automation&amp;diff=627"/>
		<updated>2026-03-28T23:08:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiunta sezione Pyinfra con link alle pagine correlate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Tips Automation =&lt;br /&gt;
&lt;br /&gt;
Breve raccolta di riferimenti operativi su automazione, scripting e workflow ripetibili usati nel contesto GazziNet.&lt;br /&gt;
&lt;br /&gt;
== Obiettivi tipici ==&lt;br /&gt;
* ridurre task manuali ripetitivi&lt;br /&gt;
* standardizzare controlli e verifiche&lt;br /&gt;
* velocizzare raccolta dati, report e aggiornamenti&lt;br /&gt;
* diminuire errori operativi su procedure frequenti&lt;br /&gt;
&lt;br /&gt;
== Approcci comuni ==&lt;br /&gt;
&lt;br /&gt;
=== Shell e script rapidi ===&lt;br /&gt;
Adatti a task semplici, verifiche host, raccolta log, sincronizzazioni e controlli periodici.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash script.sh&lt;br /&gt;
crontab -e&lt;br /&gt;
journalctl -u nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
Utile quando serve lavorare con API, parsing strutturato, generazione di contenuti, file JSON, flussi condizionali o automazioni piu ricche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python3 script.py&lt;br /&gt;
python3 -m venv .venv&lt;br /&gt;
pip install -r requirements.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Automazione schedulata ===&lt;br /&gt;
Per job periodici usare `cron`, systemd timer o servizi dedicati, evitando task manuali ricorrenti.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
crontab -l&lt;br /&gt;
systemctl list-timers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pyinfra ===&lt;br /&gt;
Pyinfra e una alternativa open source ad Ansible basata su Python, utile per inventory, deploy e configurazioni ripetibili.&lt;br /&gt;
&lt;br /&gt;
* [[Pyinfra]]&lt;br /&gt;
* [[Confronto Ansible vs Pyinfra]]&lt;br /&gt;
* [[Esempi Pyinfra]]&lt;br /&gt;
* [[Installazione Pyinfra su Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Casi d&#039;uso pratici ==&lt;br /&gt;
* controlli periodici su siti, servizi o endpoint&lt;br /&gt;
* generazione e pubblicazione di contenuti&lt;br /&gt;
* raccolta inventario hardware o software&lt;br /&gt;
* aggiornamento di pagine wiki o sistemi documentali&lt;br /&gt;
* export dati da API e report automatici&lt;br /&gt;
&lt;br /&gt;
== Sistemi automatici ==&lt;br /&gt;
* [[Tips Automation/Apache Airflow]]&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
* separare credenziali, codice e log&lt;br /&gt;
* usare file `.env` o meccanismi equivalenti per configurazione e segreti&lt;br /&gt;
* tenere traccia di input, output e stato del job&lt;br /&gt;
* preferire automazioni idempotenti, o comunque sicure da rilanciare&lt;br /&gt;
* aggiungere sempre una verifica finale del risultato&lt;br /&gt;
&lt;br /&gt;
== Riferimenti collegati ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Sviluppo]]&lt;br /&gt;
* [[Codex per struttura wiki e pubblicazione articoli]]&lt;br /&gt;
&lt;br /&gt;
== Nota finale ==&lt;br /&gt;
L&#039;automazione utile non e quella piu complessa, ma quella che riduce lavoro ripetitivo, mantiene il controllo umano e lascia un risultato verificabile.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Installazione_Pyinfra_su_Fedora&amp;diff=626</id>
		<title>Installazione Pyinfra su Fedora</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Installazione_Pyinfra_su_Fedora&amp;diff=626"/>
		<updated>2026-03-28T23:06:21Z</updated>

		<summary type="html">&lt;p&gt;Admin: Creazione pagina informativa su pyinfra&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installazione Pyinfra su Fedora =&lt;br /&gt;
&lt;br /&gt;
Guida pratica per installare &#039;&#039;&#039;pyinfra&#039;&#039;&#039; su Fedora in modo pulito.&lt;br /&gt;
&lt;br /&gt;
== Requisiti ==&lt;br /&gt;
Secondo la documentazione ufficiale:&lt;br /&gt;
* Python 3.9 o superiore&lt;br /&gt;
* installazione come utente normale, non con `sudo`&lt;br /&gt;
* ambiente isolato consigliato&lt;br /&gt;
&lt;br /&gt;
== Verifica Python ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python3 --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Metodo consigliato: uv ==&lt;br /&gt;
La documentazione ufficiale indica `uv` come metodo consigliato.&lt;br /&gt;
&lt;br /&gt;
Installare `uv` se non presente e poi installare pyinfra come tool:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uv tool install pyinfra&lt;br /&gt;
pyinfra --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alternativa: pipx ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pipx install pyinfra&lt;br /&gt;
pyinfra --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alternativa: virtual environment ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python3 -m venv ~/venv/pyinfra&lt;br /&gt;
source ~/venv/pyinfra/bin/activate&lt;br /&gt;
pip install pyinfra&lt;br /&gt;
pyinfra --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verifica rapida ==&lt;br /&gt;
Eseguire un test locale:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pyinfra @local exec -- echo &amp;quot;hello world&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verifica remota ==&lt;br /&gt;
Test base via SSH:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pyinfra my-server.net exec -- uptime&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Caso Fedora con pipx ==&lt;br /&gt;
Se `pipx` non e presente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo dnf install -y pipx&lt;br /&gt;
pipx ensurepath&lt;br /&gt;
pipx install pyinfra&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Caso Fedora con uv ==&lt;br /&gt;
Se `uv` non e presente, installarlo secondo le istruzioni ufficiali del progetto e poi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uv tool install pyinfra&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Consigli pratici ==&lt;br /&gt;
* non installare pyinfra come root&lt;br /&gt;
* preferire `uv` o `pipx` per tenere pulito il sistema&lt;br /&gt;
* usare `--dry` per i primi test&lt;br /&gt;
* tenere inventory e deploy in una repository Git&lt;br /&gt;
&lt;br /&gt;
== Primo mini deploy ==&lt;br /&gt;
Inventory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my_hosts = [&amp;quot;localhost&amp;quot;]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deploy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from pyinfra.operations import server&lt;br /&gt;
&lt;br /&gt;
server.shell(&lt;br /&gt;
    name=&amp;quot;Test command&amp;quot;,&lt;br /&gt;
    commands=[&amp;quot;hostname&amp;quot;],&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esecuzione:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pyinfra inventory.py deploy.py --dry&lt;br /&gt;
pyinfra inventory.py deploy.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Link ufficiali ==&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/install.html Installazione]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/getting-started.html Getting Started]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/ Installation Docs Home]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Esempi_Pyinfra&amp;diff=625</id>
		<title>Esempi Pyinfra</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Esempi_Pyinfra&amp;diff=625"/>
		<updated>2026-03-28T23:06:21Z</updated>

		<summary type="html">&lt;p&gt;Admin: Creazione pagina informativa su pyinfra&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Esempi Pyinfra =&lt;br /&gt;
&lt;br /&gt;
Pagina operativa con esempi minimi e riusabili per iniziare a usare &#039;&#039;&#039;pyinfra&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Struttura minima ==&lt;br /&gt;
Esempio di file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
inventory.py&lt;br /&gt;
deploy.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inventory semplice ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
web_servers = [&lt;br /&gt;
    &amp;quot;web-01.example.net&amp;quot;,&lt;br /&gt;
    &amp;quot;web-02.example.net&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
db_servers = [&lt;br /&gt;
    (&amp;quot;db-01.example.net&amp;quot;, {&amp;quot;install_postgres&amp;quot;: True}),&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Deploy semplice ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from pyinfra.operations import apt, server&lt;br /&gt;
&lt;br /&gt;
apt.packages(&lt;br /&gt;
    name=&amp;quot;Install packages&amp;quot;,&lt;br /&gt;
    packages=[&amp;quot;vim&amp;quot;, &amp;quot;curl&amp;quot;],&lt;br /&gt;
    update=True,&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
server.shell(&lt;br /&gt;
    name=&amp;quot;Show uptime&amp;quot;,&lt;br /&gt;
    commands=[&amp;quot;uptime&amp;quot;],&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esecuzione:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pyinfra inventory.py deploy.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esempio con gruppi ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from pyinfra import host, local&lt;br /&gt;
from pyinfra.operations import server&lt;br /&gt;
&lt;br /&gt;
if &#039;web_servers&#039; in host.groups:&lt;br /&gt;
    local.include(&#039;tasks/web.py&#039;)&lt;br /&gt;
&lt;br /&gt;
if &#039;db_servers&#039; in host.groups:&lt;br /&gt;
    local.include(&#039;tasks/database.py&#039;)&lt;br /&gt;
&lt;br /&gt;
server.shell(&lt;br /&gt;
    name=&amp;quot;Run everywhere&amp;quot;,&lt;br /&gt;
    commands=[&amp;quot;hostname&amp;quot;],&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esempio con dati host ==&lt;br /&gt;
Inventory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app_servers = [&lt;br /&gt;
    (&amp;quot;app-01.example.net&amp;quot;, {&amp;quot;install_nginx&amp;quot;: True}),&lt;br /&gt;
    (&amp;quot;app-02.example.net&amp;quot;, {&amp;quot;install_nginx&amp;quot;: False}),&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deploy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from pyinfra import host&lt;br /&gt;
from pyinfra.operations import apt&lt;br /&gt;
&lt;br /&gt;
if host.data.get(&amp;quot;install_nginx&amp;quot;):&lt;br /&gt;
    apt.packages(&lt;br /&gt;
        name=&amp;quot;Install nginx&amp;quot;,&lt;br /&gt;
        packages=[&amp;quot;nginx&amp;quot;],&lt;br /&gt;
        update=True,&lt;br /&gt;
    )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esempio local machine ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pyinfra @local exec -- echo &amp;quot;hello world&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esempio su container Docker ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pyinfra @docker/ubuntu:22.04 exec -- uname -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esempio installazione file ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from pyinfra.operations import files&lt;br /&gt;
&lt;br /&gt;
files.file(&lt;br /&gt;
    name=&amp;quot;Ensure app log exists&amp;quot;,&lt;br /&gt;
    path=&amp;quot;/var/log/app.log&amp;quot;,&lt;br /&gt;
    user=&amp;quot;app&amp;quot;,&lt;br /&gt;
    group=&amp;quot;app&amp;quot;,&lt;br /&gt;
    mode=&amp;quot;644&amp;quot;,&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esempio service management ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from pyinfra.operations import systemd&lt;br /&gt;
&lt;br /&gt;
systemd.service(&lt;br /&gt;
    name=&amp;quot;Ensure nginx is running&amp;quot;,&lt;br /&gt;
    service=&amp;quot;nginx&amp;quot;,&lt;br /&gt;
    running=True,&lt;br /&gt;
    enabled=True,&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esempio dry-run ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pyinfra inventory.py deploy.py --dry&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Note pratiche ==&lt;br /&gt;
* tenere `inventory.py` e `deploy.py` in Git&lt;br /&gt;
* usare `host.data` per differenziare host simili&lt;br /&gt;
* separare task complessi in file inclusi&lt;br /&gt;
* usare `--dry` prima dei deploy reali&lt;br /&gt;
&lt;br /&gt;
== Link ufficiali ==&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/getting-started.html Getting Started]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/inventory-data.html Inventory &amp;amp; Data]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/examples/groups_roles.html Groups &amp;amp; Roles]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/using-operations.html Using Operations]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Confronto_Ansible_vs_Pyinfra&amp;diff=624</id>
		<title>Confronto Ansible vs Pyinfra</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Confronto_Ansible_vs_Pyinfra&amp;diff=624"/>
		<updated>2026-03-28T23:06:21Z</updated>

		<summary type="html">&lt;p&gt;Admin: Creazione pagina informativa su pyinfra&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Confronto Ansible vs Pyinfra =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ansible&#039;&#039;&#039; e &#039;&#039;&#039;Pyinfra&#039;&#039;&#039; risolvono problemi simili: automazione, provisioning, configurazione e deploy di sistemi remoti. La differenza principale e nel modello operativo e nel linguaggio usato per descrivere i deploy.&lt;br /&gt;
&lt;br /&gt;
== Differenza principale ==&lt;br /&gt;
* &#039;&#039;&#039;Ansible&#039;&#039;&#039;: punta soprattutto su playbook in YAML.&lt;br /&gt;
* &#039;&#039;&#039;Pyinfra&#039;&#039;&#039;: usa Python per inventory, logica e deploy.&lt;br /&gt;
&lt;br /&gt;
== Modello mentale ==&lt;br /&gt;
=== Ansible ===&lt;br /&gt;
* playbook&lt;br /&gt;
* ruoli&lt;br /&gt;
* inventory&lt;br /&gt;
* task dichiarativi in YAML&lt;br /&gt;
* moduli richiamati da task&lt;br /&gt;
&lt;br /&gt;
=== Pyinfra ===&lt;br /&gt;
* inventory Python&lt;br /&gt;
* operations Python&lt;br /&gt;
* dati host e gruppi&lt;br /&gt;
* logica direttamente nel linguaggio&lt;br /&gt;
* stato desiderato espresso tramite operations&lt;br /&gt;
&lt;br /&gt;
== Vantaggi di Ansible ==&lt;br /&gt;
* molto diffuso&lt;br /&gt;
* enorme ecosistema di ruoli e moduli&lt;br /&gt;
* YAML spesso e piu leggibile per team operations puri&lt;br /&gt;
* documentazione e community molto ampie&lt;br /&gt;
&lt;br /&gt;
== Vantaggi di Pyinfra ==&lt;br /&gt;
* meno attrito per chi lavora gia in Python&lt;br /&gt;
* condizioni, riuso e composizione piu naturali&lt;br /&gt;
* ottimo sia per comandi ad-hoc sia per deploy versionati&lt;br /&gt;
* inventory e dati molto flessibili&lt;br /&gt;
* puo risultare piu pulito quando la logica supera i limiti pratici del solo YAML&lt;br /&gt;
&lt;br /&gt;
== Svantaggi di Ansible ==&lt;br /&gt;
* quando la logica cresce, i playbook possono diventare verbosi&lt;br /&gt;
* spesso si finisce per spostare logica in template, plugin o script esterni&lt;br /&gt;
* debugging e riuso possono diventare piu dispersi&lt;br /&gt;
&lt;br /&gt;
== Svantaggi di Pyinfra ==&lt;br /&gt;
* richiede piu confidenza con Python&lt;br /&gt;
* ecosistema meno vasto di Ansible&lt;br /&gt;
* alcuni team preferiscono separare nettamente codice e automazione&lt;br /&gt;
&lt;br /&gt;
== Stato desiderato ==&lt;br /&gt;
Entrambi supportano un approccio a stato desiderato.&lt;br /&gt;
&lt;br /&gt;
In pyinfra, secondo la documentazione ufficiale, le operations definiscono lo stato richiesto e il tool applica modifiche solo quando necessarie dopo aver verificato la situazione reale del target.&lt;br /&gt;
&lt;br /&gt;
== Esecuzione ==&lt;br /&gt;
Secondo la documentazione ufficiale di pyinfra, il tool prepara l&#039;ordine delle operations e poi esegue ciascuna operation in parallelo sui target pertinenti.&lt;br /&gt;
&lt;br /&gt;
Questo significa che l&#039;ordine logico del deploy resta definito, ma l&#039;esecuzione sui target puo essere efficiente.&lt;br /&gt;
&lt;br /&gt;
== Quando scegliere Ansible ==&lt;br /&gt;
* team gia standardizzato su YAML&lt;br /&gt;
* bisogno di ruoli gia pronti e collaudati&lt;br /&gt;
* team operations con poca voglia di scrivere Python&lt;br /&gt;
* ambienti enterprise dove Ansible e gia lo standard interno&lt;br /&gt;
&lt;br /&gt;
== Quando scegliere Pyinfra ==&lt;br /&gt;
* team tecnico che usa gia Python ogni giorno&lt;br /&gt;
* homelab e sysadmin che vogliono logica piu espressiva&lt;br /&gt;
* deploy dove condizioni, dati e riuso sono importanti&lt;br /&gt;
* ambienti piccoli o medi dove si preferisce meno boilerplate&lt;br /&gt;
&lt;br /&gt;
== Conclusione pratica ==&lt;br /&gt;
* &#039;&#039;&#039;Scegli Ansible&#039;&#039;&#039; se vuoi massima diffusione, standard di mercato e playbook leggibili da team molto eterogenei.&lt;br /&gt;
* &#039;&#039;&#039;Scegli Pyinfra&#039;&#039;&#039; se vuoi automazione piu programmabile, riuso in Python e meno attrito quando la logica cresce.&lt;br /&gt;
&lt;br /&gt;
== Link ufficiali ==&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/getting-started.html pyinfra Getting Started]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/deploy-process.html pyinfra How it Works]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/inventory-data.html pyinfra Inventory &amp;amp; Data]&lt;br /&gt;
* [https://docs.ansible.com/ansible/latest/getting_started/index.html Ansible Getting Started]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Pyinfra&amp;diff=623</id>
		<title>Pyinfra</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Pyinfra&amp;diff=623"/>
		<updated>2026-03-28T23:04:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: Creazione pagina introduttiva su pyinfra con esempi e link ufficiali&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Pyinfra =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pyinfra&#039;&#039;&#039; e uno strumento open source di automazione e deploy infrastrutturale scritto in Python. Può essere usato sia per comandi ad-hoc sia per deploy ripetibili definiti in file Python versionabili in Git.&lt;br /&gt;
&lt;br /&gt;
== Concetto base ==&lt;br /&gt;
Pyinfra lavora con due elementi principali:&lt;br /&gt;
* &#039;&#039;&#039;Inventory&#039;&#039;&#039;: host, gruppi e dati associati agli host.&lt;br /&gt;
* &#039;&#039;&#039;Operations&#039;&#039;&#039;: stato desiderato o comandi da applicare ai target.&lt;br /&gt;
&lt;br /&gt;
L&#039;approccio e vicino ad Ansible sul piano operativo, ma invece di descrivere i deploy soprattutto in YAML, pyinfra usa Python.&lt;br /&gt;
&lt;br /&gt;
== Come funziona ==&lt;br /&gt;
Secondo la documentazione ufficiale, l&#039;esecuzione avviene in cinque fasi:&lt;br /&gt;
# lettura di inventory e data&lt;br /&gt;
# connessione ai target&lt;br /&gt;
# preparazione con rilevamento cambiamenti e ordine operazioni&lt;br /&gt;
# esecuzione delle modifiche&lt;br /&gt;
# disconnessione e cleanup&lt;br /&gt;
&lt;br /&gt;
Un punto importante e che pyinfra prepara prima l&#039;ordine delle operazioni e poi le esegue. Questo permette di mantenere l&#039;ordine logico delle operazioni, eseguendo ogni singola operation in parallelo sui target rilevanti.&lt;br /&gt;
&lt;br /&gt;
== Inventory ==&lt;br /&gt;
Un inventory pyinfra contiene:&lt;br /&gt;
* host&lt;br /&gt;
* gruppi&lt;br /&gt;
* dati di gruppo&lt;br /&gt;
* dati per singolo host&lt;br /&gt;
&lt;br /&gt;
Esempio minimale:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
web_servers = [&lt;br /&gt;
    &amp;quot;web-01.example.net&amp;quot;,&lt;br /&gt;
    &amp;quot;web-02.example.net&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
db_servers = [&lt;br /&gt;
    (&amp;quot;db-01.example.net&amp;quot;, {&amp;quot;install_postgres&amp;quot;: True}),&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I dati associati agli host o ai gruppi possono essere usati nel deploy Python tramite `host.data`.&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
Le operations descrivono cosa deve essere vero sul sistema target. In molti casi non rappresentano un&#039;azione imperativa ma uno &#039;&#039;&#039;stato desiderato&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from pyinfra.operations import apt, files&lt;br /&gt;
&lt;br /&gt;
apt.packages(&lt;br /&gt;
    name=&amp;quot;Install vim&amp;quot;,&lt;br /&gt;
    packages=[&amp;quot;vim&amp;quot;],&lt;br /&gt;
    update=True,&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
files.file(&lt;br /&gt;
    name=&amp;quot;Ensure log file exists&amp;quot;,&lt;br /&gt;
    path=&amp;quot;/var/log/app.log&amp;quot;,&lt;br /&gt;
    user=&amp;quot;app&amp;quot;,&lt;br /&gt;
    group=&amp;quot;app&amp;quot;,&lt;br /&gt;
    mode=&amp;quot;644&amp;quot;,&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se il target e gia nello stato richiesto, pyinfra non applica cambiamenti ulteriori.&lt;br /&gt;
&lt;br /&gt;
== Comandi ad-hoc ==&lt;br /&gt;
Pyinfra puo essere usato anche direttamente da CLI senza creare un deploy completo.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pyinfra @local exec -- echo &amp;quot;hello world&amp;quot;&lt;br /&gt;
pyinfra my-server.net exec -- uptime&lt;br /&gt;
pyinfra @docker/ubuntu:22.04 exec -- uname -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esempio base di deploy ==&lt;br /&gt;
Inventory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my_hosts = [&lt;br /&gt;
    (&amp;quot;ubuntu2204&amp;quot;, {&lt;br /&gt;
        &amp;quot;ssh_port&amp;quot;: 2222,&lt;br /&gt;
        &amp;quot;ssh_hostname&amp;quot;: &amp;quot;localhost&amp;quot;,&lt;br /&gt;
        &amp;quot;ssh_user&amp;quot;: &amp;quot;vagrant&amp;quot;,&lt;br /&gt;
        &amp;quot;_sudo&amp;quot;: True,&lt;br /&gt;
    }),&lt;br /&gt;
    &amp;quot;my-server.net&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deploy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from pyinfra.operations import apt&lt;br /&gt;
&lt;br /&gt;
apt.packages(&lt;br /&gt;
    name=&amp;quot;Ensure vim is installed&amp;quot;,&lt;br /&gt;
    packages=[&amp;quot;vim&amp;quot;],&lt;br /&gt;
    update=True,&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esecuzione:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pyinfra inventory.py deploy.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Differenze pratiche rispetto ad Ansible ==&lt;br /&gt;
* usa &#039;&#039;&#039;Python&#039;&#039;&#039; invece di fare affidamento principalmente su YAML&lt;br /&gt;
* e comodo per chi vuole logica, condizioni e riuso direttamente nel linguaggio&lt;br /&gt;
* mantiene il modello inventory + operazioni + stato desiderato&lt;br /&gt;
* puo essere piu naturale per team che preferiscono automazione programmabile piuttosto che playbook dichiarativi&lt;br /&gt;
&lt;br /&gt;
== Quando ha senso usarlo ==&lt;br /&gt;
* homelab e server Linux&lt;br /&gt;
* provisioning e configurazioni ripetibili&lt;br /&gt;
* deploy gestiti in Git&lt;br /&gt;
* ambienti dove Python e gia parte del flusso operativo&lt;br /&gt;
&lt;br /&gt;
== Limiti da tenere presenti ==&lt;br /&gt;
* richiede maggiore familiarita con Python rispetto a strumenti piu dichiarativi&lt;br /&gt;
* alcuni team preferiscono YAML per leggibilita immediata lato operations&lt;br /&gt;
* va progettato con attenzione quando la logica dipende da fatti che possono cambiare durante il deploy&lt;br /&gt;
&lt;br /&gt;
== Installazione ==&lt;br /&gt;
Secondo la documentazione ufficiale, il metodo consigliato e:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uv tool install pyinfra&lt;br /&gt;
pyinfra --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative supportate: `pipx` oppure `pip` in virtual environment.&lt;br /&gt;
&lt;br /&gt;
== Link ufficiali ==&lt;br /&gt;
* [https://pyinfra.com/ Sito ufficiale]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/ Documentazione]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/getting-started.html Getting Started]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/inventory-data.html Inventory &amp;amp; Data]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/using-operations.html Using Operations]&lt;br /&gt;
* [https://docs.pyinfra.com/en/3.x/deploy-process.html How pyinfra Works]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=APPUNTI&amp;diff=622</id>
		<title>APPUNTI</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=APPUNTI&amp;diff=622"/>
		<updated>2026-03-28T23:00:26Z</updated>

		<summary type="html">&lt;p&gt;Admin: Bonifica contenuti sensibili e procedure di recupero credenziali&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Appunti bonificati il 2026-03-28: i dettagli sensibili e le procedure di recupero credenziali sono stati rimossi da questa pagina.&lt;br /&gt;
&lt;br /&gt;
Dati non sensibili:&lt;br /&gt;
- LAST DEPLOYED: Sun May 19 22:09:47 2024&lt;br /&gt;
- NAMESPACE: default&lt;br /&gt;
- STATUS: deployed&lt;br /&gt;
- REVISION: 1&lt;br /&gt;
- CHART NAME: mariadb&lt;br /&gt;
- CHART VERSION: 18.0.6&lt;br /&gt;
- APP VERSION: 11.3.2&lt;br /&gt;
&lt;br /&gt;
Nota operativa:&lt;br /&gt;
- Le credenziali amministrative, i comandi per il recupero dei secret e i riferimenti infrastrutturali di dettaglio devono restare in runbook interni, password manager o repository privati.&lt;br /&gt;
- Per accesso, upgrade o manutenzione usare solo documentazione interna riservata.&lt;br /&gt;
- Evitare di pubblicare in wiki pubblico password, token, secret Kubernetes, hostname interni o shell transcript con dati operativi.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Linux/OpenLDAP_e_SSH&amp;diff=621</id>
		<title>Tips Linux/OpenLDAP e SSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Linux/OpenLDAP_e_SSH&amp;diff=621"/>
		<updated>2026-03-25T11:26:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: Creazione sottosezione Tips Linux: OpenLDAP e SSH con configurazione LDAP/SSSD/SSH e sudo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OpenLDAP e SSH =&lt;br /&gt;
&lt;br /&gt;
Questa pagina documenta una configurazione pratica di integrazione tra OpenLDAP e SSH su Ubuntu, con autenticazione utenti centralizzata e privilegi sudo per utente tecnico.&lt;br /&gt;
&lt;br /&gt;
== Obiettivo ==&lt;br /&gt;
* Login SSH con utenza LDAP (es. `gazzinet`)&lt;br /&gt;
* Risoluzione utenti via SSSD/NSS&lt;br /&gt;
* Elevazione privilegi con `sudo`&lt;br /&gt;
&lt;br /&gt;
== Parametri LDAP usati ==&lt;br /&gt;
* URI: `ldap://172.16.1.7:389`&lt;br /&gt;
* Base DN: `dc=gazzi,dc=local`&lt;br /&gt;
* User search base: `ou=People,dc=gazzi,dc=local`&lt;br /&gt;
* Group search base: `ou=Groups,dc=gazzi,dc=local`&lt;br /&gt;
* Bind DN tecnico: `uid=ldapbind,ou=People,dc=gazzi,dc=local`&lt;br /&gt;
&lt;br /&gt;
== Pacchetti installati ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install -y sssd-ldap libnss-sss libpam-sss ldap-utils sudo qemu-guest-agent&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configurazione SSSD ==&lt;br /&gt;
File: `/etc/sssd/sssd.conf`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[sssd]&lt;br /&gt;
services = nss, pam&lt;br /&gt;
config_file_version = 2&lt;br /&gt;
domains = GAZZI&lt;br /&gt;
&lt;br /&gt;
[domain/GAZZI]&lt;br /&gt;
id_provider = ldap&lt;br /&gt;
auth_provider = ldap&lt;br /&gt;
chpass_provider = ldap&lt;br /&gt;
access_provider = permit&lt;br /&gt;
cache_credentials = True&lt;br /&gt;
enumerate = False&lt;br /&gt;
use_fully_qualified_names = False&lt;br /&gt;
fallback_homedir = /home/%u&lt;br /&gt;
default_shell = /bin/bash&lt;br /&gt;
ldap_uri = ldap://172.16.1.7:389&lt;br /&gt;
ldap_search_base = dc=gazzi,dc=local&lt;br /&gt;
ldap_user_search_base = ou=People,dc=gazzi,dc=local&lt;br /&gt;
ldap_group_search_base = ou=Groups,dc=gazzi,dc=local&lt;br /&gt;
ldap_default_bind_dn = uid=ldapbind,ou=People,dc=gazzi,dc=local&lt;br /&gt;
ldap_default_authtok = ********&lt;br /&gt;
ldap_user_object_class = inetOrgPerson&lt;br /&gt;
ldap_user_name = uid&lt;br /&gt;
ldap_group_object_class = groupOfNames&lt;br /&gt;
ldap_group_name = cn&lt;br /&gt;
ldap_tls_reqcert = never&lt;br /&gt;
ldap_id_use_start_tls = False&lt;br /&gt;
ldap_auth_disable_tls_never_use_in_production = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Il parametro `ldap_auth_disable_tls_never_use_in_production = true` è stato necessario in questo ambiente LDAP non-TLS.&lt;br /&gt;
* In produzione consigliata: LDAP su TLS/LDAPS con certificati validi.&lt;br /&gt;
&lt;br /&gt;
== Integrazione NSS/PAM ==&lt;br /&gt;
* In `/etc/nsswitch.conf` aggiunto `sss` per `passwd`, `group`, `shadow`&lt;br /&gt;
* Home automatica al primo login via `pam_mkhomedir`&lt;br /&gt;
&lt;br /&gt;
== Configurazione SSH ==&lt;br /&gt;
File override: `/etc/ssh/sshd_config.d/99-ldap-auth.conf`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
UsePAM yes&lt;br /&gt;
PasswordAuthentication yes&lt;br /&gt;
KbdInteractiveAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sudo per utente LDAP ==&lt;br /&gt;
File: `/etc/sudoers.d/90-gazzinet-ldap`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
gazzinet ALL=(ALL:ALL) ALL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verifiche effettuate ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
getent passwd gazzinet&lt;br /&gt;
systemctl is-active sssd&lt;br /&gt;
sshd -T | grep -E &#039;usepam|passwordauthentication|kbdinteractiveauthentication&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test operativo finale:&lt;br /&gt;
* Login SSH come `gazzinet` riuscito&lt;br /&gt;
* `sudo` funzionante con password utente LDAP&lt;br /&gt;
&lt;br /&gt;
[[Category:Tips Linux]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=VerificheRapideLinux&amp;diff=620</id>
		<title>VerificheRapideLinux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=VerificheRapideLinux&amp;diff=620"/>
		<updated>2026-03-20T11:16:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: Creata pagina con &amp;quot;== Verifiche rapide ==  === Controllo tempo di risposta sito === &amp;lt;pre&amp;gt; curl -k --connect-timeout 30 --max-time 30 --write-out &amp;#039;%{time_total};%{http_code}\n&amp;#039; http://www.gazzi.net/ &amp;lt;/pre&amp;gt;  === Stato del sistema === &amp;lt;pre&amp;gt; uptime uname -a hostnamectl free -h df -h &amp;lt;/pre&amp;gt;  === Processi e servizi === &amp;lt;pre&amp;gt; ps -ef | less systemctl --failed systemctl status nome-servizio journalctl -xeu nome-servizio &amp;lt;/pre&amp;gt;  === Rete e porte === &amp;lt;pre&amp;gt; ip a ip r ss -tulpn ping -c 4 host_o_ip curl...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Controllo tempo di risposta sito ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k --connect-timeout 30 --max-time 30 --write-out &#039;%{time_total};%{http_code}\n&#039; http://www.gazzi.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stato del sistema ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
uname -a&lt;br /&gt;
hostnamectl&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Processi e servizi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | less&lt;br /&gt;
systemctl --failed&lt;br /&gt;
systemctl status nome-servizio&lt;br /&gt;
journalctl -xeu nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e porte ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
ss -tulpn&lt;br /&gt;
ping -c 4 host_o_ip&lt;br /&gt;
curl -I https://host_o_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=619</id>
		<title>Tips Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=619"/>
		<updated>2026-03-20T11:16:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Breve raccolta di riferimenti operativi Linux usati nel contesto GazziNet. La pagina serve come indice rapido per verifiche, troubleshooting e accesso ai sotto-argomenti gia documentati nel wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[VerificheRapideLinux]]&lt;br /&gt;
&lt;br /&gt;
=== ACL Linux ===&lt;br /&gt;
&lt;br /&gt;
[[ACL_Linux:_storia,_concetti_e_uso_pratico]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comandi Linux di base ==&lt;br /&gt;
&lt;br /&gt;
=== Navigazione e file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwd&lt;br /&gt;
ls -la&lt;br /&gt;
cd /percorso&lt;br /&gt;
mkdir nome-directory&lt;br /&gt;
touch file.txt&lt;br /&gt;
cp sorgente destinazione&lt;br /&gt;
mv vecchio nuovo&lt;br /&gt;
rm file.txt&lt;br /&gt;
rm -r directory&lt;br /&gt;
cat file.txt&lt;br /&gt;
less file.txt&lt;br /&gt;
head -n 20 file.txt&lt;br /&gt;
tail -n 20 file.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ricerca rapida ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep -n parola file.txt&lt;br /&gt;
grep -R &amp;quot;pattern&amp;quot; /percorso&lt;br /&gt;
find /percorso -name &amp;quot;*.log&amp;quot;&lt;br /&gt;
find /percorso -type f -mtime -1&lt;br /&gt;
which comando&lt;br /&gt;
whereis comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Permessi e proprieta ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l&lt;br /&gt;
chmod 644 file.txt&lt;br /&gt;
chmod +x script.sh&lt;br /&gt;
chown utente:gruppo file.txt&lt;br /&gt;
id&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Archivi e trasferimento ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar -czf archivio.tar.gz directory/&lt;br /&gt;
tar -xzf archivio.tar.gz&lt;br /&gt;
scp file.txt utente@host:/percorso/&lt;br /&gt;
rsync -av origine/ destinazione/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheda rapida awk ==&lt;br /&gt;
awk e utile quando serve estrarre colonne, filtrare righe o fare piccoli report da output testuali senza aprire editor o scrivere script piu lunghi.&lt;br /&gt;
&lt;br /&gt;
=== Sintassi minima ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;condizione { azione }&#039; file&lt;br /&gt;
comando | awk &#039;condizione { azione }&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Usi tipici ===&lt;br /&gt;
&lt;br /&gt;
==== Stampare colonne specifiche ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;{print $1, $2, $8}&#039;&lt;br /&gt;
df -h | awk &#039;{print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saltare l&#039;intestazione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 {print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrare righe che contengono una condizione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -tulpn | awk &#039;/LISTEN/ {print $1, $5, $7}&#039;&lt;br /&gt;
ps -ef | awk &#039;/nginx/ &amp;amp;&amp;amp; !/awk/ {print $2, $8}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Usare un separatore diverso ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{print $1, $7}&#039; /etc/passwd&lt;br /&gt;
awk -F= &#039;{print $1, $2}&#039; file.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fare conteggi e somme ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;END {print NR &amp;quot; righe totali&amp;quot;}&#039;&lt;br /&gt;
awk &#039;{somma += $1} END {print somma}&#039; numeri.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mostrare solo righe sopra una soglia ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 &amp;amp;&amp;amp; $5+0 &amp;gt;= 80 {print $1, $5, $6}&#039;&lt;br /&gt;
free -m | awk &#039;/Mem:/ {print &amp;quot;RAM usata:&amp;quot;, $3 &amp;quot; MB&amp;quot;}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Formattare output in modo leggibile ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{printf &amp;quot;utente=%s shell=%s&lt;br /&gt;
&amp;quot;, $1, $7}&#039; /etc/passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Note pratiche su awk ===&lt;br /&gt;
* `NR` indica il numero di riga corrente.&lt;br /&gt;
* `$1`, `$2`, `$3` indicano la prima, seconda e terza colonna.&lt;br /&gt;
* `-F` imposta il separatore di campo.&lt;br /&gt;
* In output da comandi di sistema, awk e molto utile insieme a `grep`, `sort`, `uniq` e `xargs`.&lt;br /&gt;
* Se l&#039;output contiene spazi irregolari, verificare prima il separatore reale o usare `printf` invece di `print`.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting operativo ==&lt;br /&gt;
&lt;br /&gt;
=== Log principali ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
journalctl -b&lt;br /&gt;
journalctl -p err -b&lt;br /&gt;
tail -n 100 /var/log/messages&lt;br /&gt;
tail -n 100 /var/log/secure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spazio disco e inode ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
df -i&lt;br /&gt;
du -sh /var/* | sort -h&lt;br /&gt;
find /var/log -type f -size +100M -ls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mount e multipath ===&lt;br /&gt;
Per ambienti con storage esterno o SAN, usare le procedure dedicate prima di eseguire rescan o interventi sui device.&lt;br /&gt;
&lt;br /&gt;
* [[Rescan MultiPath fisica]]&lt;br /&gt;
&lt;br /&gt;
== Pacchetti e repository ==&lt;br /&gt;
&lt;br /&gt;
=== Verifiche base ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | wc -l&lt;br /&gt;
rpm -q nome-pacchetto&lt;br /&gt;
which comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Riferimenti dedicati ===&lt;br /&gt;
* [[Differenze tra le principali distribuzioni Linux]]&lt;br /&gt;
* [[PIP]]&lt;br /&gt;
* [[EPEL Oracle]]&lt;br /&gt;
&lt;br /&gt;
== Accesso remoto e identita ==&lt;br /&gt;
* [[GestioneSSHCertificati]]&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[RustDesk]]&lt;br /&gt;
&lt;br /&gt;
== Script e analisi ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[AnalisiServer]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Deleted Files|Deleted Files]]&lt;br /&gt;
&lt;br /&gt;
== Configurazione e sistema ==&lt;br /&gt;
* [[TimeZone]]&lt;br /&gt;
&lt;br /&gt;
== Note d&#039;uso ==&lt;br /&gt;
* Preferire sempre verifiche non invasive prima di riavvii o fix correttivi.&lt;br /&gt;
* Se il problema coinvolge storage, autenticazione o rete, documentare subito hostname, orario, sintomo e ultimo cambiamento noto.&lt;br /&gt;
* Spostare i casi ricorrenti in pagine dedicate invece di far crescere questa pagina senza struttura.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=618</id>
		<title>Tips Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=618"/>
		<updated>2026-03-20T11:14:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Breve raccolta di riferimenti operativi Linux usati nel contesto GazziNet. La pagina serve come indice rapido per verifiche, troubleshooting e accesso ai sotto-argomenti gia documentati nel wiki.&lt;br /&gt;
&lt;br /&gt;
=== ACL Linux ===&lt;br /&gt;
&lt;br /&gt;
[[ACL_Linux:_storia,_concetti_e_uso_pratico]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comandi Linux di base ==&lt;br /&gt;
&lt;br /&gt;
=== Navigazione e file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwd&lt;br /&gt;
ls -la&lt;br /&gt;
cd /percorso&lt;br /&gt;
mkdir nome-directory&lt;br /&gt;
touch file.txt&lt;br /&gt;
cp sorgente destinazione&lt;br /&gt;
mv vecchio nuovo&lt;br /&gt;
rm file.txt&lt;br /&gt;
rm -r directory&lt;br /&gt;
cat file.txt&lt;br /&gt;
less file.txt&lt;br /&gt;
head -n 20 file.txt&lt;br /&gt;
tail -n 20 file.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ricerca rapida ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep -n parola file.txt&lt;br /&gt;
grep -R &amp;quot;pattern&amp;quot; /percorso&lt;br /&gt;
find /percorso -name &amp;quot;*.log&amp;quot;&lt;br /&gt;
find /percorso -type f -mtime -1&lt;br /&gt;
which comando&lt;br /&gt;
whereis comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Permessi e proprieta ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l&lt;br /&gt;
chmod 644 file.txt&lt;br /&gt;
chmod +x script.sh&lt;br /&gt;
chown utente:gruppo file.txt&lt;br /&gt;
id&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Archivi e trasferimento ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar -czf archivio.tar.gz directory/&lt;br /&gt;
tar -xzf archivio.tar.gz&lt;br /&gt;
scp file.txt utente@host:/percorso/&lt;br /&gt;
rsync -av origine/ destinazione/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheda rapida awk ==&lt;br /&gt;
awk e utile quando serve estrarre colonne, filtrare righe o fare piccoli report da output testuali senza aprire editor o scrivere script piu lunghi.&lt;br /&gt;
&lt;br /&gt;
=== Sintassi minima ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;condizione { azione }&#039; file&lt;br /&gt;
comando | awk &#039;condizione { azione }&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Usi tipici ===&lt;br /&gt;
&lt;br /&gt;
==== Stampare colonne specifiche ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;{print $1, $2, $8}&#039;&lt;br /&gt;
df -h | awk &#039;{print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saltare l&#039;intestazione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 {print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrare righe che contengono una condizione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -tulpn | awk &#039;/LISTEN/ {print $1, $5, $7}&#039;&lt;br /&gt;
ps -ef | awk &#039;/nginx/ &amp;amp;&amp;amp; !/awk/ {print $2, $8}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Usare un separatore diverso ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{print $1, $7}&#039; /etc/passwd&lt;br /&gt;
awk -F= &#039;{print $1, $2}&#039; file.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fare conteggi e somme ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;END {print NR &amp;quot; righe totali&amp;quot;}&#039;&lt;br /&gt;
awk &#039;{somma += $1} END {print somma}&#039; numeri.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mostrare solo righe sopra una soglia ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 &amp;amp;&amp;amp; $5+0 &amp;gt;= 80 {print $1, $5, $6}&#039;&lt;br /&gt;
free -m | awk &#039;/Mem:/ {print &amp;quot;RAM usata:&amp;quot;, $3 &amp;quot; MB&amp;quot;}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Formattare output in modo leggibile ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{printf &amp;quot;utente=%s shell=%s&lt;br /&gt;
&amp;quot;, $1, $7}&#039; /etc/passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Note pratiche su awk ===&lt;br /&gt;
* `NR` indica il numero di riga corrente.&lt;br /&gt;
* `$1`, `$2`, `$3` indicano la prima, seconda e terza colonna.&lt;br /&gt;
* `-F` imposta il separatore di campo.&lt;br /&gt;
* In output da comandi di sistema, awk e molto utile insieme a `grep`, `sort`, `uniq` e `xargs`.&lt;br /&gt;
* Se l&#039;output contiene spazi irregolari, verificare prima il separatore reale o usare `printf` invece di `print`.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting operativo ==&lt;br /&gt;
&lt;br /&gt;
=== Log principali ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
journalctl -b&lt;br /&gt;
journalctl -p err -b&lt;br /&gt;
tail -n 100 /var/log/messages&lt;br /&gt;
tail -n 100 /var/log/secure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spazio disco e inode ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
df -i&lt;br /&gt;
du -sh /var/* | sort -h&lt;br /&gt;
find /var/log -type f -size +100M -ls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mount e multipath ===&lt;br /&gt;
Per ambienti con storage esterno o SAN, usare le procedure dedicate prima di eseguire rescan o interventi sui device.&lt;br /&gt;
&lt;br /&gt;
* [[Rescan MultiPath fisica]]&lt;br /&gt;
&lt;br /&gt;
== Pacchetti e repository ==&lt;br /&gt;
&lt;br /&gt;
=== Verifiche base ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | wc -l&lt;br /&gt;
rpm -q nome-pacchetto&lt;br /&gt;
which comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Riferimenti dedicati ===&lt;br /&gt;
* [[Differenze tra le principali distribuzioni Linux]]&lt;br /&gt;
* [[PIP]]&lt;br /&gt;
* [[EPEL Oracle]]&lt;br /&gt;
&lt;br /&gt;
== Accesso remoto e identita ==&lt;br /&gt;
* [[GestioneSSHCertificati]]&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[RustDesk]]&lt;br /&gt;
&lt;br /&gt;
== Script e analisi ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[AnalisiServer]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Deleted Files|Deleted Files]]&lt;br /&gt;
&lt;br /&gt;
== Configurazione e sistema ==&lt;br /&gt;
* [[TimeZone]]&lt;br /&gt;
&lt;br /&gt;
== Note d&#039;uso ==&lt;br /&gt;
* Preferire sempre verifiche non invasive prima di riavvii o fix correttivi.&lt;br /&gt;
* Se il problema coinvolge storage, autenticazione o rete, documentare subito hostname, orario, sintomo e ultimo cambiamento noto.&lt;br /&gt;
* Spostare i casi ricorrenti in pagine dedicate invece di far crescere questa pagina senza struttura.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=TIPS_Linux_-_Verifiche_rapide&amp;diff=617</id>
		<title>TIPS Linux - Verifiche rapide</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=TIPS_Linux_-_Verifiche_rapide&amp;diff=617"/>
		<updated>2026-03-20T11:07:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: Rollback modifica precedente&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Controllo tempo di risposta sito ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k --connect-timeout 30 --max-time 30 --write-out &#039;%{time_total};%{http_code}\n&#039; http://www.gazzi.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stato del sistema ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
uname -a&lt;br /&gt;
hostnamectl&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Processi e servizi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | less&lt;br /&gt;
systemctl --failed&lt;br /&gt;
systemctl status nome-servizio&lt;br /&gt;
journalctl -xeu nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e porte ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
ss -tulpn&lt;br /&gt;
ping -c 4 host_o_ip&lt;br /&gt;
curl -I https://host_o_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=616</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=616"/>
		<updated>2026-03-20T11:07:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: Rollback modifica precedente&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;ACL&#039;&#039;&#039; (&#039;&#039;Access Control List&#039;&#039;) in Linux estendono il modello classico dei permessi Unix e consentono un controllo accessi piu granulare.&lt;br /&gt;
&lt;br /&gt;
Quando owner, group e others non bastano, le ACL permettono di assegnare regole specifiche a singoli utenti o gruppi mantenendo il principio del minimo privilegio.&lt;br /&gt;
&lt;br /&gt;
== Concetti base ==&lt;br /&gt;
&lt;br /&gt;
Nel modello standard Unix hai tre classi di permessi:&lt;br /&gt;
* proprietario&lt;br /&gt;
* gruppo&lt;br /&gt;
* altri&lt;br /&gt;
&lt;br /&gt;
Con le ACL puoi aggiungere entry dedicate, ad esempio per dare accesso a un utente tecnico senza cambiare proprietario della risorsa.&lt;br /&gt;
&lt;br /&gt;
Comandi principali:&lt;br /&gt;
* &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per leggere ACL correnti&lt;br /&gt;
* &amp;lt;code&amp;gt;setfacl&amp;lt;/code&amp;gt; per creare/modificare/rimuovere ACL&lt;br /&gt;
&lt;br /&gt;
== Esempi pratici ==&lt;br /&gt;
&lt;br /&gt;
=== Concedere permessi a un utente specifico ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo setfacl -m u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definire ACL di default su una directory ===&lt;br /&gt;
&lt;br /&gt;
Le ACL di default vengono ereditate da nuovi file e directory creati al suo interno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo setfacl -m d:u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verificare ACL effettive ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl /srv/progetto/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: la voce &#039;&#039;&#039;mask&#039;&#039;&#039; puo limitare i permessi realmente applicati.&lt;br /&gt;
&lt;br /&gt;
== Relazione con chmod ==&lt;br /&gt;
&lt;br /&gt;
ACL e permessi tradizionali convivono. Dopo modifiche con &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, e buona pratica controllare sempre il risultato con &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per verificare eventuali effetti sulla maschera ACL.&lt;br /&gt;
&lt;br /&gt;
== Quando usare le ACL ==&lt;br /&gt;
&lt;br /&gt;
* ambienti multiutente&lt;br /&gt;
* directory condivise con esigenze di accesso diverse&lt;br /&gt;
* casi in cui si vogliono evitare permessi eccessivamente ampi (es. &amp;lt;code&amp;gt;777&amp;lt;/code&amp;gt;)&lt;br /&gt;
* sistemi in cui serve tracciare policy accessi piu rigorose&lt;br /&gt;
&lt;br /&gt;
== Storia delle ACL ==&lt;br /&gt;
&lt;br /&gt;
Timeline essenziale:&lt;br /&gt;
* &#039;&#039;&#039;Anni 60-70&#039;&#039;&#039;: concetti ACL gia presenti in sistemi multiutente storici&lt;br /&gt;
* &#039;&#039;&#039;Anni 90&#039;&#039;&#039;: sviluppo delle estensioni sicurezza IEEE POSIX 1003.1e&lt;br /&gt;
* &#039;&#039;&#039;Ottobre 1997&#039;&#039;&#039;: riferimento tecnico nella bozza POSIX.1e Draft 17&lt;br /&gt;
* &#039;&#039;&#039;Gennaio 1998&#039;&#039;&#039;: standardizzazione POSIX.1e ritirata; il modello ACL continua comunque a essere implementato&lt;br /&gt;
* &#039;&#039;&#039;Novembre 2002&#039;&#039;&#039;: supporto ACL POSIX incluso nel kernel Linux 2.5.46 (ramo di sviluppo)&lt;br /&gt;
* &#039;&#039;&#039;Dal 2003 in poi&#039;&#039;&#039;: adozione ampia nei filesystem Linux usati in produzione&lt;br /&gt;
&lt;br /&gt;
In sintesi, pur senza standard finale ratificato, le ACL sono diventate uno strumento consolidato nell&#039;amministrazione Linux.&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
&lt;br /&gt;
* applicare ACL solo dove necessario&lt;br /&gt;
* documentare le regole nei runbook operativi&lt;br /&gt;
* verificare periodicamente configurazioni e ereditarieta&lt;br /&gt;
* mantenere un approccio minimo privilegio&lt;br /&gt;
&lt;br /&gt;
== Approfondimento tecnico ACL Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Modello ACL POSIX: entry principali ===&lt;br /&gt;
&lt;br /&gt;
Le ACL POSIX su file/directory usano tipicamente queste entry:&lt;br /&gt;
* &amp;lt;code&amp;gt;user::&amp;lt;/code&amp;gt; permessi del proprietario&lt;br /&gt;
* &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt; permessi del gruppo proprietario&lt;br /&gt;
* &amp;lt;code&amp;gt;other::&amp;lt;/code&amp;gt; permessi per tutti gli altri&lt;br /&gt;
* &amp;lt;code&amp;gt;user:nome_utente:&amp;lt;/code&amp;gt; eccezioni per singolo utente&lt;br /&gt;
* &amp;lt;code&amp;gt;group:nome_gruppo:&amp;lt;/code&amp;gt; eccezioni per gruppo specifico&lt;br /&gt;
* &amp;lt;code&amp;gt;mask::&amp;lt;/code&amp;gt; limite massimo effettivo per group e named user/group&lt;br /&gt;
* &amp;lt;code&amp;gt;default:...&amp;lt;/code&amp;gt; ACL ereditarie (solo su directory)&lt;br /&gt;
&lt;br /&gt;
=== Mask: il punto piu importante da capire ===&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;code&amp;gt;mask&amp;lt;/code&amp;gt; limita i permessi effettivi di:&lt;br /&gt;
* &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt;&lt;br /&gt;
* tutte le entry &amp;lt;code&amp;gt;user:...&amp;lt;/code&amp;gt; nominate&lt;br /&gt;
* tutte le entry &amp;lt;code&amp;gt;group:...&amp;lt;/code&amp;gt; nominate&lt;br /&gt;
&lt;br /&gt;
Esempio: se una entry dice &amp;lt;code&amp;gt;rwx&amp;lt;/code&amp;gt; ma la mask e &amp;lt;code&amp;gt;r-x&amp;lt;/code&amp;gt;, il risultato effettivo e &amp;lt;code&amp;gt;r-x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m m::rwx /percorso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ACL access vs ACL default ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Access ACL&#039;&#039;&#039;: controlla accesso attuale al file/directory.&lt;br /&gt;
* &#039;&#039;&#039;Default ACL&#039;&#039;&#039;: template ereditato da nuovi oggetti creati dentro una directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:deploy:rwx /srv/shared&lt;br /&gt;
setfacl -m d:u:deploy:rwx /srv/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interazione con chmod e umask ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; puo modificare la mask ACL, cambiando i permessi effettivi.&lt;br /&gt;
* &amp;lt;code&amp;gt;umask&amp;lt;/code&amp;gt; influenza i permessi iniziali alla creazione; se esiste una default ACL, quest&#039;ultima partecipa al risultato finale.&lt;br /&gt;
&lt;br /&gt;
=== Verifica tecnica rapida ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /percorso&lt;br /&gt;
getfacl /percorso&lt;br /&gt;
stat /percorso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backup e ripristino ACL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl -R /srv/shared &amp;gt; /root/acl-backup.txt&lt;br /&gt;
setfacl --restore=/root/acl-backup.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni utili avanzate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -b /percorso&lt;br /&gt;
setfacl -k /directory&lt;br /&gt;
setfacl -R -m u:deploy:rwX /srv/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting tipico ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
namei -om /percorso/file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* [https://man7.org/linux/man-pages/man5/acl.5.html man page acl(5)]&lt;br /&gt;
* [https://atc.usenix.org/legacy/events/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/index.html USENIX 2003 - POSIX ACLs on Linux]&lt;br /&gt;
== Significato dei parametri usati nei comandi ==&lt;br /&gt;
&lt;br /&gt;
=== setfacl ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -m u:deploy:rwx /srv/progetto/shared&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt;: modifica (add/update) una ACL entry.&lt;br /&gt;
* &amp;lt;code&amp;gt;u:deploy:rwx&amp;lt;/code&amp;gt;: entry ACL per utente `deploy` con permessi `rwx`.&lt;br /&gt;
: `u` = user, `deploy` = utente, `rwx` = read/write/execute.&lt;br /&gt;
* &amp;lt;code&amp;gt;/srv/progetto/shared&amp;lt;/code&amp;gt;: path target.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -m d:u:deploy:rwx /srv/progetto/shared&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;d:&amp;lt;/code&amp;gt;: ACL di default (ereditaria, valida su directory).&lt;br /&gt;
* &amp;lt;code&amp;gt;u:deploy:rwx&amp;lt;/code&amp;gt;: come sopra, ma applicata ai nuovi file/cartelle creati dentro la directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -m m::rwx /percorso&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;m::rwx&amp;lt;/code&amp;gt;: imposta la &amp;lt;code&amp;gt;mask&amp;lt;/code&amp;gt; ACL a `rwx`.&lt;br /&gt;
: La mask limita i permessi effettivi di group e named user/group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -R -m u:deploy:rwX /srv/shared&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt;: applicazione ricorsiva su tutto l&#039;albero.&lt;br /&gt;
* &amp;lt;code&amp;gt;rwX&amp;lt;/code&amp;gt;: `r` read, `w` write, `X` execute solo su directory (e su file che hanno gia execute).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -b /percorso&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-b&amp;lt;/code&amp;gt;: rimuove ACL estese, mantenendo i permessi base Unix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -k /directory&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-k&amp;lt;/code&amp;gt;: rimuove solo le ACL di default dalla directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl --restore=/root/acl-backup.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--restore=FILE&amp;lt;/code&amp;gt;: ripristina ACL da backup creato con `getfacl -R`.&lt;br /&gt;
&lt;br /&gt;
=== getfacl ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;getfacl /srv/progetto/shared&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* stampa ACL (access e default) del path.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;getfacl -R /srv/shared &amp;gt; /root/acl-backup.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt;: output ricorsivo.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;: redirect su file per backup.&lt;br /&gt;
&lt;br /&gt;
=== ls / stat / namei ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ls -l /percorso&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt;: formato esteso (permessi, owner, group, size, date).&lt;br /&gt;
: Se compare `+` nei permessi (es. `drwxr-xr-x+`) sono presenti ACL estese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;stat /percorso&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* mostra metadata dettagliati del file/directory (mode, uid/gid, inode, timestamp).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;namei -om /percorso/file&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* risolve ogni componente del path e mostra permessi/proprietari passo-passo.&lt;br /&gt;
* &amp;lt;code&amp;gt;-o&amp;lt;/code&amp;gt;: mostra owner e group.&lt;br /&gt;
* &amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt;: mostra i bit di permesso in stile `ls -l`.&lt;br /&gt;
&lt;br /&gt;
=== Promemoria rapido sui simboli permesso ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; = read&lt;br /&gt;
* &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; = write&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; = execute/traverse&lt;br /&gt;
* &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; = execute condizionale (utile nelle ricorsioni)&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=TIPS_Linux_-_Verifiche_rapide&amp;diff=615</id>
		<title>TIPS Linux - Verifiche rapide</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=TIPS_Linux_-_Verifiche_rapide&amp;diff=615"/>
		<updated>2026-03-20T11:05:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: Tag pagina: aggiunta categoria TIPS Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;null&lt;br /&gt;
&lt;br /&gt;
[[Category:TIPS Linux]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=614</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=614"/>
		<updated>2026-03-20T11:05:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiornata pagina originale con rimando a Verifiche rapide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;null&lt;br /&gt;
&lt;br /&gt;
== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
La checklist operativa e stata spostata in una pagina dedicata:&lt;br /&gt;
* [[TIPS Linux - Verifiche rapide]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=TIPS_Linux&amp;diff=613</id>
		<title>TIPS Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=TIPS_Linux&amp;diff=613"/>
		<updated>2026-03-20T10:58:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiunto link alla pagina Verifiche rapide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;\n* [[ACL Linux: storia, concetti e uso pratico]]\n* [[TIPS Linux - Verifiche rapide]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=TIPS_Linux_-_Verifiche_rapide&amp;diff=612</id>
		<title>TIPS Linux - Verifiche rapide</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=TIPS_Linux_-_Verifiche_rapide&amp;diff=612"/>
		<updated>2026-03-20T10:58:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: Nuova pagina separata: verifiche rapide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Controllo tempo di risposta sito ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k --connect-timeout 30 --max-time 30 --write-out &#039;%{time_total};%{http_code}\n&#039; http://www.gazzi.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stato del sistema ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
uname -a&lt;br /&gt;
hostnamectl&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Processi e servizi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | less&lt;br /&gt;
systemctl --failed&lt;br /&gt;
systemctl status nome-servizio&lt;br /&gt;
journalctl -xeu nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e porte ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
ss -tulpn&lt;br /&gt;
ping -c 4 host_o_ip&lt;br /&gt;
curl -I https://host_o_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=611</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=611"/>
		<updated>2026-03-20T10:50:47Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiunta spiegazione parametri dei comandi ACL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;ACL&#039;&#039;&#039; (&#039;&#039;Access Control List&#039;&#039;) in Linux estendono il modello classico dei permessi Unix e consentono un controllo accessi piu granulare.&lt;br /&gt;
&lt;br /&gt;
Quando owner, group e others non bastano, le ACL permettono di assegnare regole specifiche a singoli utenti o gruppi mantenendo il principio del minimo privilegio.&lt;br /&gt;
&lt;br /&gt;
== Concetti base ==&lt;br /&gt;
&lt;br /&gt;
Nel modello standard Unix hai tre classi di permessi:&lt;br /&gt;
* proprietario&lt;br /&gt;
* gruppo&lt;br /&gt;
* altri&lt;br /&gt;
&lt;br /&gt;
Con le ACL puoi aggiungere entry dedicate, ad esempio per dare accesso a un utente tecnico senza cambiare proprietario della risorsa.&lt;br /&gt;
&lt;br /&gt;
Comandi principali:&lt;br /&gt;
* &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per leggere ACL correnti&lt;br /&gt;
* &amp;lt;code&amp;gt;setfacl&amp;lt;/code&amp;gt; per creare/modificare/rimuovere ACL&lt;br /&gt;
&lt;br /&gt;
== Esempi pratici ==&lt;br /&gt;
&lt;br /&gt;
=== Concedere permessi a un utente specifico ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo setfacl -m u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definire ACL di default su una directory ===&lt;br /&gt;
&lt;br /&gt;
Le ACL di default vengono ereditate da nuovi file e directory creati al suo interno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo setfacl -m d:u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verificare ACL effettive ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl /srv/progetto/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: la voce &#039;&#039;&#039;mask&#039;&#039;&#039; puo limitare i permessi realmente applicati.&lt;br /&gt;
&lt;br /&gt;
== Relazione con chmod ==&lt;br /&gt;
&lt;br /&gt;
ACL e permessi tradizionali convivono. Dopo modifiche con &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, e buona pratica controllare sempre il risultato con &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per verificare eventuali effetti sulla maschera ACL.&lt;br /&gt;
&lt;br /&gt;
== Quando usare le ACL ==&lt;br /&gt;
&lt;br /&gt;
* ambienti multiutente&lt;br /&gt;
* directory condivise con esigenze di accesso diverse&lt;br /&gt;
* casi in cui si vogliono evitare permessi eccessivamente ampi (es. &amp;lt;code&amp;gt;777&amp;lt;/code&amp;gt;)&lt;br /&gt;
* sistemi in cui serve tracciare policy accessi piu rigorose&lt;br /&gt;
&lt;br /&gt;
== Storia delle ACL ==&lt;br /&gt;
&lt;br /&gt;
Timeline essenziale:&lt;br /&gt;
* &#039;&#039;&#039;Anni 60-70&#039;&#039;&#039;: concetti ACL gia presenti in sistemi multiutente storici&lt;br /&gt;
* &#039;&#039;&#039;Anni 90&#039;&#039;&#039;: sviluppo delle estensioni sicurezza IEEE POSIX 1003.1e&lt;br /&gt;
* &#039;&#039;&#039;Ottobre 1997&#039;&#039;&#039;: riferimento tecnico nella bozza POSIX.1e Draft 17&lt;br /&gt;
* &#039;&#039;&#039;Gennaio 1998&#039;&#039;&#039;: standardizzazione POSIX.1e ritirata; il modello ACL continua comunque a essere implementato&lt;br /&gt;
* &#039;&#039;&#039;Novembre 2002&#039;&#039;&#039;: supporto ACL POSIX incluso nel kernel Linux 2.5.46 (ramo di sviluppo)&lt;br /&gt;
* &#039;&#039;&#039;Dal 2003 in poi&#039;&#039;&#039;: adozione ampia nei filesystem Linux usati in produzione&lt;br /&gt;
&lt;br /&gt;
In sintesi, pur senza standard finale ratificato, le ACL sono diventate uno strumento consolidato nell&#039;amministrazione Linux.&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
&lt;br /&gt;
* applicare ACL solo dove necessario&lt;br /&gt;
* documentare le regole nei runbook operativi&lt;br /&gt;
* verificare periodicamente configurazioni e ereditarieta&lt;br /&gt;
* mantenere un approccio minimo privilegio&lt;br /&gt;
&lt;br /&gt;
== Approfondimento tecnico ACL Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Modello ACL POSIX: entry principali ===&lt;br /&gt;
&lt;br /&gt;
Le ACL POSIX su file/directory usano tipicamente queste entry:&lt;br /&gt;
* &amp;lt;code&amp;gt;user::&amp;lt;/code&amp;gt; permessi del proprietario&lt;br /&gt;
* &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt; permessi del gruppo proprietario&lt;br /&gt;
* &amp;lt;code&amp;gt;other::&amp;lt;/code&amp;gt; permessi per tutti gli altri&lt;br /&gt;
* &amp;lt;code&amp;gt;user:nome_utente:&amp;lt;/code&amp;gt; eccezioni per singolo utente&lt;br /&gt;
* &amp;lt;code&amp;gt;group:nome_gruppo:&amp;lt;/code&amp;gt; eccezioni per gruppo specifico&lt;br /&gt;
* &amp;lt;code&amp;gt;mask::&amp;lt;/code&amp;gt; limite massimo effettivo per group e named user/group&lt;br /&gt;
* &amp;lt;code&amp;gt;default:...&amp;lt;/code&amp;gt; ACL ereditarie (solo su directory)&lt;br /&gt;
&lt;br /&gt;
=== Mask: il punto piu importante da capire ===&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;code&amp;gt;mask&amp;lt;/code&amp;gt; limita i permessi effettivi di:&lt;br /&gt;
* &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt;&lt;br /&gt;
* tutte le entry &amp;lt;code&amp;gt;user:...&amp;lt;/code&amp;gt; nominate&lt;br /&gt;
* tutte le entry &amp;lt;code&amp;gt;group:...&amp;lt;/code&amp;gt; nominate&lt;br /&gt;
&lt;br /&gt;
Esempio: se una entry dice &amp;lt;code&amp;gt;rwx&amp;lt;/code&amp;gt; ma la mask e &amp;lt;code&amp;gt;r-x&amp;lt;/code&amp;gt;, il risultato effettivo e &amp;lt;code&amp;gt;r-x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m m::rwx /percorso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ACL access vs ACL default ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Access ACL&#039;&#039;&#039;: controlla accesso attuale al file/directory.&lt;br /&gt;
* &#039;&#039;&#039;Default ACL&#039;&#039;&#039;: template ereditato da nuovi oggetti creati dentro una directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:deploy:rwx /srv/shared&lt;br /&gt;
setfacl -m d:u:deploy:rwx /srv/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interazione con chmod e umask ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; puo modificare la mask ACL, cambiando i permessi effettivi.&lt;br /&gt;
* &amp;lt;code&amp;gt;umask&amp;lt;/code&amp;gt; influenza i permessi iniziali alla creazione; se esiste una default ACL, quest&#039;ultima partecipa al risultato finale.&lt;br /&gt;
&lt;br /&gt;
=== Verifica tecnica rapida ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /percorso&lt;br /&gt;
getfacl /percorso&lt;br /&gt;
stat /percorso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backup e ripristino ACL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl -R /srv/shared &amp;gt; /root/acl-backup.txt&lt;br /&gt;
setfacl --restore=/root/acl-backup.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni utili avanzate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -b /percorso&lt;br /&gt;
setfacl -k /directory&lt;br /&gt;
setfacl -R -m u:deploy:rwX /srv/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting tipico ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
namei -om /percorso/file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* [https://man7.org/linux/man-pages/man5/acl.5.html man page acl(5)]&lt;br /&gt;
* [https://atc.usenix.org/legacy/events/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/index.html USENIX 2003 - POSIX ACLs on Linux]&lt;br /&gt;
== Significato dei parametri usati nei comandi ==&lt;br /&gt;
&lt;br /&gt;
=== setfacl ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -m u:deploy:rwx /srv/progetto/shared&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt;: modifica (add/update) una ACL entry.&lt;br /&gt;
* &amp;lt;code&amp;gt;u:deploy:rwx&amp;lt;/code&amp;gt;: entry ACL per utente `deploy` con permessi `rwx`.&lt;br /&gt;
: `u` = user, `deploy` = utente, `rwx` = read/write/execute.&lt;br /&gt;
* &amp;lt;code&amp;gt;/srv/progetto/shared&amp;lt;/code&amp;gt;: path target.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -m d:u:deploy:rwx /srv/progetto/shared&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;d:&amp;lt;/code&amp;gt;: ACL di default (ereditaria, valida su directory).&lt;br /&gt;
* &amp;lt;code&amp;gt;u:deploy:rwx&amp;lt;/code&amp;gt;: come sopra, ma applicata ai nuovi file/cartelle creati dentro la directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -m m::rwx /percorso&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;m::rwx&amp;lt;/code&amp;gt;: imposta la &amp;lt;code&amp;gt;mask&amp;lt;/code&amp;gt; ACL a `rwx`.&lt;br /&gt;
: La mask limita i permessi effettivi di group e named user/group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -R -m u:deploy:rwX /srv/shared&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt;: applicazione ricorsiva su tutto l&#039;albero.&lt;br /&gt;
* &amp;lt;code&amp;gt;rwX&amp;lt;/code&amp;gt;: `r` read, `w` write, `X` execute solo su directory (e su file che hanno gia execute).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -b /percorso&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-b&amp;lt;/code&amp;gt;: rimuove ACL estese, mantenendo i permessi base Unix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl -k /directory&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-k&amp;lt;/code&amp;gt;: rimuove solo le ACL di default dalla directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setfacl --restore=/root/acl-backup.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--restore=FILE&amp;lt;/code&amp;gt;: ripristina ACL da backup creato con `getfacl -R`.&lt;br /&gt;
&lt;br /&gt;
=== getfacl ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;getfacl /srv/progetto/shared&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* stampa ACL (access e default) del path.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;getfacl -R /srv/shared &amp;gt; /root/acl-backup.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt;: output ricorsivo.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;: redirect su file per backup.&lt;br /&gt;
&lt;br /&gt;
=== ls / stat / namei ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ls -l /percorso&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt;: formato esteso (permessi, owner, group, size, date).&lt;br /&gt;
: Se compare `+` nei permessi (es. `drwxr-xr-x+`) sono presenti ACL estese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;stat /percorso&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* mostra metadata dettagliati del file/directory (mode, uid/gid, inode, timestamp).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;namei -om /percorso/file&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* risolve ogni componente del path e mostra permessi/proprietari passo-passo.&lt;br /&gt;
* &amp;lt;code&amp;gt;-o&amp;lt;/code&amp;gt;: mostra owner e group.&lt;br /&gt;
* &amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt;: mostra i bit di permesso in stile `ls -l`.&lt;br /&gt;
&lt;br /&gt;
=== Promemoria rapido sui simboli permesso ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; = read&lt;br /&gt;
* &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; = write&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; = execute/traverse&lt;br /&gt;
* &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; = execute condizionale (utile nelle ricorsioni)&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=610</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=610"/>
		<updated>2026-03-20T10:33:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: Fix rendering: sostituiti blocchi syntaxhighlight non supportati e ripristinato contenuto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;ACL&#039;&#039;&#039; (&#039;&#039;Access Control List&#039;&#039;) in Linux estendono il modello classico dei permessi Unix e consentono un controllo accessi piu granulare.&lt;br /&gt;
&lt;br /&gt;
Quando owner, group e others non bastano, le ACL permettono di assegnare regole specifiche a singoli utenti o gruppi mantenendo il principio del minimo privilegio.&lt;br /&gt;
&lt;br /&gt;
== Concetti base ==&lt;br /&gt;
&lt;br /&gt;
Nel modello standard Unix hai tre classi di permessi:&lt;br /&gt;
* proprietario&lt;br /&gt;
* gruppo&lt;br /&gt;
* altri&lt;br /&gt;
&lt;br /&gt;
Con le ACL puoi aggiungere entry dedicate, ad esempio per dare accesso a un utente tecnico senza cambiare proprietario della risorsa.&lt;br /&gt;
&lt;br /&gt;
Comandi principali:&lt;br /&gt;
* &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per leggere ACL correnti&lt;br /&gt;
* &amp;lt;code&amp;gt;setfacl&amp;lt;/code&amp;gt; per creare/modificare/rimuovere ACL&lt;br /&gt;
&lt;br /&gt;
== Esempi pratici ==&lt;br /&gt;
&lt;br /&gt;
=== Concedere permessi a un utente specifico ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo setfacl -m u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definire ACL di default su una directory ===&lt;br /&gt;
&lt;br /&gt;
Le ACL di default vengono ereditate da nuovi file e directory creati al suo interno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo setfacl -m d:u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verificare ACL effettive ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl /srv/progetto/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: la voce &#039;&#039;&#039;mask&#039;&#039;&#039; puo limitare i permessi realmente applicati.&lt;br /&gt;
&lt;br /&gt;
== Relazione con chmod ==&lt;br /&gt;
&lt;br /&gt;
ACL e permessi tradizionali convivono. Dopo modifiche con &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, e buona pratica controllare sempre il risultato con &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per verificare eventuali effetti sulla maschera ACL.&lt;br /&gt;
&lt;br /&gt;
== Quando usare le ACL ==&lt;br /&gt;
&lt;br /&gt;
* ambienti multiutente&lt;br /&gt;
* directory condivise con esigenze di accesso diverse&lt;br /&gt;
* casi in cui si vogliono evitare permessi eccessivamente ampi (es. &amp;lt;code&amp;gt;777&amp;lt;/code&amp;gt;)&lt;br /&gt;
* sistemi in cui serve tracciare policy accessi piu rigorose&lt;br /&gt;
&lt;br /&gt;
== Storia delle ACL ==&lt;br /&gt;
&lt;br /&gt;
Timeline essenziale:&lt;br /&gt;
* &#039;&#039;&#039;Anni 60-70&#039;&#039;&#039;: concetti ACL gia presenti in sistemi multiutente storici&lt;br /&gt;
* &#039;&#039;&#039;Anni 90&#039;&#039;&#039;: sviluppo delle estensioni sicurezza IEEE POSIX 1003.1e&lt;br /&gt;
* &#039;&#039;&#039;Ottobre 1997&#039;&#039;&#039;: riferimento tecnico nella bozza POSIX.1e Draft 17&lt;br /&gt;
* &#039;&#039;&#039;Gennaio 1998&#039;&#039;&#039;: standardizzazione POSIX.1e ritirata; il modello ACL continua comunque a essere implementato&lt;br /&gt;
* &#039;&#039;&#039;Novembre 2002&#039;&#039;&#039;: supporto ACL POSIX incluso nel kernel Linux 2.5.46 (ramo di sviluppo)&lt;br /&gt;
* &#039;&#039;&#039;Dal 2003 in poi&#039;&#039;&#039;: adozione ampia nei filesystem Linux usati in produzione&lt;br /&gt;
&lt;br /&gt;
In sintesi, pur senza standard finale ratificato, le ACL sono diventate uno strumento consolidato nell&#039;amministrazione Linux.&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
&lt;br /&gt;
* applicare ACL solo dove necessario&lt;br /&gt;
* documentare le regole nei runbook operativi&lt;br /&gt;
* verificare periodicamente configurazioni e ereditarieta&lt;br /&gt;
* mantenere un approccio minimo privilegio&lt;br /&gt;
&lt;br /&gt;
== Approfondimento tecnico ACL Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Modello ACL POSIX: entry principali ===&lt;br /&gt;
&lt;br /&gt;
Le ACL POSIX su file/directory usano tipicamente queste entry:&lt;br /&gt;
* &amp;lt;code&amp;gt;user::&amp;lt;/code&amp;gt; permessi del proprietario&lt;br /&gt;
* &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt; permessi del gruppo proprietario&lt;br /&gt;
* &amp;lt;code&amp;gt;other::&amp;lt;/code&amp;gt; permessi per tutti gli altri&lt;br /&gt;
* &amp;lt;code&amp;gt;user:nome_utente:&amp;lt;/code&amp;gt; eccezioni per singolo utente&lt;br /&gt;
* &amp;lt;code&amp;gt;group:nome_gruppo:&amp;lt;/code&amp;gt; eccezioni per gruppo specifico&lt;br /&gt;
* &amp;lt;code&amp;gt;mask::&amp;lt;/code&amp;gt; limite massimo effettivo per group e named user/group&lt;br /&gt;
* &amp;lt;code&amp;gt;default:...&amp;lt;/code&amp;gt; ACL ereditarie (solo su directory)&lt;br /&gt;
&lt;br /&gt;
=== Mask: il punto piu importante da capire ===&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;code&amp;gt;mask&amp;lt;/code&amp;gt; limita i permessi effettivi di:&lt;br /&gt;
* &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt;&lt;br /&gt;
* tutte le entry &amp;lt;code&amp;gt;user:...&amp;lt;/code&amp;gt; nominate&lt;br /&gt;
* tutte le entry &amp;lt;code&amp;gt;group:...&amp;lt;/code&amp;gt; nominate&lt;br /&gt;
&lt;br /&gt;
Esempio: se una entry dice &amp;lt;code&amp;gt;rwx&amp;lt;/code&amp;gt; ma la mask e &amp;lt;code&amp;gt;r-x&amp;lt;/code&amp;gt;, il risultato effettivo e &amp;lt;code&amp;gt;r-x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m m::rwx /percorso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ACL access vs ACL default ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Access ACL&#039;&#039;&#039;: controlla accesso attuale al file/directory.&lt;br /&gt;
* &#039;&#039;&#039;Default ACL&#039;&#039;&#039;: template ereditato da nuovi oggetti creati dentro una directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:deploy:rwx /srv/shared&lt;br /&gt;
setfacl -m d:u:deploy:rwx /srv/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interazione con chmod e umask ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; puo modificare la mask ACL, cambiando i permessi effettivi.&lt;br /&gt;
* &amp;lt;code&amp;gt;umask&amp;lt;/code&amp;gt; influenza i permessi iniziali alla creazione; se esiste una default ACL, quest&#039;ultima partecipa al risultato finale.&lt;br /&gt;
&lt;br /&gt;
=== Verifica tecnica rapida ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /percorso&lt;br /&gt;
getfacl /percorso&lt;br /&gt;
stat /percorso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backup e ripristino ACL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl -R /srv/shared &amp;gt; /root/acl-backup.txt&lt;br /&gt;
setfacl --restore=/root/acl-backup.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni utili avanzate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -b /percorso&lt;br /&gt;
setfacl -k /directory&lt;br /&gt;
setfacl -R -m u:deploy:rwX /srv/shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting tipico ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
namei -om /percorso/file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* [https://man7.org/linux/man-pages/man5/acl.5.html man page acl(5)]&lt;br /&gt;
* [https://atc.usenix.org/legacy/events/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/index.html USENIX 2003 - POSIX ACLs on Linux]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=609</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=609"/>
		<updated>2026-03-20T10:32:32Z</updated>

		<summary type="html">&lt;p&gt;Admin: Compatibilita wiki: sostituiti syntaxhighlight con blocchi pre&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;null&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=608</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=608"/>
		<updated>2026-03-20T10:28:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiunto approfondimento tecnico ACL (mask, default ACL, chmod/umask, audit, restore, troubleshooting)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;ACL&#039;&#039;&#039; (&#039;&#039;Access Control List&#039;&#039;) in Linux estendono il modello classico dei permessi Unix e consentono un controllo accessi piu granulare.&lt;br /&gt;
&lt;br /&gt;
Quando owner, group e others non bastano, le ACL permettono di assegnare regole specifiche a singoli utenti o gruppi mantenendo il principio del minimo privilegio.&lt;br /&gt;
&lt;br /&gt;
== Concetti base ==&lt;br /&gt;
&lt;br /&gt;
Nel modello standard Unix hai tre classi di permessi:&lt;br /&gt;
* proprietario&lt;br /&gt;
* gruppo&lt;br /&gt;
* altri&lt;br /&gt;
&lt;br /&gt;
Con le ACL puoi aggiungere entry dedicate, ad esempio per dare accesso a un utente tecnico senza cambiare proprietario della risorsa.&lt;br /&gt;
&lt;br /&gt;
Comandi principali:&lt;br /&gt;
* &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per leggere ACL correnti&lt;br /&gt;
* &amp;lt;code&amp;gt;setfacl&amp;lt;/code&amp;gt; per creare/modificare/rimuovere ACL&lt;br /&gt;
&lt;br /&gt;
== Esempi pratici ==&lt;br /&gt;
&lt;br /&gt;
=== Concedere permessi a un utente specifico ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -m u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definire ACL di default su una directory ===&lt;br /&gt;
&lt;br /&gt;
Le ACL di default vengono ereditate da nuovi file e directory creati al suo interno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -m d:u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verificare ACL effettive ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
getfacl /srv/progetto/shared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: la voce &#039;&#039;&#039;mask&#039;&#039;&#039; puo limitare i permessi realmente applicati.&lt;br /&gt;
&lt;br /&gt;
== Relazione con chmod ==&lt;br /&gt;
&lt;br /&gt;
ACL e permessi tradizionali convivono. Dopo modifiche con &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, e buona pratica controllare sempre il risultato con &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per verificare eventuali effetti sulla maschera ACL.&lt;br /&gt;
&lt;br /&gt;
== Quando usare le ACL ==&lt;br /&gt;
&lt;br /&gt;
* ambienti multiutente&lt;br /&gt;
* directory condivise con esigenze di accesso diverse&lt;br /&gt;
* casi in cui si vogliono evitare permessi eccessivamente ampi (es. &amp;lt;code&amp;gt;777&amp;lt;/code&amp;gt;)&lt;br /&gt;
* sistemi in cui serve tracciare policy accessi piu rigorose&lt;br /&gt;
&lt;br /&gt;
== Storia delle ACL ==&lt;br /&gt;
&lt;br /&gt;
Timeline essenziale:&lt;br /&gt;
* &#039;&#039;&#039;Anni 60-70&#039;&#039;&#039;: concetti ACL gia presenti in sistemi multiutente storici&lt;br /&gt;
* &#039;&#039;&#039;Anni 90&#039;&#039;&#039;: sviluppo delle estensioni sicurezza IEEE POSIX 1003.1e&lt;br /&gt;
* &#039;&#039;&#039;Ottobre 1997&#039;&#039;&#039;: riferimento tecnico nella bozza POSIX.1e Draft 17&lt;br /&gt;
* &#039;&#039;&#039;Gennaio 1998&#039;&#039;&#039;: standardizzazione POSIX.1e ritirata; il modello ACL continua comunque a essere implementato&lt;br /&gt;
* &#039;&#039;&#039;Novembre 2002&#039;&#039;&#039;: supporto ACL POSIX incluso nel kernel Linux 2.5.46 (ramo di sviluppo)&lt;br /&gt;
* &#039;&#039;&#039;Dal 2003 in poi&#039;&#039;&#039;: adozione ampia nei filesystem Linux usati in produzione&lt;br /&gt;
&lt;br /&gt;
In sintesi, pur senza standard finale ratificato, le ACL sono diventate uno strumento consolidato nell&#039;amministrazione Linux.&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
&lt;br /&gt;
* applicare ACL solo dove necessario&lt;br /&gt;
* documentare le regole nei runbook operativi&lt;br /&gt;
* verificare periodicamente configurazioni e ereditarieta&lt;br /&gt;
* mantenere un approccio minimo privilegio&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* [https://man7.org/linux/man-pages/man5/acl.5.html man page acl(5)]&lt;br /&gt;
* [https://atc.usenix.org/legacy/events/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/index.html USENIX 2003 - POSIX ACLs on Linux]&lt;br /&gt;
== Approfondimento tecnico ACL Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Modello ACL POSIX: entry principali ===&lt;br /&gt;
&lt;br /&gt;
Le ACL POSIX su file/directory usano tipicamente queste entry:&lt;br /&gt;
* &amp;lt;code&amp;gt;user::&amp;lt;/code&amp;gt; permessi del proprietario&lt;br /&gt;
* &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt; permessi del gruppo proprietario&lt;br /&gt;
* &amp;lt;code&amp;gt;other::&amp;lt;/code&amp;gt; permessi per tutti gli altri&lt;br /&gt;
* &amp;lt;code&amp;gt;user:nome_utente:&amp;lt;/code&amp;gt; eccezioni per singolo utente&lt;br /&gt;
* &amp;lt;code&amp;gt;group:nome_gruppo:&amp;lt;/code&amp;gt; eccezioni per gruppo specifico&lt;br /&gt;
* &amp;lt;code&amp;gt;mask::&amp;lt;/code&amp;gt; limite massimo effettivo per group e named user/group&lt;br /&gt;
* &amp;lt;code&amp;gt;default:...&amp;lt;/code&amp;gt; ACL ereditarie (solo su directory)&lt;br /&gt;
&lt;br /&gt;
=== Mask: il punto piu importante da capire ===&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;code&amp;gt;mask&amp;lt;/code&amp;gt; limita i permessi effettivi di:&lt;br /&gt;
* &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt;&lt;br /&gt;
* tutte le entry &amp;lt;code&amp;gt;user:...&amp;lt;/code&amp;gt; nominate&lt;br /&gt;
* tutte le entry &amp;lt;code&amp;gt;group:...&amp;lt;/code&amp;gt; nominate&lt;br /&gt;
&lt;br /&gt;
Esempio: se una entry dice &amp;lt;code&amp;gt;rwx&amp;lt;/code&amp;gt; ma la mask e &amp;lt;code&amp;gt;r-x&amp;lt;/code&amp;gt;, il risultato effettivo e &amp;lt;code&amp;gt;r-x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Per ricreare la mask in base alle entry correnti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
setfacl -m m::rwx /percorso&lt;br /&gt;
# oppure ricalcolo automatico durante setfacl senza -n&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ACL access vs ACL default ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Access ACL&#039;&#039;&#039;: controlla accesso attuale al file/directory.&lt;br /&gt;
* &#039;&#039;&#039;Default ACL&#039;&#039;&#039;: template ereditato da nuovi oggetti creati dentro una directory.&lt;br /&gt;
&lt;br /&gt;
Impostazione tipica su directory condivisa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
setfacl -m u:deploy:rwx /srv/shared&lt;br /&gt;
setfacl -m d:u:deploy:rwx /srv/shared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interazione con chmod e umask ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; puo modificare la mask ACL, cambiando i permessi effettivi.&lt;br /&gt;
* &amp;lt;code&amp;gt;umask&amp;lt;/code&amp;gt; influenza i permessi iniziali alla creazione; se esiste una default ACL, quest&#039;ultima partecipa al risultato finale.&lt;br /&gt;
&lt;br /&gt;
Dopo operazioni massive con &amp;lt;code&amp;gt;chmod -R&amp;lt;/code&amp;gt;, e consigliato ricontrollare con &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Verifica tecnica rapida ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# ACL estese presenti?&lt;br /&gt;
ls -l /percorso   # il &#039;+&#039; nei permessi indica ACL estese&lt;br /&gt;
&lt;br /&gt;
# dettaglio completo&lt;br /&gt;
getfacl /percorso&lt;br /&gt;
&lt;br /&gt;
# proprietario/gruppo/mode classico&lt;br /&gt;
stat /percorso&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Policy operativa per directory condivise ===&lt;br /&gt;
&lt;br /&gt;
Pattern comune in produzione:&lt;br /&gt;
1. Proprietario applicativo stabile (es. utente servizio)&lt;br /&gt;
2. Gruppo di lavoro dedicato&lt;br /&gt;
3. ACL nominate solo per eccezioni reali&lt;br /&gt;
4. Default ACL sulle sole directory che generano nuovi file&lt;br /&gt;
5. Audit periodico e rimozione entry obsolete&lt;br /&gt;
&lt;br /&gt;
=== Backup e ripristino ACL ===&lt;br /&gt;
&lt;br /&gt;
Prima di cambi strutturali conviene salvare ACL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
getfacl -R /srv/shared &amp;gt; /root/acl-backup.txt&lt;br /&gt;
setfacl --restore=/root/acl-backup.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni utili avanzate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# rimuove ACL estese (mantiene permessi base)&lt;br /&gt;
setfacl -b /percorso&lt;br /&gt;
&lt;br /&gt;
# rimuove ACL default&lt;br /&gt;
setfacl -k /directory&lt;br /&gt;
&lt;br /&gt;
# modifica ricorsiva&lt;br /&gt;
setfacl -R -m u:deploy:rwX /srv/shared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota su &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;: assegna execute solo a directory (e file che gia avevano execute), utile per evitare execute indiscriminato sui file normali.&lt;br /&gt;
&lt;br /&gt;
=== Filesystem e compatibilita ===&lt;br /&gt;
&lt;br /&gt;
Sui filesystem Linux moderni (ext4, XFS) ACL sono normalmente disponibili. In ambienti particolari verificare:&lt;br /&gt;
* opzioni di mount&lt;br /&gt;
* supporto lato filesystem remoto&lt;br /&gt;
* differenze con modelli ACL non POSIX (es. NFSv4 ACL)&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting tipico ===&lt;br /&gt;
&lt;br /&gt;
Se &amp;quot;i permessi sembrano giusti ma non funziona&amp;quot;:&lt;br /&gt;
1. verificare path completo (permessi su ogni directory padre)&lt;br /&gt;
2. controllare &amp;lt;code&amp;gt;mask&amp;lt;/code&amp;gt;&lt;br /&gt;
3. confermare utente/gruppi reali del processo&lt;br /&gt;
4. verificare SELinux/AppArmor se presenti&lt;br /&gt;
5. testare accesso con utente reale del servizio&lt;br /&gt;
&lt;br /&gt;
Comando utile per path diagnostics:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
namei -om /percorso/file&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=607</id>
		<title>Tips Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=607"/>
		<updated>2026-03-20T10:26:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* ACL Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Breve raccolta di riferimenti operativi Linux usati nel contesto GazziNet. La pagina serve come indice rapido per verifiche, troubleshooting e accesso ai sotto-argomenti gia documentati nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Controllo tempo di risposta sito ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k --connect-timeout 30 --max-time 30 --write-out &#039;%{time_total};%{http_code}\n&#039; http://www.gazzi.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stato del sistema ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
uname -a&lt;br /&gt;
hostnamectl&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Processi e servizi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | less&lt;br /&gt;
systemctl --failed&lt;br /&gt;
systemctl status nome-servizio&lt;br /&gt;
journalctl -xeu nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e porte ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
ss -tulpn&lt;br /&gt;
ping -c 4 host_o_ip&lt;br /&gt;
curl -I https://host_o_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ACL Linux ===&lt;br /&gt;
&lt;br /&gt;
[[ACL_Linux:_storia,_concetti_e_uso_pratico]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comandi Linux di base ==&lt;br /&gt;
&lt;br /&gt;
=== Navigazione e file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwd&lt;br /&gt;
ls -la&lt;br /&gt;
cd /percorso&lt;br /&gt;
mkdir nome-directory&lt;br /&gt;
touch file.txt&lt;br /&gt;
cp sorgente destinazione&lt;br /&gt;
mv vecchio nuovo&lt;br /&gt;
rm file.txt&lt;br /&gt;
rm -r directory&lt;br /&gt;
cat file.txt&lt;br /&gt;
less file.txt&lt;br /&gt;
head -n 20 file.txt&lt;br /&gt;
tail -n 20 file.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ricerca rapida ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep -n parola file.txt&lt;br /&gt;
grep -R &amp;quot;pattern&amp;quot; /percorso&lt;br /&gt;
find /percorso -name &amp;quot;*.log&amp;quot;&lt;br /&gt;
find /percorso -type f -mtime -1&lt;br /&gt;
which comando&lt;br /&gt;
whereis comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Permessi e proprieta ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l&lt;br /&gt;
chmod 644 file.txt&lt;br /&gt;
chmod +x script.sh&lt;br /&gt;
chown utente:gruppo file.txt&lt;br /&gt;
id&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Archivi e trasferimento ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar -czf archivio.tar.gz directory/&lt;br /&gt;
tar -xzf archivio.tar.gz&lt;br /&gt;
scp file.txt utente@host:/percorso/&lt;br /&gt;
rsync -av origine/ destinazione/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheda rapida awk ==&lt;br /&gt;
awk e utile quando serve estrarre colonne, filtrare righe o fare piccoli report da output testuali senza aprire editor o scrivere script piu lunghi.&lt;br /&gt;
&lt;br /&gt;
=== Sintassi minima ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;condizione { azione }&#039; file&lt;br /&gt;
comando | awk &#039;condizione { azione }&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Usi tipici ===&lt;br /&gt;
&lt;br /&gt;
==== Stampare colonne specifiche ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;{print $1, $2, $8}&#039;&lt;br /&gt;
df -h | awk &#039;{print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saltare l&#039;intestazione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 {print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrare righe che contengono una condizione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -tulpn | awk &#039;/LISTEN/ {print $1, $5, $7}&#039;&lt;br /&gt;
ps -ef | awk &#039;/nginx/ &amp;amp;&amp;amp; !/awk/ {print $2, $8}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Usare un separatore diverso ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{print $1, $7}&#039; /etc/passwd&lt;br /&gt;
awk -F= &#039;{print $1, $2}&#039; file.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fare conteggi e somme ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;END {print NR &amp;quot; righe totali&amp;quot;}&#039;&lt;br /&gt;
awk &#039;{somma += $1} END {print somma}&#039; numeri.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mostrare solo righe sopra una soglia ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 &amp;amp;&amp;amp; $5+0 &amp;gt;= 80 {print $1, $5, $6}&#039;&lt;br /&gt;
free -m | awk &#039;/Mem:/ {print &amp;quot;RAM usata:&amp;quot;, $3 &amp;quot; MB&amp;quot;}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Formattare output in modo leggibile ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{printf &amp;quot;utente=%s shell=%s&lt;br /&gt;
&amp;quot;, $1, $7}&#039; /etc/passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Note pratiche su awk ===&lt;br /&gt;
* `NR` indica il numero di riga corrente.&lt;br /&gt;
* `$1`, `$2`, `$3` indicano la prima, seconda e terza colonna.&lt;br /&gt;
* `-F` imposta il separatore di campo.&lt;br /&gt;
* In output da comandi di sistema, awk e molto utile insieme a `grep`, `sort`, `uniq` e `xargs`.&lt;br /&gt;
* Se l&#039;output contiene spazi irregolari, verificare prima il separatore reale o usare `printf` invece di `print`.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting operativo ==&lt;br /&gt;
&lt;br /&gt;
=== Log principali ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
journalctl -b&lt;br /&gt;
journalctl -p err -b&lt;br /&gt;
tail -n 100 /var/log/messages&lt;br /&gt;
tail -n 100 /var/log/secure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spazio disco e inode ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
df -i&lt;br /&gt;
du -sh /var/* | sort -h&lt;br /&gt;
find /var/log -type f -size +100M -ls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mount e multipath ===&lt;br /&gt;
Per ambienti con storage esterno o SAN, usare le procedure dedicate prima di eseguire rescan o interventi sui device.&lt;br /&gt;
&lt;br /&gt;
* [[Rescan MultiPath fisica]]&lt;br /&gt;
&lt;br /&gt;
== Pacchetti e repository ==&lt;br /&gt;
&lt;br /&gt;
=== Verifiche base ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | wc -l&lt;br /&gt;
rpm -q nome-pacchetto&lt;br /&gt;
which comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Riferimenti dedicati ===&lt;br /&gt;
* [[Differenze tra le principali distribuzioni Linux]]&lt;br /&gt;
* [[PIP]]&lt;br /&gt;
* [[EPEL Oracle]]&lt;br /&gt;
&lt;br /&gt;
== Accesso remoto e identita ==&lt;br /&gt;
* [[GestioneSSHCertificati]]&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[RustDesk]]&lt;br /&gt;
&lt;br /&gt;
== Script e analisi ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[AnalisiServer]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Deleted Files|Deleted Files]]&lt;br /&gt;
&lt;br /&gt;
== Configurazione e sistema ==&lt;br /&gt;
* [[TimeZone]]&lt;br /&gt;
&lt;br /&gt;
== Note d&#039;uso ==&lt;br /&gt;
* Preferire sempre verifiche non invasive prima di riavvii o fix correttivi.&lt;br /&gt;
* Se il problema coinvolge storage, autenticazione o rete, documentare subito hostname, orario, sintomo e ultimo cambiamento noto.&lt;br /&gt;
* Spostare i casi ricorrenti in pagine dedicate invece di far crescere questa pagina senza struttura.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=606</id>
		<title>Tips Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=606"/>
		<updated>2026-03-20T10:21:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Verifiche rapide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Breve raccolta di riferimenti operativi Linux usati nel contesto GazziNet. La pagina serve come indice rapido per verifiche, troubleshooting e accesso ai sotto-argomenti gia documentati nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Controllo tempo di risposta sito ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k --connect-timeout 30 --max-time 30 --write-out &#039;%{time_total};%{http_code}\n&#039; http://www.gazzi.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stato del sistema ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
uname -a&lt;br /&gt;
hostnamectl&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Processi e servizi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | less&lt;br /&gt;
systemctl --failed&lt;br /&gt;
systemctl status nome-servizio&lt;br /&gt;
journalctl -xeu nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e porte ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
ss -tulpn&lt;br /&gt;
ping -c 4 host_o_ip&lt;br /&gt;
curl -I https://host_o_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ACL Linux ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comandi Linux di base ==&lt;br /&gt;
&lt;br /&gt;
=== Navigazione e file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwd&lt;br /&gt;
ls -la&lt;br /&gt;
cd /percorso&lt;br /&gt;
mkdir nome-directory&lt;br /&gt;
touch file.txt&lt;br /&gt;
cp sorgente destinazione&lt;br /&gt;
mv vecchio nuovo&lt;br /&gt;
rm file.txt&lt;br /&gt;
rm -r directory&lt;br /&gt;
cat file.txt&lt;br /&gt;
less file.txt&lt;br /&gt;
head -n 20 file.txt&lt;br /&gt;
tail -n 20 file.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ricerca rapida ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep -n parola file.txt&lt;br /&gt;
grep -R &amp;quot;pattern&amp;quot; /percorso&lt;br /&gt;
find /percorso -name &amp;quot;*.log&amp;quot;&lt;br /&gt;
find /percorso -type f -mtime -1&lt;br /&gt;
which comando&lt;br /&gt;
whereis comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Permessi e proprieta ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l&lt;br /&gt;
chmod 644 file.txt&lt;br /&gt;
chmod +x script.sh&lt;br /&gt;
chown utente:gruppo file.txt&lt;br /&gt;
id&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Archivi e trasferimento ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar -czf archivio.tar.gz directory/&lt;br /&gt;
tar -xzf archivio.tar.gz&lt;br /&gt;
scp file.txt utente@host:/percorso/&lt;br /&gt;
rsync -av origine/ destinazione/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheda rapida awk ==&lt;br /&gt;
awk e utile quando serve estrarre colonne, filtrare righe o fare piccoli report da output testuali senza aprire editor o scrivere script piu lunghi.&lt;br /&gt;
&lt;br /&gt;
=== Sintassi minima ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;condizione { azione }&#039; file&lt;br /&gt;
comando | awk &#039;condizione { azione }&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Usi tipici ===&lt;br /&gt;
&lt;br /&gt;
==== Stampare colonne specifiche ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;{print $1, $2, $8}&#039;&lt;br /&gt;
df -h | awk &#039;{print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saltare l&#039;intestazione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 {print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrare righe che contengono una condizione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -tulpn | awk &#039;/LISTEN/ {print $1, $5, $7}&#039;&lt;br /&gt;
ps -ef | awk &#039;/nginx/ &amp;amp;&amp;amp; !/awk/ {print $2, $8}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Usare un separatore diverso ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{print $1, $7}&#039; /etc/passwd&lt;br /&gt;
awk -F= &#039;{print $1, $2}&#039; file.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fare conteggi e somme ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;END {print NR &amp;quot; righe totali&amp;quot;}&#039;&lt;br /&gt;
awk &#039;{somma += $1} END {print somma}&#039; numeri.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mostrare solo righe sopra una soglia ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 &amp;amp;&amp;amp; $5+0 &amp;gt;= 80 {print $1, $5, $6}&#039;&lt;br /&gt;
free -m | awk &#039;/Mem:/ {print &amp;quot;RAM usata:&amp;quot;, $3 &amp;quot; MB&amp;quot;}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Formattare output in modo leggibile ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{printf &amp;quot;utente=%s shell=%s&lt;br /&gt;
&amp;quot;, $1, $7}&#039; /etc/passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Note pratiche su awk ===&lt;br /&gt;
* `NR` indica il numero di riga corrente.&lt;br /&gt;
* `$1`, `$2`, `$3` indicano la prima, seconda e terza colonna.&lt;br /&gt;
* `-F` imposta il separatore di campo.&lt;br /&gt;
* In output da comandi di sistema, awk e molto utile insieme a `grep`, `sort`, `uniq` e `xargs`.&lt;br /&gt;
* Se l&#039;output contiene spazi irregolari, verificare prima il separatore reale o usare `printf` invece di `print`.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting operativo ==&lt;br /&gt;
&lt;br /&gt;
=== Log principali ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
journalctl -b&lt;br /&gt;
journalctl -p err -b&lt;br /&gt;
tail -n 100 /var/log/messages&lt;br /&gt;
tail -n 100 /var/log/secure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spazio disco e inode ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
df -i&lt;br /&gt;
du -sh /var/* | sort -h&lt;br /&gt;
find /var/log -type f -size +100M -ls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mount e multipath ===&lt;br /&gt;
Per ambienti con storage esterno o SAN, usare le procedure dedicate prima di eseguire rescan o interventi sui device.&lt;br /&gt;
&lt;br /&gt;
* [[Rescan MultiPath fisica]]&lt;br /&gt;
&lt;br /&gt;
== Pacchetti e repository ==&lt;br /&gt;
&lt;br /&gt;
=== Verifiche base ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | wc -l&lt;br /&gt;
rpm -q nome-pacchetto&lt;br /&gt;
which comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Riferimenti dedicati ===&lt;br /&gt;
* [[Differenze tra le principali distribuzioni Linux]]&lt;br /&gt;
* [[PIP]]&lt;br /&gt;
* [[EPEL Oracle]]&lt;br /&gt;
&lt;br /&gt;
== Accesso remoto e identita ==&lt;br /&gt;
* [[GestioneSSHCertificati]]&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[RustDesk]]&lt;br /&gt;
&lt;br /&gt;
== Script e analisi ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[AnalisiServer]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Deleted Files|Deleted Files]]&lt;br /&gt;
&lt;br /&gt;
== Configurazione e sistema ==&lt;br /&gt;
* [[TimeZone]]&lt;br /&gt;
&lt;br /&gt;
== Note d&#039;uso ==&lt;br /&gt;
* Preferire sempre verifiche non invasive prima di riavvii o fix correttivi.&lt;br /&gt;
* Se il problema coinvolge storage, autenticazione o rete, documentare subito hostname, orario, sintomo e ultimo cambiamento noto.&lt;br /&gt;
* Spostare i casi ricorrenti in pagine dedicate invece di far crescere questa pagina senza struttura.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=605</id>
		<title>Tips Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=605"/>
		<updated>2026-03-20T10:18:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Verifiche rapide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Breve raccolta di riferimenti operativi Linux usati nel contesto GazziNet. La pagina serve come indice rapido per verifiche, troubleshooting e accesso ai sotto-argomenti gia documentati nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Controllo tempo di risposta sito ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k --connect-timeout 30 --max-time 30 --write-out &#039;%{time_total};%{http_code}\n&#039; http://www.gazzi.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stato del sistema ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
uname -a&lt;br /&gt;
hostnamectl&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Processi e servizi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | less&lt;br /&gt;
systemctl --failed&lt;br /&gt;
systemctl status nome-servizio&lt;br /&gt;
journalctl -xeu nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e porte ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
ss -tulpn&lt;br /&gt;
ping -c 4 host_o_ip&lt;br /&gt;
curl -I https://host_o_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comandi Linux di base ==&lt;br /&gt;
&lt;br /&gt;
=== Navigazione e file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwd&lt;br /&gt;
ls -la&lt;br /&gt;
cd /percorso&lt;br /&gt;
mkdir nome-directory&lt;br /&gt;
touch file.txt&lt;br /&gt;
cp sorgente destinazione&lt;br /&gt;
mv vecchio nuovo&lt;br /&gt;
rm file.txt&lt;br /&gt;
rm -r directory&lt;br /&gt;
cat file.txt&lt;br /&gt;
less file.txt&lt;br /&gt;
head -n 20 file.txt&lt;br /&gt;
tail -n 20 file.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ricerca rapida ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep -n parola file.txt&lt;br /&gt;
grep -R &amp;quot;pattern&amp;quot; /percorso&lt;br /&gt;
find /percorso -name &amp;quot;*.log&amp;quot;&lt;br /&gt;
find /percorso -type f -mtime -1&lt;br /&gt;
which comando&lt;br /&gt;
whereis comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Permessi e proprieta ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l&lt;br /&gt;
chmod 644 file.txt&lt;br /&gt;
chmod +x script.sh&lt;br /&gt;
chown utente:gruppo file.txt&lt;br /&gt;
id&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Archivi e trasferimento ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar -czf archivio.tar.gz directory/&lt;br /&gt;
tar -xzf archivio.tar.gz&lt;br /&gt;
scp file.txt utente@host:/percorso/&lt;br /&gt;
rsync -av origine/ destinazione/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheda rapida awk ==&lt;br /&gt;
awk e utile quando serve estrarre colonne, filtrare righe o fare piccoli report da output testuali senza aprire editor o scrivere script piu lunghi.&lt;br /&gt;
&lt;br /&gt;
=== Sintassi minima ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;condizione { azione }&#039; file&lt;br /&gt;
comando | awk &#039;condizione { azione }&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Usi tipici ===&lt;br /&gt;
&lt;br /&gt;
==== Stampare colonne specifiche ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;{print $1, $2, $8}&#039;&lt;br /&gt;
df -h | awk &#039;{print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saltare l&#039;intestazione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 {print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrare righe che contengono una condizione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -tulpn | awk &#039;/LISTEN/ {print $1, $5, $7}&#039;&lt;br /&gt;
ps -ef | awk &#039;/nginx/ &amp;amp;&amp;amp; !/awk/ {print $2, $8}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Usare un separatore diverso ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{print $1, $7}&#039; /etc/passwd&lt;br /&gt;
awk -F= &#039;{print $1, $2}&#039; file.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fare conteggi e somme ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;END {print NR &amp;quot; righe totali&amp;quot;}&#039;&lt;br /&gt;
awk &#039;{somma += $1} END {print somma}&#039; numeri.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mostrare solo righe sopra una soglia ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 &amp;amp;&amp;amp; $5+0 &amp;gt;= 80 {print $1, $5, $6}&#039;&lt;br /&gt;
free -m | awk &#039;/Mem:/ {print &amp;quot;RAM usata:&amp;quot;, $3 &amp;quot; MB&amp;quot;}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Formattare output in modo leggibile ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{printf &amp;quot;utente=%s shell=%s&lt;br /&gt;
&amp;quot;, $1, $7}&#039; /etc/passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Note pratiche su awk ===&lt;br /&gt;
* `NR` indica il numero di riga corrente.&lt;br /&gt;
* `$1`, `$2`, `$3` indicano la prima, seconda e terza colonna.&lt;br /&gt;
* `-F` imposta il separatore di campo.&lt;br /&gt;
* In output da comandi di sistema, awk e molto utile insieme a `grep`, `sort`, `uniq` e `xargs`.&lt;br /&gt;
* Se l&#039;output contiene spazi irregolari, verificare prima il separatore reale o usare `printf` invece di `print`.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting operativo ==&lt;br /&gt;
&lt;br /&gt;
=== Log principali ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
journalctl -b&lt;br /&gt;
journalctl -p err -b&lt;br /&gt;
tail -n 100 /var/log/messages&lt;br /&gt;
tail -n 100 /var/log/secure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spazio disco e inode ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
df -i&lt;br /&gt;
du -sh /var/* | sort -h&lt;br /&gt;
find /var/log -type f -size +100M -ls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mount e multipath ===&lt;br /&gt;
Per ambienti con storage esterno o SAN, usare le procedure dedicate prima di eseguire rescan o interventi sui device.&lt;br /&gt;
&lt;br /&gt;
* [[Rescan MultiPath fisica]]&lt;br /&gt;
&lt;br /&gt;
== Pacchetti e repository ==&lt;br /&gt;
&lt;br /&gt;
=== Verifiche base ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | wc -l&lt;br /&gt;
rpm -q nome-pacchetto&lt;br /&gt;
which comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Riferimenti dedicati ===&lt;br /&gt;
* [[Differenze tra le principali distribuzioni Linux]]&lt;br /&gt;
* [[PIP]]&lt;br /&gt;
* [[EPEL Oracle]]&lt;br /&gt;
&lt;br /&gt;
== Accesso remoto e identita ==&lt;br /&gt;
* [[GestioneSSHCertificati]]&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[RustDesk]]&lt;br /&gt;
&lt;br /&gt;
== Script e analisi ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[AnalisiServer]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Deleted Files|Deleted Files]]&lt;br /&gt;
&lt;br /&gt;
== Configurazione e sistema ==&lt;br /&gt;
* [[TimeZone]]&lt;br /&gt;
&lt;br /&gt;
== Note d&#039;uso ==&lt;br /&gt;
* Preferire sempre verifiche non invasive prima di riavvii o fix correttivi.&lt;br /&gt;
* Se il problema coinvolge storage, autenticazione o rete, documentare subito hostname, orario, sintomo e ultimo cambiamento noto.&lt;br /&gt;
* Spostare i casi ricorrenti in pagine dedicate invece di far crescere questa pagina senza struttura.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=TIPS_Linux&amp;diff=604</id>
		<title>TIPS Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=TIPS_Linux&amp;diff=604"/>
		<updated>2026-03-20T10:11:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiunto link a ACL Linux: storia, concetti e uso pratico&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;\n* [[ACL Linux: storia, concetti e uso pratico]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=603</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=603"/>
		<updated>2026-03-20T10:08:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: Contenuto reso generico: storia e uso ACL Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;ACL&#039;&#039;&#039; (&#039;&#039;Access Control List&#039;&#039;) in Linux estendono il modello classico dei permessi Unix e consentono un controllo accessi piu granulare.&lt;br /&gt;
&lt;br /&gt;
Quando owner, group e others non bastano, le ACL permettono di assegnare regole specifiche a singoli utenti o gruppi mantenendo il principio del minimo privilegio.&lt;br /&gt;
&lt;br /&gt;
== Concetti base ==&lt;br /&gt;
&lt;br /&gt;
Nel modello standard Unix hai tre classi di permessi:&lt;br /&gt;
* proprietario&lt;br /&gt;
* gruppo&lt;br /&gt;
* altri&lt;br /&gt;
&lt;br /&gt;
Con le ACL puoi aggiungere entry dedicate, ad esempio per dare accesso a un utente tecnico senza cambiare proprietario della risorsa.&lt;br /&gt;
&lt;br /&gt;
Comandi principali:&lt;br /&gt;
* &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per leggere ACL correnti&lt;br /&gt;
* &amp;lt;code&amp;gt;setfacl&amp;lt;/code&amp;gt; per creare/modificare/rimuovere ACL&lt;br /&gt;
&lt;br /&gt;
== Esempi pratici ==&lt;br /&gt;
&lt;br /&gt;
=== Concedere permessi a un utente specifico ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -m u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definire ACL di default su una directory ===&lt;br /&gt;
&lt;br /&gt;
Le ACL di default vengono ereditate da nuovi file e directory creati al suo interno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -m d:u:deploy:rwx /srv/progetto/shared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verificare ACL effettive ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
getfacl /srv/progetto/shared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: la voce &#039;&#039;&#039;mask&#039;&#039;&#039; puo limitare i permessi realmente applicati.&lt;br /&gt;
&lt;br /&gt;
== Relazione con chmod ==&lt;br /&gt;
&lt;br /&gt;
ACL e permessi tradizionali convivono. Dopo modifiche con &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;, e buona pratica controllare sempre il risultato con &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt; per verificare eventuali effetti sulla maschera ACL.&lt;br /&gt;
&lt;br /&gt;
== Quando usare le ACL ==&lt;br /&gt;
&lt;br /&gt;
* ambienti multiutente&lt;br /&gt;
* directory condivise con esigenze di accesso diverse&lt;br /&gt;
* casi in cui si vogliono evitare permessi eccessivamente ampi (es. &amp;lt;code&amp;gt;777&amp;lt;/code&amp;gt;)&lt;br /&gt;
* sistemi in cui serve tracciare policy accessi piu rigorose&lt;br /&gt;
&lt;br /&gt;
== Storia delle ACL ==&lt;br /&gt;
&lt;br /&gt;
Timeline essenziale:&lt;br /&gt;
* &#039;&#039;&#039;Anni 60-70&#039;&#039;&#039;: concetti ACL gia presenti in sistemi multiutente storici&lt;br /&gt;
* &#039;&#039;&#039;Anni 90&#039;&#039;&#039;: sviluppo delle estensioni sicurezza IEEE POSIX 1003.1e&lt;br /&gt;
* &#039;&#039;&#039;Ottobre 1997&#039;&#039;&#039;: riferimento tecnico nella bozza POSIX.1e Draft 17&lt;br /&gt;
* &#039;&#039;&#039;Gennaio 1998&#039;&#039;&#039;: standardizzazione POSIX.1e ritirata; il modello ACL continua comunque a essere implementato&lt;br /&gt;
* &#039;&#039;&#039;Novembre 2002&#039;&#039;&#039;: supporto ACL POSIX incluso nel kernel Linux 2.5.46 (ramo di sviluppo)&lt;br /&gt;
* &#039;&#039;&#039;Dal 2003 in poi&#039;&#039;&#039;: adozione ampia nei filesystem Linux usati in produzione&lt;br /&gt;
&lt;br /&gt;
In sintesi, pur senza standard finale ratificato, le ACL sono diventate uno strumento consolidato nell&#039;amministrazione Linux.&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
&lt;br /&gt;
* applicare ACL solo dove necessario&lt;br /&gt;
* documentare le regole nei runbook operativi&lt;br /&gt;
* verificare periodicamente configurazioni e ereditarieta&lt;br /&gt;
* mantenere un approccio minimo privilegio&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* [https://man7.org/linux/man-pages/man5/acl.5.html man page acl(5)]&lt;br /&gt;
* [https://atc.usenix.org/legacy/events/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/index.html USENIX 2003 - POSIX ACLs on Linux]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux_per_WordPress_e_MediaWiki&amp;diff=602</id>
		<title>ACL Linux per WordPress e MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux_per_WordPress_e_MediaWiki&amp;diff=602"/>
		<updated>2026-03-20T10:08:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin ha spostato la pagina ACL Linux per WordPress e MediaWiki a ACL Linux: storia, concetti e uso pratico: Titolo reso generico su ACL Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#RINVIA [[ACL Linux: storia, concetti e uso pratico]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=601</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=601"/>
		<updated>2026-03-20T10:08:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin ha spostato la pagina ACL Linux per WordPress e MediaWiki a ACL Linux: storia, concetti e uso pratico: Titolo reso generico su ACL Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;ACL&#039;&#039;&#039; (&#039;&#039;Access Control List&#039;&#039;) in Linux servono quando i permessi classici &amp;lt;code&amp;gt;rwx&amp;lt;/code&amp;gt; per &#039;&#039;owner/group/others&#039;&#039; non bastano.&lt;br /&gt;
&lt;br /&gt;
In un server con WordPress e MediaWiki, le ACL permettono di assegnare permessi mirati a utenti tecnici (es. deploy) senza aprire tutto con &amp;lt;code&amp;gt;chmod 777&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Cosa sono le ACL Linux ==&lt;br /&gt;
&lt;br /&gt;
Le ACL estendono il modello Unix tradizionale con regole aggiuntive per utenti e gruppi specifici.&lt;br /&gt;
&lt;br /&gt;
Comandi base:&lt;br /&gt;
* &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt;: legge ACL correnti&lt;br /&gt;
* &amp;lt;code&amp;gt;setfacl&amp;lt;/code&amp;gt;: aggiunge/modifica/rimuove ACL&lt;br /&gt;
&lt;br /&gt;
== Perche sono utili su WordPress e MediaWiki ==&lt;br /&gt;
&lt;br /&gt;
Scenario tipico: web server con utente &amp;lt;code&amp;gt;www-data&amp;lt;/code&amp;gt; e uno o piu utenti operativi.&lt;br /&gt;
Senza ACL si finisce spesso tra due estremi:&lt;br /&gt;
* permessi troppo stretti (operazioni bloccate)&lt;br /&gt;
* permessi troppo larghi (rischio sicurezza)&lt;br /&gt;
&lt;br /&gt;
Con ACL si applica il principio del minimo privilegio.&lt;br /&gt;
&lt;br /&gt;
=== Esempio WordPress ===&lt;br /&gt;
&lt;br /&gt;
Consentire a &amp;lt;code&amp;gt;deploy&amp;lt;/code&amp;gt; scrittura solo su uploads:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -R -m u:deploy:rwx /var/www/wordpress/wp-content/uploads&lt;br /&gt;
sudo setfacl -R -m d:u:deploy:rwx /var/www/wordpress/wp-content/uploads&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La regola &amp;lt;code&amp;gt;d:&amp;lt;/code&amp;gt; imposta ACL di default per file/cartelle creati in futuro.&lt;br /&gt;
&lt;br /&gt;
=== Esempio MediaWiki ===&lt;br /&gt;
&lt;br /&gt;
Gestire upload in &amp;lt;code&amp;gt;images&amp;lt;/code&amp;gt; con permessi mirati:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -R -m u:deploy:rwx /var/www/mediawiki/images&lt;br /&gt;
sudo setfacl -R -m d:u:deploy:rwx /var/www/mediawiki/images&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verifica ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
getfacl /var/www/wordpress/wp-content/uploads&lt;br /&gt;
getfacl /var/www/mediawiki/images&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: controllare sempre la voce &#039;&#039;&#039;mask&#039;&#039;&#039;, perche puo limitare i permessi effettivi.&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
&lt;br /&gt;
* evitare &amp;lt;code&amp;gt;777&amp;lt;/code&amp;gt;&lt;br /&gt;
* applicare ACL solo dove necessario&lt;br /&gt;
* usare ACL di default sulle directory con contenuti dinamici&lt;br /&gt;
* verificare ACL durante audit periodici&lt;br /&gt;
* documentare le regole operative&lt;br /&gt;
&lt;br /&gt;
== Storia delle ACL: quando sono nate ==&lt;br /&gt;
&lt;br /&gt;
Timeline essenziale:&lt;br /&gt;
* &#039;&#039;&#039;Anni 60-70&#039;&#039;&#039;: concetti ACL in sistemi multiutente storici&lt;br /&gt;
* &#039;&#039;&#039;Anni 90&#039;&#039;&#039;: sviluppo estensioni sicurezza IEEE POSIX 1003.1e&lt;br /&gt;
* &#039;&#039;&#039;Ottobre 1997&#039;&#039;&#039;: riferimento tecnico nella bozza POSIX.1e Draft 17&lt;br /&gt;
* &#039;&#039;&#039;Gennaio 1998&#039;&#039;&#039;: processo standard POSIX.1e ritirato, ma il modello ACL continua a essere usato&lt;br /&gt;
* &#039;&#039;&#039;Novembre 2002&#039;&#039;&#039;: ACL POSIX integrate nel kernel Linux 2.5.46 (ramo di sviluppo)&lt;br /&gt;
* &#039;&#039;&#039;Dal 2003 in poi&#039;&#039;&#039;: adozione ampia sui filesystem Linux server (ext*, XFS, altri)&lt;br /&gt;
&lt;br /&gt;
In pratica, anche senza standard finale ratificato, le ACL Linux sono diventate uno strumento stabile e diffuso.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* [https://atc.usenix.org/legacy/events/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/index.html USENIX 2003 - POSIX ACLs on Linux]&lt;br /&gt;
* [https://man7.org/linux/man-pages/man5/acl.5.html man page acl(5)]&lt;br /&gt;
* [https://lwn.net/Articles/660867/ LWN - contesto evoluzione ACL Linux]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=600</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=600"/>
		<updated>2026-03-20T10:04:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: Refinement formattazione articolo ACL Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduzione ==&lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;ACL&#039;&#039;&#039; (&#039;&#039;Access Control List&#039;&#039;) in Linux servono quando i permessi classici &amp;lt;code&amp;gt;rwx&amp;lt;/code&amp;gt; per &#039;&#039;owner/group/others&#039;&#039; non bastano.&lt;br /&gt;
&lt;br /&gt;
In un server con WordPress e MediaWiki, le ACL permettono di assegnare permessi mirati a utenti tecnici (es. deploy) senza aprire tutto con &amp;lt;code&amp;gt;chmod 777&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Cosa sono le ACL Linux ==&lt;br /&gt;
&lt;br /&gt;
Le ACL estendono il modello Unix tradizionale con regole aggiuntive per utenti e gruppi specifici.&lt;br /&gt;
&lt;br /&gt;
Comandi base:&lt;br /&gt;
* &amp;lt;code&amp;gt;getfacl&amp;lt;/code&amp;gt;: legge ACL correnti&lt;br /&gt;
* &amp;lt;code&amp;gt;setfacl&amp;lt;/code&amp;gt;: aggiunge/modifica/rimuove ACL&lt;br /&gt;
&lt;br /&gt;
== Perche sono utili su WordPress e MediaWiki ==&lt;br /&gt;
&lt;br /&gt;
Scenario tipico: web server con utente &amp;lt;code&amp;gt;www-data&amp;lt;/code&amp;gt; e uno o piu utenti operativi.&lt;br /&gt;
Senza ACL si finisce spesso tra due estremi:&lt;br /&gt;
* permessi troppo stretti (operazioni bloccate)&lt;br /&gt;
* permessi troppo larghi (rischio sicurezza)&lt;br /&gt;
&lt;br /&gt;
Con ACL si applica il principio del minimo privilegio.&lt;br /&gt;
&lt;br /&gt;
=== Esempio WordPress ===&lt;br /&gt;
&lt;br /&gt;
Consentire a &amp;lt;code&amp;gt;deploy&amp;lt;/code&amp;gt; scrittura solo su uploads:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -R -m u:deploy:rwx /var/www/wordpress/wp-content/uploads&lt;br /&gt;
sudo setfacl -R -m d:u:deploy:rwx /var/www/wordpress/wp-content/uploads&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La regola &amp;lt;code&amp;gt;d:&amp;lt;/code&amp;gt; imposta ACL di default per file/cartelle creati in futuro.&lt;br /&gt;
&lt;br /&gt;
=== Esempio MediaWiki ===&lt;br /&gt;
&lt;br /&gt;
Gestire upload in &amp;lt;code&amp;gt;images&amp;lt;/code&amp;gt; con permessi mirati:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -R -m u:deploy:rwx /var/www/mediawiki/images&lt;br /&gt;
sudo setfacl -R -m d:u:deploy:rwx /var/www/mediawiki/images&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verifica ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
getfacl /var/www/wordpress/wp-content/uploads&lt;br /&gt;
getfacl /var/www/mediawiki/images&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: controllare sempre la voce &#039;&#039;&#039;mask&#039;&#039;&#039;, perche puo limitare i permessi effettivi.&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
&lt;br /&gt;
* evitare &amp;lt;code&amp;gt;777&amp;lt;/code&amp;gt;&lt;br /&gt;
* applicare ACL solo dove necessario&lt;br /&gt;
* usare ACL di default sulle directory con contenuti dinamici&lt;br /&gt;
* verificare ACL durante audit periodici&lt;br /&gt;
* documentare le regole operative&lt;br /&gt;
&lt;br /&gt;
== Storia delle ACL: quando sono nate ==&lt;br /&gt;
&lt;br /&gt;
Timeline essenziale:&lt;br /&gt;
* &#039;&#039;&#039;Anni 60-70&#039;&#039;&#039;: concetti ACL in sistemi multiutente storici&lt;br /&gt;
* &#039;&#039;&#039;Anni 90&#039;&#039;&#039;: sviluppo estensioni sicurezza IEEE POSIX 1003.1e&lt;br /&gt;
* &#039;&#039;&#039;Ottobre 1997&#039;&#039;&#039;: riferimento tecnico nella bozza POSIX.1e Draft 17&lt;br /&gt;
* &#039;&#039;&#039;Gennaio 1998&#039;&#039;&#039;: processo standard POSIX.1e ritirato, ma il modello ACL continua a essere usato&lt;br /&gt;
* &#039;&#039;&#039;Novembre 2002&#039;&#039;&#039;: ACL POSIX integrate nel kernel Linux 2.5.46 (ramo di sviluppo)&lt;br /&gt;
* &#039;&#039;&#039;Dal 2003 in poi&#039;&#039;&#039;: adozione ampia sui filesystem Linux server (ext*, XFS, altri)&lt;br /&gt;
&lt;br /&gt;
In pratica, anche senza standard finale ratificato, le ACL Linux sono diventate uno strumento stabile e diffuso.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* [https://atc.usenix.org/legacy/events/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/index.html USENIX 2003 - POSIX ACLs on Linux]&lt;br /&gt;
* [https://man7.org/linux/man-pages/man5/acl.5.html man page acl(5)]&lt;br /&gt;
* [https://lwn.net/Articles/660867/ LWN - contesto evoluzione ACL Linux]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=599</id>
		<title>ACL Linux: storia, concetti e uso pratico</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=ACL_Linux:_storia,_concetti_e_uso_pratico&amp;diff=599"/>
		<updated>2026-03-20T10:03:50Z</updated>

		<summary type="html">&lt;p&gt;Admin: Nuovo articolo: ACL Linux, uso pratico su WordPress/MediaWiki e storia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ACL Linux per WordPress e MediaWiki: guida pratica e storia =&lt;br /&gt;
&lt;br /&gt;
Le &#039;&#039;&#039;ACL&#039;&#039;&#039; (&#039;&#039;Access Control List&#039;&#039;) in Linux servono quando i permessi classici ``rwx`` per &#039;&#039;owner/group/others&#039;&#039; non bastano.&lt;br /&gt;
&lt;br /&gt;
In un server con WordPress e MediaWiki, le ACL permettono di assegnare permessi mirati a utenti tecnici (es. deploy) senza aprire tutto con ``chmod 777``.&lt;br /&gt;
&lt;br /&gt;
== Cosa sono le ACL Linux ==&lt;br /&gt;
&lt;br /&gt;
Le ACL estendono il modello Unix tradizionale con regole aggiuntive per utenti e gruppi specifici.&lt;br /&gt;
&lt;br /&gt;
Comandi base:&lt;br /&gt;
* ``getfacl``: legge ACL correnti&lt;br /&gt;
* ``setfacl``: aggiunge/modifica/rimuove ACL&lt;br /&gt;
&lt;br /&gt;
== Perche sono utili su WordPress e MediaWiki ==&lt;br /&gt;
&lt;br /&gt;
Scenario tipico: web server con utente ``www-data`` e uno o piu utenti operativi.&lt;br /&gt;
Senza ACL si finisce spesso tra due estremi:&lt;br /&gt;
* permessi troppo stretti (operazioni bloccate)&lt;br /&gt;
* permessi troppo larghi (rischio sicurezza)&lt;br /&gt;
&lt;br /&gt;
Con ACL si applica il principio del minimo privilegio.&lt;br /&gt;
&lt;br /&gt;
=== Esempio WordPress ===&lt;br /&gt;
&lt;br /&gt;
Consentire a ``deploy`` scrittura solo su uploads:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -R -m u:deploy:rwx /var/www/wordpress/wp-content/uploads&lt;br /&gt;
sudo setfacl -R -m d:u:deploy:rwx /var/www/wordpress/wp-content/uploads&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La regola ``d:`` imposta ACL di default per file/cartelle creati in futuro.&lt;br /&gt;
&lt;br /&gt;
=== Esempio MediaWiki ===&lt;br /&gt;
&lt;br /&gt;
Gestire upload in ``images`` con permessi mirati:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo setfacl -R -m u:deploy:rwx /var/www/mediawiki/images&lt;br /&gt;
sudo setfacl -R -m d:u:deploy:rwx /var/www/mediawiki/images&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verifica ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
getfacl /var/www/wordpress/wp-content/uploads&lt;br /&gt;
getfacl /var/www/mediawiki/images&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: controllare sempre la voce &#039;&#039;&#039;mask&#039;&#039;&#039;, perche puo limitare i permessi effettivi.&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
&lt;br /&gt;
* evitare ``777``&lt;br /&gt;
* applicare ACL solo dove necessario&lt;br /&gt;
* usare ACL di default sulle directory con contenuti dinamici&lt;br /&gt;
* verificare ACL durante audit periodici&lt;br /&gt;
* documentare le regole operative&lt;br /&gt;
&lt;br /&gt;
== Storia delle ACL: quando sono nate ==&lt;br /&gt;
&lt;br /&gt;
Timeline essenziale:&lt;br /&gt;
* &#039;&#039;&#039;Anni 60-70&#039;&#039;&#039;: concetti ACL in sistemi multiutente storici&lt;br /&gt;
* &#039;&#039;&#039;Anni 90&#039;&#039;&#039;: sviluppo estensioni sicurezza IEEE POSIX 1003.1e&lt;br /&gt;
* &#039;&#039;&#039;Ottobre 1997&#039;&#039;&#039;: riferimento tecnico nella bozza POSIX.1e Draft 17&lt;br /&gt;
* &#039;&#039;&#039;Gennaio 1998&#039;&#039;&#039;: processo standard POSIX.1e ritirato, ma il modello ACL continua a essere usato&lt;br /&gt;
* &#039;&#039;&#039;Novembre 2002&#039;&#039;&#039;: ACL POSIX integrate nel kernel Linux 2.5.46 (ramo di sviluppo)&lt;br /&gt;
* &#039;&#039;&#039;Dal 2003 in poi&#039;&#039;&#039;: adozione ampia sui filesystem Linux server (ext*, XFS, altri)&lt;br /&gt;
&lt;br /&gt;
In pratica, anche senza standard finale ratificato, le ACL Linux sono diventate uno strumento stabile e diffuso.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* [https://atc.usenix.org/legacy/events/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/index.html USENIX 2003 - POSIX ACLs on Linux]&lt;br /&gt;
* [https://man7.org/linux/man-pages/man5/acl.5.html man page acl(5)]&lt;br /&gt;
* [https://lwn.net/Articles/660867/ LWN - contesto evoluzione ACL Linux]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=WSO2&amp;diff=598</id>
		<title>WSO2</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=WSO2&amp;diff=598"/>
		<updated>2026-03-19T12:13:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiunte note sistemistiche, installazione e esempio deployment.toml&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
WSO2 e una piattaforma open source usata per integrazione applicativa, gestione API, autenticazione e orchestrazione di servizi. In pratica serve quando piu sistemi devono parlarsi in modo ordinato, sicuro e tracciabile.&lt;br /&gt;
&lt;br /&gt;
== Cos&#039;e WSO2 ==&lt;br /&gt;
WSO2 non e un singolo prodotto isolato, ma una famiglia di componenti software pensati per collegare applicazioni, esporre API e gestire identita digitali.&lt;br /&gt;
&lt;br /&gt;
Gli scenari piu tipici sono:&lt;br /&gt;
* integrazione tra applicazioni interne ed esterne&lt;br /&gt;
* esposizione controllata di API REST o SOAP&lt;br /&gt;
* autenticazione centralizzata e Single Sign-On&lt;br /&gt;
* mediazione tra protocolli, formati o sistemi diversi&lt;br /&gt;
* controllo traffico, sicurezza e monitoraggio delle chiamate&lt;br /&gt;
&lt;br /&gt;
== Come funziona in pratica ==&lt;br /&gt;
L&#039;idea di base e mettere un livello intermedio tra client e servizi backend.&lt;br /&gt;
&lt;br /&gt;
Schema logico tipico:&lt;br /&gt;
* un client invia una richiesta&lt;br /&gt;
* WSO2 riceve la richiesta&lt;br /&gt;
* applica policy, autenticazione o trasformazioni&lt;br /&gt;
* inoltra la chiamata al backend corretto&lt;br /&gt;
* restituisce la risposta nel formato previsto&lt;br /&gt;
&lt;br /&gt;
Questo permette di non esporre direttamente i sistemi interni e di concentrare in un punto unico logiche come sicurezza, rate limiting, routing, logging e trasformazione dei messaggi.&lt;br /&gt;
&lt;br /&gt;
== Componenti piu comuni ==&lt;br /&gt;
=== API Manager ===&lt;br /&gt;
Usato per pubblicare, proteggere e governare API. Permette di definire:&lt;br /&gt;
* autenticazione&lt;br /&gt;
* quote e throttling&lt;br /&gt;
* analytics&lt;br /&gt;
* catalogo API per sviluppatori&lt;br /&gt;
&lt;br /&gt;
=== Micro Integrator / Integration ===&lt;br /&gt;
Usato per creare flussi di integrazione tra sistemi. E utile quando bisogna:&lt;br /&gt;
* chiamare piu backend in sequenza&lt;br /&gt;
* trasformare payload XML o JSON&lt;br /&gt;
* instradare richieste in base a condizioni&lt;br /&gt;
* collegare database, servizi HTTP, code o sistemi legacy&lt;br /&gt;
&lt;br /&gt;
=== Identity Server ===&lt;br /&gt;
Usato per identity and access management. Serve per:&lt;br /&gt;
* Single Sign-On&lt;br /&gt;
* OAuth2 / OpenID Connect / SAML&lt;br /&gt;
* federazione identita&lt;br /&gt;
* gestione utenti, ruoli e policy di accesso&lt;br /&gt;
&lt;br /&gt;
== Dove ha senso usarlo ==&lt;br /&gt;
WSO2 ha senso quando l&#039;ambiente non e composto da una sola applicazione semplice, ma da piu sistemi che devono interoperare.&lt;br /&gt;
&lt;br /&gt;
Casi tipici:&lt;br /&gt;
* portali che parlano con piu backend&lt;br /&gt;
* integrazione tra ERP, CRM, applicazioni web e servizi esterni&lt;br /&gt;
* centralizzazione login e autorizzazioni&lt;br /&gt;
* pubblicazione API verso partner o applicazioni mobile&lt;br /&gt;
* riduzione dell&#039;accoppiamento diretto tra frontend e sistemi interni&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aspetti tecnici sistemistici ==&lt;br /&gt;
Dal punto di vista sistemistico, WSO2 viene installato di solito su:&lt;br /&gt;
* VM Linux dedicate&lt;br /&gt;
* container Docker&lt;br /&gt;
* cluster Kubernetes quando serve scalabilita o gestione cloud-native&lt;br /&gt;
&lt;br /&gt;
Nelle installazioni tradizionali su VM, e comune trovare il prodotto sotto percorsi come:&lt;br /&gt;
* `/opt/wso2/wso2mi-4.5.0`&lt;br /&gt;
* `/opt/wso2/wso2am-4.5.0`&lt;br /&gt;
&lt;br /&gt;
In pratica il layout tipico comprende:&lt;br /&gt;
* binari applicativi del prodotto&lt;br /&gt;
* file di configurazione `deployment.toml`&lt;br /&gt;
* keystore e truststore del runtime&lt;br /&gt;
* log applicativi sotto `repository/logs/`&lt;br /&gt;
* esecuzione dietro reverse proxy o load balancer&lt;br /&gt;
&lt;br /&gt;
Operativamente, i punti da presidiare sono:&lt;br /&gt;
* runtime Java e relativa memoria JVM&lt;br /&gt;
* certificati TLS e truststore&lt;br /&gt;
* porte esposte solo dove serve&lt;br /&gt;
* utente di servizio dedicato&lt;br /&gt;
* rotazione log, backup e monitoraggio&lt;br /&gt;
* eventuale database esterno per componenti che lo richiedono, come API Manager&lt;br /&gt;
&lt;br /&gt;
== Dove si configura ==&lt;br /&gt;
Per i prodotti piu comuni della famiglia WSO2, il file centrale di configurazione e normalmente `deployment.toml`.&lt;br /&gt;
&lt;br /&gt;
Percorsi tipici:&lt;br /&gt;
* `MI_HOME/conf/deployment.toml` per Micro Integrator&lt;br /&gt;
* `API-M_HOME/repository/conf/deployment.toml` per API Manager&lt;br /&gt;
&lt;br /&gt;
In produzione e buona pratica:&lt;br /&gt;
* non pubblicare direttamente tutte le porte del prodotto verso Internet&lt;br /&gt;
* mettere WSO2 dietro Nginx, Apache o un load balancer&lt;br /&gt;
* centralizzare TLS, logging e controllo accessi&lt;br /&gt;
* tenere separati dev, test e produzione&lt;br /&gt;
&lt;br /&gt;
== Esempio minimo di configurazione ==&lt;br /&gt;
Esempio illustrativo per una installazione WSO2 Micro Integrator su VM Linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /opt/wso2/wso2mi-4.5.0/conf/deployment.toml&lt;br /&gt;
&lt;br /&gt;
[server]&lt;br /&gt;
hostname = &amp;quot;mi01.gazzi.local&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[transport.passthru_http]&lt;br /&gt;
listener.enable = true&lt;br /&gt;
listener.parameters.port = 8280&lt;br /&gt;
&lt;br /&gt;
[transport.passthru_https]&lt;br /&gt;
listener.enable = true&lt;br /&gt;
listener.parameters.port = 8243&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Questo esempio mostra solo il minimo per capire la logica:&lt;br /&gt;
* `server.hostname` definisce l&#039;hostname esposto dal runtime&lt;br /&gt;
* `transport.passthru_http` abilita il listener HTTP&lt;br /&gt;
* `transport.passthru_https` abilita il listener HTTPS&lt;br /&gt;
&lt;br /&gt;
In un ambiente reale si aggiungono anche:&lt;br /&gt;
* certificati e truststore&lt;br /&gt;
* proxy o load balancer davanti al servizio&lt;br /&gt;
* parametri JVM&lt;br /&gt;
* configurazioni di sicurezza, autenticazione e database secondo il componente usato&lt;br /&gt;
&lt;br /&gt;
== Note sistemistiche pratiche ==&lt;br /&gt;
* Se il ruolo della macchina e integrazione interna, spesso si espone solo il reverse proxy e non tutte le porte native WSO2.&lt;br /&gt;
* Se si usa API Manager, documentare sempre database, hostname pubblici, keystore e policy gateway.&lt;br /&gt;
* Se si usa Micro Integrator, documentare endpoint backend, sequence, proxy service, retry e timeout.&lt;br /&gt;
* Prima di aggiornare versione o certificati, prevedere backup config e finestra di rollback.&lt;br /&gt;
&lt;br /&gt;
== Fonti ufficiali ==&lt;br /&gt;
* [https://mi.docs.wso2.com/en/latest/reference/config-catalog-mi/ WSO2 Integrator: MI Configuration Catalog]&lt;br /&gt;
* [https://apim.docs.wso2.com/en/latest/reference/config-catalog/ WSO2 API Manager Configuration Catalog]&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
* separa integrazione e sicurezza dalla logica applicativa dei singoli sistemi&lt;br /&gt;
* aiuta a standardizzare accessi e API&lt;br /&gt;
* rende piu semplice monitorare il traffico&lt;br /&gt;
* facilita riuso e governance delle integrazioni&lt;br /&gt;
* evita di duplicare logiche di autenticazione o mediazione in ogni applicazione&lt;br /&gt;
&lt;br /&gt;
== Limiti e attenzione operativa ==&lt;br /&gt;
* introduce complessita rispetto a integrazioni dirette molto semplici&lt;br /&gt;
* richiede governance chiara su API, versioni e policy&lt;br /&gt;
* se configurato male puo diventare un punto critico unico&lt;br /&gt;
* va documentato bene: endpoint, credenziali tecniche, mapping e dipendenze&lt;br /&gt;
&lt;br /&gt;
== In sintesi ==&lt;br /&gt;
WSO2 e utile come strato di integrazione e governo dei servizi. Non sostituisce le applicazioni di business, ma le collega, le protegge e ne rende piu ordinata l&#039;esposizione verso utenti, frontend o sistemi esterni.&lt;br /&gt;
&lt;br /&gt;
== Note operative ==&lt;br /&gt;
* Se usato in un progetto reale, documentare sempre flussi, endpoint, autenticazione e dipendenze.&lt;br /&gt;
* Distinguere chiaramente ambiente dev, test e produzione.&lt;br /&gt;
* Se la piattaforma viene adottata in modo stabile, creare pagine dedicate per installazione, deployment, backup e troubleshooting.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Sviluppo&amp;diff=597</id>
		<title>Sviluppo</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Sviluppo&amp;diff=597"/>
		<updated>2026-03-19T11:34:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiunto link a WSO2 nella sezione piattaforme&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Riferimenti rapidi per sviluppo, progetti e materiale tecnico collegato.&lt;br /&gt;
&lt;br /&gt;
== Progetti ==&lt;br /&gt;
* [[GestGazziNet]]&lt;br /&gt;
* [[Codex per struttura wiki e pubblicazione articoli]]&lt;br /&gt;
&lt;br /&gt;
== Piattaforme ==&lt;br /&gt;
* [[WSO2]]&lt;br /&gt;
&lt;br /&gt;
== Attivita tipiche ==&lt;br /&gt;
* raccolta requisiti e definizione obiettivo&lt;br /&gt;
* sviluppo script o utility&lt;br /&gt;
* verifica output e comportamento&lt;br /&gt;
* documentazione tecnica minima a fine attivita&lt;br /&gt;
&lt;br /&gt;
== Note operative ==&lt;br /&gt;
* Tenere separati progetto, ambiente, credenziali e documentazione.&lt;br /&gt;
* Se un progetto cresce, creare una pagina dedicata con installazione, uso, dipendenze e troubleshooting.&lt;br /&gt;
* Evitare di lasciare in questa pagina dettagli troppo specifici di un singolo tool o repository.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=WSO2&amp;diff=596</id>
		<title>WSO2</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=WSO2&amp;diff=596"/>
		<updated>2026-03-19T11:34:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: Creata scheda introduttiva WSO2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
WSO2 e una piattaforma open source usata per integrazione applicativa, gestione API, autenticazione e orchestrazione di servizi. In pratica serve quando piu sistemi devono parlarsi in modo ordinato, sicuro e tracciabile.&lt;br /&gt;
&lt;br /&gt;
== Cos&#039;e WSO2 ==&lt;br /&gt;
WSO2 non e un singolo prodotto isolato, ma una famiglia di componenti software pensati per collegare applicazioni, esporre API e gestire identita digitali.&lt;br /&gt;
&lt;br /&gt;
Gli scenari piu tipici sono:&lt;br /&gt;
* integrazione tra applicazioni interne ed esterne&lt;br /&gt;
* esposizione controllata di API REST o SOAP&lt;br /&gt;
* autenticazione centralizzata e Single Sign-On&lt;br /&gt;
* mediazione tra protocolli, formati o sistemi diversi&lt;br /&gt;
* controllo traffico, sicurezza e monitoraggio delle chiamate&lt;br /&gt;
&lt;br /&gt;
== Come funziona in pratica ==&lt;br /&gt;
L&#039;idea di base e mettere un livello intermedio tra client e servizi backend.&lt;br /&gt;
&lt;br /&gt;
Schema logico tipico:&lt;br /&gt;
* un client invia una richiesta&lt;br /&gt;
* WSO2 riceve la richiesta&lt;br /&gt;
* applica policy, autenticazione o trasformazioni&lt;br /&gt;
* inoltra la chiamata al backend corretto&lt;br /&gt;
* restituisce la risposta nel formato previsto&lt;br /&gt;
&lt;br /&gt;
Questo permette di non esporre direttamente i sistemi interni e di concentrare in un punto unico logiche come sicurezza, rate limiting, routing, logging e trasformazione dei messaggi.&lt;br /&gt;
&lt;br /&gt;
== Componenti piu comuni ==&lt;br /&gt;
=== API Manager ===&lt;br /&gt;
Usato per pubblicare, proteggere e governare API. Permette di definire:&lt;br /&gt;
* autenticazione&lt;br /&gt;
* quote e throttling&lt;br /&gt;
* analytics&lt;br /&gt;
* catalogo API per sviluppatori&lt;br /&gt;
&lt;br /&gt;
=== Micro Integrator / Integration ===&lt;br /&gt;
Usato per creare flussi di integrazione tra sistemi. E utile quando bisogna:&lt;br /&gt;
* chiamare piu backend in sequenza&lt;br /&gt;
* trasformare payload XML o JSON&lt;br /&gt;
* instradare richieste in base a condizioni&lt;br /&gt;
* collegare database, servizi HTTP, code o sistemi legacy&lt;br /&gt;
&lt;br /&gt;
=== Identity Server ===&lt;br /&gt;
Usato per identity and access management. Serve per:&lt;br /&gt;
* Single Sign-On&lt;br /&gt;
* OAuth2 / OpenID Connect / SAML&lt;br /&gt;
* federazione identita&lt;br /&gt;
* gestione utenti, ruoli e policy di accesso&lt;br /&gt;
&lt;br /&gt;
== Dove ha senso usarlo ==&lt;br /&gt;
WSO2 ha senso quando l&#039;ambiente non e composto da una sola applicazione semplice, ma da piu sistemi che devono interoperare.&lt;br /&gt;
&lt;br /&gt;
Casi tipici:&lt;br /&gt;
* portali che parlano con piu backend&lt;br /&gt;
* integrazione tra ERP, CRM, applicazioni web e servizi esterni&lt;br /&gt;
* centralizzazione login e autorizzazioni&lt;br /&gt;
* pubblicazione API verso partner o applicazioni mobile&lt;br /&gt;
* riduzione dell&#039;accoppiamento diretto tra frontend e sistemi interni&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
* separa integrazione e sicurezza dalla logica applicativa dei singoli sistemi&lt;br /&gt;
* aiuta a standardizzare accessi e API&lt;br /&gt;
* rende piu semplice monitorare il traffico&lt;br /&gt;
* facilita riuso e governance delle integrazioni&lt;br /&gt;
* evita di duplicare logiche di autenticazione o mediazione in ogni applicazione&lt;br /&gt;
&lt;br /&gt;
== Limiti e attenzione operativa ==&lt;br /&gt;
* introduce complessita rispetto a integrazioni dirette molto semplici&lt;br /&gt;
* richiede governance chiara su API, versioni e policy&lt;br /&gt;
* se configurato male puo diventare un punto critico unico&lt;br /&gt;
* va documentato bene: endpoint, credenziali tecniche, mapping e dipendenze&lt;br /&gt;
&lt;br /&gt;
== In sintesi ==&lt;br /&gt;
WSO2 e utile come strato di integrazione e governo dei servizi. Non sostituisce le applicazioni di business, ma le collega, le protegge e ne rende piu ordinata l&#039;esposizione verso utenti, frontend o sistemi esterni.&lt;br /&gt;
&lt;br /&gt;
== Note operative ==&lt;br /&gt;
* Se usato in un progetto reale, documentare sempre flussi, endpoint, autenticazione e dipendenze.&lt;br /&gt;
* Distinguere chiaramente ambiente dev, test e produzione.&lt;br /&gt;
* Se la piattaforma viene adottata in modo stabile, creare pagine dedicate per installazione, deployment, backup e troubleshooting.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=595</id>
		<title>Tips Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=595"/>
		<updated>2026-03-19T10:36:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiunti comandi Linux di base e scheda rapida awk&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Breve raccolta di riferimenti operativi Linux usati nel contesto GazziNet. La pagina serve come indice rapido per verifiche, troubleshooting e accesso ai sotto-argomenti gia documentati nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Controllo tempo di risposta sito ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k --connect-timeout 30 --max-time 30 --write-out &#039;%{time_total};%{http_code}\n&#039; http://www.gazzi.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stato del sistema ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
uname -a&lt;br /&gt;
hostnamectl&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Processi e servizi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | less&lt;br /&gt;
systemctl --failed&lt;br /&gt;
systemctl status nome-servizio&lt;br /&gt;
journalctl -xeu nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e porte ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
ss -tulpn&lt;br /&gt;
ping -c 4 host_o_ip&lt;br /&gt;
curl -I https://host_o_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandi Linux di base ==&lt;br /&gt;
&lt;br /&gt;
=== Navigazione e file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwd&lt;br /&gt;
ls -la&lt;br /&gt;
cd /percorso&lt;br /&gt;
mkdir nome-directory&lt;br /&gt;
touch file.txt&lt;br /&gt;
cp sorgente destinazione&lt;br /&gt;
mv vecchio nuovo&lt;br /&gt;
rm file.txt&lt;br /&gt;
rm -r directory&lt;br /&gt;
cat file.txt&lt;br /&gt;
less file.txt&lt;br /&gt;
head -n 20 file.txt&lt;br /&gt;
tail -n 20 file.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ricerca rapida ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep -n parola file.txt&lt;br /&gt;
grep -R &amp;quot;pattern&amp;quot; /percorso&lt;br /&gt;
find /percorso -name &amp;quot;*.log&amp;quot;&lt;br /&gt;
find /percorso -type f -mtime -1&lt;br /&gt;
which comando&lt;br /&gt;
whereis comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Permessi e proprieta ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l&lt;br /&gt;
chmod 644 file.txt&lt;br /&gt;
chmod +x script.sh&lt;br /&gt;
chown utente:gruppo file.txt&lt;br /&gt;
id&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Archivi e trasferimento ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar -czf archivio.tar.gz directory/&lt;br /&gt;
tar -xzf archivio.tar.gz&lt;br /&gt;
scp file.txt utente@host:/percorso/&lt;br /&gt;
rsync -av origine/ destinazione/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheda rapida awk ==&lt;br /&gt;
awk e utile quando serve estrarre colonne, filtrare righe o fare piccoli report da output testuali senza aprire editor o scrivere script piu lunghi.&lt;br /&gt;
&lt;br /&gt;
=== Sintassi minima ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;condizione { azione }&#039; file&lt;br /&gt;
comando | awk &#039;condizione { azione }&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Usi tipici ===&lt;br /&gt;
&lt;br /&gt;
==== Stampare colonne specifiche ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;{print $1, $2, $8}&#039;&lt;br /&gt;
df -h | awk &#039;{print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saltare l&#039;intestazione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 {print $1, $5, $6}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrare righe che contengono una condizione ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -tulpn | awk &#039;/LISTEN/ {print $1, $5, $7}&#039;&lt;br /&gt;
ps -ef | awk &#039;/nginx/ &amp;amp;&amp;amp; !/awk/ {print $2, $8}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Usare un separatore diverso ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{print $1, $7}&#039; /etc/passwd&lt;br /&gt;
awk -F= &#039;{print $1, $2}&#039; file.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fare conteggi e somme ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | awk &#039;END {print NR &amp;quot; righe totali&amp;quot;}&#039;&lt;br /&gt;
awk &#039;{somma += $1} END {print somma}&#039; numeri.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mostrare solo righe sopra una soglia ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h | awk &#039;NR&amp;gt;1 &amp;amp;&amp;amp; $5+0 &amp;gt;= 80 {print $1, $5, $6}&#039;&lt;br /&gt;
free -m | awk &#039;/Mem:/ {print &amp;quot;RAM usata:&amp;quot;, $3 &amp;quot; MB&amp;quot;}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Formattare output in modo leggibile ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk -F: &#039;{printf &amp;quot;utente=%s shell=%s&lt;br /&gt;
&amp;quot;, $1, $7}&#039; /etc/passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Note pratiche su awk ===&lt;br /&gt;
* `NR` indica il numero di riga corrente.&lt;br /&gt;
* `$1`, `$2`, `$3` indicano la prima, seconda e terza colonna.&lt;br /&gt;
* `-F` imposta il separatore di campo.&lt;br /&gt;
* In output da comandi di sistema, awk e molto utile insieme a `grep`, `sort`, `uniq` e `xargs`.&lt;br /&gt;
* Se l&#039;output contiene spazi irregolari, verificare prima il separatore reale o usare `printf` invece di `print`.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting operativo ==&lt;br /&gt;
&lt;br /&gt;
=== Log principali ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
journalctl -b&lt;br /&gt;
journalctl -p err -b&lt;br /&gt;
tail -n 100 /var/log/messages&lt;br /&gt;
tail -n 100 /var/log/secure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spazio disco e inode ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
df -i&lt;br /&gt;
du -sh /var/* | sort -h&lt;br /&gt;
find /var/log -type f -size +100M -ls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mount e multipath ===&lt;br /&gt;
Per ambienti con storage esterno o SAN, usare le procedure dedicate prima di eseguire rescan o interventi sui device.&lt;br /&gt;
&lt;br /&gt;
* [[Rescan MultiPath fisica]]&lt;br /&gt;
&lt;br /&gt;
== Pacchetti e repository ==&lt;br /&gt;
&lt;br /&gt;
=== Verifiche base ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | wc -l&lt;br /&gt;
rpm -q nome-pacchetto&lt;br /&gt;
which comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Riferimenti dedicati ===&lt;br /&gt;
* [[Differenze tra le principali distribuzioni Linux]]&lt;br /&gt;
* [[PIP]]&lt;br /&gt;
* [[EPEL Oracle]]&lt;br /&gt;
&lt;br /&gt;
== Accesso remoto e identita ==&lt;br /&gt;
* [[GestioneSSHCertificati]]&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[RustDesk]]&lt;br /&gt;
&lt;br /&gt;
== Script e analisi ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[AnalisiServer]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Deleted Files|Deleted Files]]&lt;br /&gt;
&lt;br /&gt;
== Configurazione e sistema ==&lt;br /&gt;
* [[TimeZone]]&lt;br /&gt;
&lt;br /&gt;
== Note d&#039;uso ==&lt;br /&gt;
* Preferire sempre verifiche non invasive prima di riavvii o fix correttivi.&lt;br /&gt;
* Se il problema coinvolge storage, autenticazione o rete, documentare subito hostname, orario, sintomo e ultimo cambiamento noto.&lt;br /&gt;
* Spostare i casi ricorrenti in pagine dedicate invece di far crescere questa pagina senza struttura.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=PROXMOX&amp;diff=594</id>
		<title>PROXMOX</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=PROXMOX&amp;diff=594"/>
		<updated>2026-03-16T15:59:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiunti modello CPU e dettagli filesystem/storage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= PROXMOX =&lt;br /&gt;
&lt;br /&gt;
Scheda tecnica sintetica aggiornata al 16 marzo 2026, limitata a informazioni sistemistiche (hardware e filesystem/storage).&lt;br /&gt;
&lt;br /&gt;
== Versione piattaforma ==&lt;br /&gt;
* Proxmox VE 8.4.16 (release 8.4)&lt;br /&gt;
&lt;br /&gt;
== Hardware nodo ==&lt;br /&gt;
* Modello CPU: Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz&lt;br /&gt;
* CPU totali: 16 core&lt;br /&gt;
* Utilizzo CPU rilevato: ~7.42%&lt;br /&gt;
* RAM totale: 31.24 GB&lt;br /&gt;
* RAM utilizzata: 11.88 GB&lt;br /&gt;
&lt;br /&gt;
== Filesystem e storage ==&lt;br /&gt;
* Disco sistema: 19.50 GB totali, 6.65 GB usati&lt;br /&gt;
* Tipologia storage Proxmox configurata: `dir`&lt;br /&gt;
* Dischi fisici rilevati: 2 x NVMe Intel SSDPE2MX450G7 da ~450 GB ciascuno&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Storage !! Tipo !! Stato !! Capacita totale !! Utilizzato !! Contenuti&lt;br /&gt;
|-&lt;br /&gt;
| local || dir || available || 389.26 GB || 229.76 GB || backup, vztmpl, snippets, rootdir, images, iso&lt;br /&gt;
|-&lt;br /&gt;
| BCK || dir || available || 2672.64 GB || 553.85 GB || vztmpl, import, backup, iso, images, rootdir, snippets&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Check operativi consigliati ==&lt;br /&gt;
* Monitorare trend CPU/RAM e crescita storage.&lt;br /&gt;
* Tenere sotto controllo saturazione del disco sistema e dei datastore.&lt;br /&gt;
* Verificare periodicamente coerenza tra uso reale e policy di retention backup.&lt;br /&gt;
&lt;br /&gt;
== Riferimenti ==&lt;br /&gt;
* [[Tips Virtualizzatori]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=PROXMOX&amp;diff=593</id>
		<title>PROXMOX</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=PROXMOX&amp;diff=593"/>
		<updated>2026-03-16T15:18:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: Rimossa info host/proxmox01; mantenute solo info sistemistiche HW e filesystem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= PROXMOX =&lt;br /&gt;
&lt;br /&gt;
Scheda tecnica sintetica aggiornata al 16 marzo 2026, limitata a informazioni sistemistiche (hardware e filesystem/storage).&lt;br /&gt;
&lt;br /&gt;
== Versione piattaforma ==&lt;br /&gt;
* Proxmox VE 8.4.16 (release 8.4)&lt;br /&gt;
&lt;br /&gt;
== Hardware nodo ==&lt;br /&gt;
* CPU totali: 16 core&lt;br /&gt;
* Utilizzo CPU rilevato: ~7.42%&lt;br /&gt;
* RAM totale: 31.24 GB&lt;br /&gt;
* RAM utilizzata: 11.88 GB&lt;br /&gt;
&lt;br /&gt;
== Filesystem e storage ==&lt;br /&gt;
* Disco sistema: 19.50 GB totali, 6.65 GB usati&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Storage !! Stato !! Capacita totale !! Utilizzato !! Contenuti&lt;br /&gt;
|-&lt;br /&gt;
| local || available || 389.26 GB || 229.76 GB || backup, vztmpl, snippets, rootdir, images, iso&lt;br /&gt;
|-&lt;br /&gt;
| BCK || available || 2672.64 GB || 553.85 GB || vztmpl, import, backup, iso, images, rootdir, snippets&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Check operativi consigliati ==&lt;br /&gt;
* Monitorare trend CPU/RAM e crescita storage.&lt;br /&gt;
* Tenere sotto controllo saturazione del disco sistema e dei datastore.&lt;br /&gt;
* Verificare periodicamente coerenza tra uso reale e policy di retention backup.&lt;br /&gt;
&lt;br /&gt;
== Riferimenti ==&lt;br /&gt;
* [[Tips Virtualizzatori]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=PROXMOX&amp;diff=592</id>
		<title>PROXMOX</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=PROXMOX&amp;diff=592"/>
		<updated>2026-03-16T15:15:21Z</updated>

		<summary type="html">&lt;p&gt;Admin: Aggiornata scheda tecnica Proxmox con dettagli infrastrutturali (senza nomi VM)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= PROXMOX =&lt;br /&gt;
&lt;br /&gt;
Scheda tecnica operativa Proxmox VE aggiornata al 16 marzo 2026. Dati raccolti da API del nodo in produzione. Per policy i nomi di VM e CT non sono riportati.&lt;br /&gt;
&lt;br /&gt;
== Contesto piattaforma ==&lt;br /&gt;
* Host Proxmox: `proxmox01.gazzi.net:8006`&lt;br /&gt;
* Versione: Proxmox VE 8.4.16 (release 8.4)&lt;br /&gt;
* Cluster: singolo nodo&lt;br /&gt;
* Stato nodo: online&lt;br /&gt;
&lt;br /&gt;
== Risorse nodo ==&lt;br /&gt;
* CPU totali: 16 core&lt;br /&gt;
* Utilizzo CPU rilevato: ~7.42%&lt;br /&gt;
* RAM totale: 31.24 GB&lt;br /&gt;
* RAM utilizzata: 11.88 GB&lt;br /&gt;
* Disco sistema nodo: 19.50 GB totali, 6.65 GB usati&lt;br /&gt;
&lt;br /&gt;
== Inventario workload (anonimizzato) ==&lt;br /&gt;
=== Macchine virtuali (QEMU) ===&lt;br /&gt;
* Totali: 8&lt;br /&gt;
* Running: 7&lt;br /&gt;
* Stopped: 1&lt;br /&gt;
&lt;br /&gt;
=== Container (LXC) ===&lt;br /&gt;
* Totali: 4&lt;br /&gt;
* Running: 3&lt;br /&gt;
* Stopped: 1&lt;br /&gt;
&lt;br /&gt;
Nota: i nomi dei workload sono volutamente omessi.&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Storage !! Stato !! Capacita totale !! Utilizzato !! Contenuti&lt;br /&gt;
|-&lt;br /&gt;
| local || available || 389.26 GB || 229.76 GB || backup, vztmpl, snippets, rootdir, images, iso&lt;br /&gt;
|-&lt;br /&gt;
| BCK || available || 2672.64 GB || 553.85 GB || vztmpl, import, backup, iso, images, rootdir, snippets&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rete host ==&lt;br /&gt;
=== Bridge ===&lt;br /&gt;
* vmbr0: static (bridge principale con gateway)&lt;br /&gt;
* vmbr1: manual&lt;br /&gt;
* vmbr2: manual&lt;br /&gt;
&lt;br /&gt;
=== Interfacce fisiche ===&lt;br /&gt;
* eno1: manual&lt;br /&gt;
* eno2: manual&lt;br /&gt;
* eno3: manual&lt;br /&gt;
* eno4: manual&lt;br /&gt;
&lt;br /&gt;
== Check operativi consigliati ==&lt;br /&gt;
* Verificare periodicamente trend CPU/RAM e spazio su local e BCK.&lt;br /&gt;
* Monitorare workload stopped per evitare impatti su servizi attesi.&lt;br /&gt;
* Separare backup, ISO e immagini per evitare crescita non controllata.&lt;br /&gt;
* Documentare ogni modifica infrastrutturale direttamente in questa scheda.&lt;br /&gt;
&lt;br /&gt;
== Riferimenti ==&lt;br /&gt;
* [[Tips Virtualizzatori]]&lt;br /&gt;
* [https://www.gazzi.net/2026/03/16/struttura-proxmox-gazzinet-nodo-risorse-storage-e-rete-senza-nomi-vm/ Articolo WordPress: Struttura Proxmox GazziNet]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Automation&amp;diff=591</id>
		<title>Tips Automation</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Automation&amp;diff=591"/>
		<updated>2026-03-16T10:07:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Tips Automation =&lt;br /&gt;
&lt;br /&gt;
Breve raccolta di riferimenti operativi su automazione, scripting e workflow ripetibili usati nel contesto GazziNet.&lt;br /&gt;
&lt;br /&gt;
== Obiettivi tipici ==&lt;br /&gt;
* ridurre task manuali ripetitivi&lt;br /&gt;
* standardizzare controlli e verifiche&lt;br /&gt;
* velocizzare raccolta dati, report e aggiornamenti&lt;br /&gt;
* diminuire errori operativi su procedure frequenti&lt;br /&gt;
&lt;br /&gt;
== Approcci comuni ==&lt;br /&gt;
&lt;br /&gt;
=== Shell e script rapidi ===&lt;br /&gt;
Adatti a task semplici, verifiche host, raccolta log, sincronizzazioni e controlli periodici.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash script.sh&lt;br /&gt;
crontab -e&lt;br /&gt;
journalctl -u nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
Utile quando serve lavorare con API, parsing strutturato, generazione di contenuti, file JSON, flussi condizionali o automazioni piu ricche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python3 script.py&lt;br /&gt;
python3 -m venv .venv&lt;br /&gt;
pip install -r requirements.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Automazione schedulata ===&lt;br /&gt;
Per job periodici usare `cron`, systemd timer o servizi dedicati, evitando task manuali ricorrenti.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
crontab -l&lt;br /&gt;
systemctl list-timers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Casi d&#039;uso pratici ==&lt;br /&gt;
* controlli periodici su siti, servizi o endpoint&lt;br /&gt;
* generazione e pubblicazione di contenuti&lt;br /&gt;
* raccolta inventario hardware o software&lt;br /&gt;
* aggiornamento di pagine wiki o sistemi documentali&lt;br /&gt;
* export dati da API e report automatici&lt;br /&gt;
&lt;br /&gt;
== Sistemi automatici ==&lt;br /&gt;
* [[Tips Automation/Apache Airflow]]&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
* separare credenziali, codice e log&lt;br /&gt;
* usare file `.env` o meccanismi equivalenti per configurazione e segreti&lt;br /&gt;
* tenere traccia di input, output e stato del job&lt;br /&gt;
* preferire automazioni idempotenti, o comunque sicure da rilanciare&lt;br /&gt;
* aggiungere sempre una verifica finale del risultato&lt;br /&gt;
&lt;br /&gt;
== Riferimenti collegati ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Sviluppo]]&lt;br /&gt;
* [[Codex per struttura wiki e pubblicazione articoli]]&lt;br /&gt;
&lt;br /&gt;
== Nota finale ==&lt;br /&gt;
L&#039;automazione utile non e quella piu complessa, ma quella che riduce lavoro ripetitivo, mantiene il controllo umano e lascia un risultato verificabile.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Automation&amp;diff=590</id>
		<title>Tips Automation</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Automation&amp;diff=590"/>
		<updated>2026-03-16T10:07:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Tips Automation =&lt;br /&gt;
&lt;br /&gt;
Breve raccolta di riferimenti operativi su automazione, scripting e workflow ripetibili usati nel contesto GazziNet.&lt;br /&gt;
&lt;br /&gt;
== Obiettivi tipici ==&lt;br /&gt;
* ridurre task manuali ripetitivi&lt;br /&gt;
* standardizzare controlli e verifiche&lt;br /&gt;
* velocizzare raccolta dati, report e aggiornamenti&lt;br /&gt;
* diminuire errori operativi su procedure frequenti&lt;br /&gt;
&lt;br /&gt;
== Approcci comuni ==&lt;br /&gt;
&lt;br /&gt;
=== Shell e script rapidi ===&lt;br /&gt;
Adatti a task semplici, verifiche host, raccolta log, sincronizzazioni e controlli periodici.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash script.sh&lt;br /&gt;
crontab -e&lt;br /&gt;
journalctl -u nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
Utile quando serve lavorare con API, parsing strutturato, generazione di contenuti, file JSON, flussi condizionali o automazioni piu ricche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python3 script.py&lt;br /&gt;
python3 -m venv .venv&lt;br /&gt;
pip install -r requirements.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Automazione schedulata ===&lt;br /&gt;
Per job periodici usare `cron`, systemd timer o servizi dedicati, evitando task manuali ricorrenti.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
crontab -l&lt;br /&gt;
systemctl list-timers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Casi d&#039;uso pratici ==&lt;br /&gt;
* controlli periodici su siti, servizi o endpoint&lt;br /&gt;
* generazione e pubblicazione di contenuti&lt;br /&gt;
* raccolta inventario hardware o software&lt;br /&gt;
* aggiornamento di pagine wiki o sistemi documentali&lt;br /&gt;
* export dati da API e report automatici&lt;br /&gt;
&lt;br /&gt;
== Sistemi automatici ==&lt;br /&gt;
* [[Apache_Airflow]]&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
* separare credenziali, codice e log&lt;br /&gt;
* usare file `.env` o meccanismi equivalenti per configurazione e segreti&lt;br /&gt;
* tenere traccia di input, output e stato del job&lt;br /&gt;
* preferire automazioni idempotenti, o comunque sicure da rilanciare&lt;br /&gt;
* aggiungere sempre una verifica finale del risultato&lt;br /&gt;
&lt;br /&gt;
== Riferimenti collegati ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Sviluppo]]&lt;br /&gt;
* [[Codex per struttura wiki e pubblicazione articoli]]&lt;br /&gt;
&lt;br /&gt;
== Nota finale ==&lt;br /&gt;
L&#039;automazione utile non e quella piu complessa, ma quella che riduce lavoro ripetitivo, mantiene il controllo umano e lascia un risultato verificabile.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Automation/Apache_Airflow&amp;diff=589</id>
		<title>Tips Automation/Apache Airflow</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Automation/Apache_Airflow&amp;diff=589"/>
		<updated>2026-03-16T09:57:35Z</updated>

		<summary type="html">&lt;p&gt;Admin: Creata guida installazione e configurazione Apache Airflow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Apache Airflow =&lt;br /&gt;
&lt;br /&gt;
Guida pratica per installare e configurare Apache Airflow in ambiente Linux, con esempio rapido su Debian/Ubuntu orientato a uso operativo.&lt;br /&gt;
&lt;br /&gt;
== Prerequisiti ==&lt;br /&gt;
* host Linux aggiornato&lt;br /&gt;
* Python 3.10+ consigliato&lt;br /&gt;
* accesso shell con permessi sudo&lt;br /&gt;
* database SQLite (test) o PostgreSQL (produzione)&lt;br /&gt;
&lt;br /&gt;
== Installazione base (standalone, test/lab) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install -y python3 python3-venv python3-pip&lt;br /&gt;
&lt;br /&gt;
mkdir -p ~/airflow-home&lt;br /&gt;
cd ~/airflow-home&lt;br /&gt;
python3 -m venv .venv&lt;br /&gt;
source .venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
export AIRFLOW_HOME=~/airflow&lt;br /&gt;
pip install --upgrade pip setuptools wheel&lt;br /&gt;
pip install &amp;quot;apache-airflow==2.10.5&amp;quot; --constraint &amp;quot;https://raw.githubusercontent.com/apache/airflow/constraints-2.10.5/constraints-3.10.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
airflow standalone&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dopo il primo avvio, apri la UI su porta 8080 e salva le credenziali mostrate in output.&lt;br /&gt;
&lt;br /&gt;
== Configurazione essenziale ==&lt;br /&gt;
=== Variabili ambiente ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AIRFLOW_HOME=~/airflow&lt;br /&gt;
export AIRFLOW__CORE__LOAD_EXAMPLES=False&lt;br /&gt;
export AIRFLOW__WEBSERVER__EXPOSE_CONFIG=False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Percorso DAG ===&lt;br /&gt;
Per default i DAG vivono in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$AIRFLOW_HOME/dags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Esempio DAG minimo ===&lt;br /&gt;
Crea file `$AIRFLOW_HOME/dags/hello_airflow.py`:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from datetime import datetime&lt;br /&gt;
from airflow import DAG&lt;br /&gt;
from airflow.operators.bash import BashOperator&lt;br /&gt;
&lt;br /&gt;
with DAG(&lt;br /&gt;
    dag_id=&amp;quot;hello_airflow&amp;quot;,&lt;br /&gt;
    start_date=datetime(2025, 1, 1),&lt;br /&gt;
    schedule=&amp;quot;0 * * * *&amp;quot;,&lt;br /&gt;
    catchup=False,&lt;br /&gt;
    tags=[&amp;quot;tips&amp;quot;, &amp;quot;automation&amp;quot;],&lt;br /&gt;
):&lt;br /&gt;
    hello = BashOperator(&lt;br /&gt;
        task_id=&amp;quot;hello&amp;quot;,&lt;br /&gt;
        bash_command=&amp;quot;echo &#039;Airflow operativo su GazziNet&#039;&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Avvio come servizio (systemd, esempio) ==&lt;br /&gt;
Per ambienti persistenti conviene separare scheduler e webserver.&lt;br /&gt;
&lt;br /&gt;
=== airflow-webserver.service ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Airflow Webserver&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=airflow&lt;br /&gt;
Group=airflow&lt;br /&gt;
Environment=&amp;quot;AIRFLOW_HOME=/opt/airflow&amp;quot;&lt;br /&gt;
ExecStart=/opt/airflow/.venv/bin/airflow webserver&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airflow-scheduler.service ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Airflow Scheduler&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=airflow&lt;br /&gt;
Group=airflow&lt;br /&gt;
Environment=&amp;quot;AIRFLOW_HOME=/opt/airflow&amp;quot;&lt;br /&gt;
ExecStart=/opt/airflow/.venv/bin/airflow scheduler&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicurezza minima consigliata ==&lt;br /&gt;
* non esporre Airflow direttamente su internet senza reverse proxy&lt;br /&gt;
* usare HTTPS e autenticazione forte&lt;br /&gt;
* separare credenziali in variabili/profili dedicati&lt;br /&gt;
* limitare permessi utente di servizio&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting rapido ==&lt;br /&gt;
* DAG non visibile: controlla path, permessi e parsing nel log scheduler&lt;br /&gt;
* task in errore: verifica connessioni, variabili, timeout e retry&lt;br /&gt;
* webserver lento: valuta executor e risorse host&lt;br /&gt;
&lt;br /&gt;
== Riferimenti ==&lt;br /&gt;
* [https://airflow.apache.org/docs/ Apache Airflow Documentation]&lt;br /&gt;
* [[Tips Automation]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Pagina_principale&amp;diff=588</id>
		<title>Pagina principale</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Pagina_principale&amp;diff=588"/>
		<updated>2026-03-15T17:13:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;div class=&amp;quot;gazzi-wiki-home&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gazzi-wiki-hero&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;GazziNet Wiki&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Base tecnica interna con appunti operativi, procedure e raccolte tematiche.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gazzi-wiki-grid&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gazzi-wiki-card&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;Sistemi&amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Linux]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Windows]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Database]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Application Server]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Virtualizzatori]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Automation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Tips Varie]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gazzi-wiki-card&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;Rete e sicurezza&amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Sicurezza &amp;amp; Forense]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Operatore]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gazzi-wiki-card&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;Dev e piattaforme&amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Container|Container]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Sviluppo]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[OBS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[HW]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Codex per struttura wiki e pubblicazione articoli]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gazzi-wiki-card&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;Supporto&amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;[[Corso]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Automation&amp;diff=587</id>
		<title>Tips Automation</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Automation&amp;diff=587"/>
		<updated>2026-03-15T17:11:54Z</updated>

		<summary type="html">&lt;p&gt;Admin: Create automation tips page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Tips Automation =&lt;br /&gt;
&lt;br /&gt;
Breve raccolta di riferimenti operativi su automazione, scripting e workflow ripetibili usati nel contesto GazziNet.&lt;br /&gt;
&lt;br /&gt;
== Obiettivi tipici ==&lt;br /&gt;
* ridurre task manuali ripetitivi&lt;br /&gt;
* standardizzare controlli e verifiche&lt;br /&gt;
* velocizzare raccolta dati, report e aggiornamenti&lt;br /&gt;
* diminuire errori operativi su procedure frequenti&lt;br /&gt;
&lt;br /&gt;
== Approcci comuni ==&lt;br /&gt;
&lt;br /&gt;
=== Shell e script rapidi ===&lt;br /&gt;
Adatti a task semplici, verifiche host, raccolta log, sincronizzazioni e controlli periodici.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash script.sh&lt;br /&gt;
crontab -e&lt;br /&gt;
journalctl -u nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
Utile quando serve lavorare con API, parsing strutturato, generazione di contenuti, file JSON, flussi condizionali o automazioni piu ricche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python3 script.py&lt;br /&gt;
python3 -m venv .venv&lt;br /&gt;
pip install -r requirements.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Automazione schedulata ===&lt;br /&gt;
Per job periodici usare `cron`, systemd timer o servizi dedicati, evitando task manuali ricorrenti.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
crontab -l&lt;br /&gt;
systemctl list-timers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Casi d&#039;uso pratici ==&lt;br /&gt;
* controlli periodici su siti, servizi o endpoint&lt;br /&gt;
* generazione e pubblicazione di contenuti&lt;br /&gt;
* raccolta inventario hardware o software&lt;br /&gt;
* aggiornamento di pagine wiki o sistemi documentali&lt;br /&gt;
* export dati da API e report automatici&lt;br /&gt;
&lt;br /&gt;
== Buone pratiche ==&lt;br /&gt;
* separare credenziali, codice e log&lt;br /&gt;
* usare file `.env` o meccanismi equivalenti per configurazione e segreti&lt;br /&gt;
* tenere traccia di input, output e stato del job&lt;br /&gt;
* preferire automazioni idempotenti, o comunque sicure da rilanciare&lt;br /&gt;
* aggiungere sempre una verifica finale del risultato&lt;br /&gt;
&lt;br /&gt;
== Riferimenti collegati ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Sviluppo]]&lt;br /&gt;
* [[Codex per struttura wiki e pubblicazione articoli]]&lt;br /&gt;
&lt;br /&gt;
== Nota finale ==&lt;br /&gt;
L&#039;automazione utile non e quella piu complessa, ma quella che riduce lavoro ripetitivo, mantiene il controllo umano e lascia un risultato verificabile.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=586</id>
		<title>Tips Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Linux&amp;diff=586"/>
		<updated>2026-03-15T17:09:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: Add Linux distributions comparison link under package references&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Breve raccolta di riferimenti operativi Linux usati nel contesto GazziNet. La pagina serve come indice rapido per verifiche, troubleshooting e accesso ai sotto-argomenti gia documentati nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Verifiche rapide ==&lt;br /&gt;
&lt;br /&gt;
=== Controllo tempo di risposta sito ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k --connect-timeout 30 --max-time 30 --write-out &#039;%{time_total};%{http_code}\n&#039; http://www.gazzi.net/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stato del sistema ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uptime&lt;br /&gt;
uname -a&lt;br /&gt;
hostnamectl&lt;br /&gt;
free -h&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Processi e servizi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -ef | less&lt;br /&gt;
systemctl --failed&lt;br /&gt;
systemctl status nome-servizio&lt;br /&gt;
journalctl -xeu nome-servizio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rete e porte ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
ip r&lt;br /&gt;
ss -tulpn&lt;br /&gt;
ping -c 4 host_o_ip&lt;br /&gt;
curl -I https://host_o_url&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting operativo ==&lt;br /&gt;
&lt;br /&gt;
=== Log principali ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
journalctl -b&lt;br /&gt;
journalctl -p err -b&lt;br /&gt;
tail -n 100 /var/log/messages&lt;br /&gt;
tail -n 100 /var/log/secure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spazio disco e inode ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
df -i&lt;br /&gt;
du -sh /var/* | sort -h&lt;br /&gt;
find /var/log -type f -size +100M -ls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mount e multipath ===&lt;br /&gt;
Per ambienti con storage esterno o SAN, usare le procedure dedicate prima di eseguire rescan o interventi sui device.&lt;br /&gt;
&lt;br /&gt;
* [[Rescan MultiPath fisica]]&lt;br /&gt;
&lt;br /&gt;
== Pacchetti e repository ==&lt;br /&gt;
&lt;br /&gt;
=== Verifiche base ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | wc -l&lt;br /&gt;
rpm -q nome-pacchetto&lt;br /&gt;
which comando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Riferimenti dedicati ===&lt;br /&gt;
* [[Differenze tra le principali distribuzioni Linux]]&lt;br /&gt;
* [[PIP]]&lt;br /&gt;
* [[EPEL Oracle]]&lt;br /&gt;
&lt;br /&gt;
== Accesso remoto e identita ==&lt;br /&gt;
* [[GestioneSSHCertificati]]&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[RustDesk]]&lt;br /&gt;
&lt;br /&gt;
== Script e analisi ==&lt;br /&gt;
* [[CheckScript]]&lt;br /&gt;
* [[AnalisiServer]]&lt;br /&gt;
* [[Parallelizzazione comandi]]&lt;br /&gt;
* [[Deleted Files|Deleted Files]]&lt;br /&gt;
&lt;br /&gt;
== Configurazione e sistema ==&lt;br /&gt;
* [[TimeZone]]&lt;br /&gt;
&lt;br /&gt;
== Note d&#039;uso ==&lt;br /&gt;
* Preferire sempre verifiche non invasive prima di riavvii o fix correttivi.&lt;br /&gt;
* Se il problema coinvolge storage, autenticazione o rete, documentare subito hostname, orario, sintomo e ultimo cambiamento noto.&lt;br /&gt;
* Spostare i casi ricorrenti in pagine dedicate invece di far crescere questa pagina senza struttura.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Differenze_tra_le_principali_distribuzioni_Linux&amp;diff=585</id>
		<title>Differenze tra le principali distribuzioni Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Differenze_tra_le_principali_distribuzioni_Linux&amp;diff=585"/>
		<updated>2026-03-15T17:08:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: Create page comparing major Linux distributions, enterprise and open&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Differenze tra le principali distribuzioni Linux =&lt;br /&gt;
&lt;br /&gt;
Questa pagina riassume le differenze pratiche tra alcune delle distribuzioni Linux piu diffuse, distinguendo tra soluzioni enterprise a pagamento, rebuild compatibili e distribuzioni open orientate a desktop, sviluppo o laboratorio.&lt;br /&gt;
&lt;br /&gt;
== Criterio principale di scelta ==&lt;br /&gt;
La scelta di una distribuzione non dovrebbe partire solo da preferenze personali, ma da questi fattori:&lt;br /&gt;
&lt;br /&gt;
* supporto commerciale richiesto o meno&lt;br /&gt;
* stabilita del ciclo di vita&lt;br /&gt;
* compatibilita con software enterprise&lt;br /&gt;
* facilita di gestione operativa&lt;br /&gt;
* disponibilita di pacchetti recenti&lt;br /&gt;
* uso prevalente: server, desktop, sviluppo, laboratorio, container, sicurezza&lt;br /&gt;
&lt;br /&gt;
== Distribuzioni enterprise a pagamento ==&lt;br /&gt;
&lt;br /&gt;
=== Red Hat Enterprise Linux (RHEL) ===&lt;br /&gt;
Distribuzione enterprise di riferimento in molti contesti aziendali.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* supporto commerciale diretto&lt;br /&gt;
* ciclo di vita molto lungo&lt;br /&gt;
* ampia compatibilita con software certificato&lt;br /&gt;
* documentazione e best practice mature&lt;br /&gt;
&lt;br /&gt;
Quando ha senso:&lt;br /&gt;
* server critici&lt;br /&gt;
* ambienti con vendor che richiedono certificazione ufficiale&lt;br /&gt;
* contesti dove il supporto conta piu della flessibilita&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server (SLES) ===&lt;br /&gt;
Distribuzione enterprise molto usata in alcuni contesti infrastrutturali, SAP e ambienti tradizionali enterprise.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* supporto commerciale&lt;br /&gt;
* buona integrazione in contesti enterprise consolidati&lt;br /&gt;
* forte presenza in alcuni scenari specifici come SAP&lt;br /&gt;
&lt;br /&gt;
Quando ha senso:&lt;br /&gt;
* ambienti che gia usano SUSE&lt;br /&gt;
* contesti con requisiti vendor specifici&lt;br /&gt;
&lt;br /&gt;
== Distribuzioni enterprise open o compatibili ==&lt;br /&gt;
&lt;br /&gt;
=== Rocky Linux ===&lt;br /&gt;
Rebuild compatibile con RHEL, molto usata come alternativa open in ambito server.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* approccio molto vicino a RHEL&lt;br /&gt;
* ottima scelta per chi vuole compatibilita enterprise senza costo licenza&lt;br /&gt;
* buona prevedibilita operativa&lt;br /&gt;
&lt;br /&gt;
Quando ha senso:&lt;br /&gt;
* server interni&lt;br /&gt;
* ambienti di laboratorio vicini a RHEL&lt;br /&gt;
* sistemi dove servono stabilita e compatibilita, ma non supporto commerciale diretto&lt;br /&gt;
&lt;br /&gt;
=== AlmaLinux ===&lt;br /&gt;
Alternativa compatibile con RHEL, orientata a scenari server e hosting.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* simile a Rocky Linux per obiettivi e posizionamento&lt;br /&gt;
* buona adozione in ambienti hosting e infrastrutturali&lt;br /&gt;
&lt;br /&gt;
Quando ha senso:&lt;br /&gt;
* casi simili a Rocky Linux&lt;br /&gt;
* ambienti dove si vuole restare nel mondo enterprise-compatible open&lt;br /&gt;
&lt;br /&gt;
=== Oracle Linux ===&lt;br /&gt;
Distribuzione compatibile con RHEL, con valore aggiunto soprattutto in ecosistemi Oracle.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* compatibilita elevata con mondo RHEL&lt;br /&gt;
* buona scelta in infrastrutture Oracle-centriche&lt;br /&gt;
* presenza del kernel UEK per alcuni scenari specifici&lt;br /&gt;
&lt;br /&gt;
Quando ha senso:&lt;br /&gt;
* ambienti con database o middleware Oracle&lt;br /&gt;
* contesti gia allineati all&#039;ecosistema Oracle&lt;br /&gt;
&lt;br /&gt;
== Distribuzioni open general purpose ==&lt;br /&gt;
&lt;br /&gt;
=== Debian ===&lt;br /&gt;
Distribuzione storica molto apprezzata per stabilita, pulizia e approccio conservativo.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* molto stabile&lt;br /&gt;
* ottima base per server e servizi&lt;br /&gt;
* grande disponibilita di pacchetti&lt;br /&gt;
* forte ecosistema comunitario&lt;br /&gt;
&lt;br /&gt;
Limiti:&lt;br /&gt;
* pacchetti spesso meno recenti rispetto a distribuzioni piu veloci&lt;br /&gt;
&lt;br /&gt;
Quando ha senso:&lt;br /&gt;
* server affidabili&lt;br /&gt;
* infrastrutture semplici e pulite&lt;br /&gt;
* ambienti dove la prevedibilita conta piu della novita&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu ===&lt;br /&gt;
Distribuzione molto diffusa sia su desktop sia su server, con ampia documentazione e supporto comunitario.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* enorme disponibilita di guide e pacchetti&lt;br /&gt;
* buona esperienza desktop&lt;br /&gt;
* molto usata in cloud, sviluppo e container&lt;br /&gt;
* versioni LTS comode per ambienti produttivi&lt;br /&gt;
&lt;br /&gt;
Limiti:&lt;br /&gt;
* alcune scelte Canonical non piacciono a tutti in ambito tecnico&lt;br /&gt;
&lt;br /&gt;
Quando ha senso:&lt;br /&gt;
* desktop tecnici&lt;br /&gt;
* server general purpose&lt;br /&gt;
* sviluppo, cloud e laboratorio&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
Distribuzione moderna, molto aggiornata, usata spesso come piattaforma workstation tecnica o laboratorio.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* pacchetti recenti&lt;br /&gt;
* buon supporto a tecnologie moderne&lt;br /&gt;
* ottima per sviluppo, desktop tecnico e sperimentazione controllata&lt;br /&gt;
&lt;br /&gt;
Limiti:&lt;br /&gt;
* ciclo piu rapido e meno conservativo di Debian o RHEL-like&lt;br /&gt;
&lt;br /&gt;
Quando ha senso:&lt;br /&gt;
* workstation&lt;br /&gt;
* sviluppo&lt;br /&gt;
* desktop Linux moderno&lt;br /&gt;
* test di stack recenti&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
Distribuzione open con due anime principali: Leap piu stabile e Tumbleweed rolling.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* buona flessibilita&lt;br /&gt;
* strumenti di gestione storicamente apprezzati&lt;br /&gt;
* Tumbleweed molto interessante per chi vuole software recente&lt;br /&gt;
&lt;br /&gt;
Quando ha senso:&lt;br /&gt;
* utenti che apprezzano ecosistema SUSE&lt;br /&gt;
* desktop o laboratorio con esigenze specifiche&lt;br /&gt;
&lt;br /&gt;
== Distribuzioni specialistiche ==&lt;br /&gt;
&lt;br /&gt;
=== Kali Linux ===&lt;br /&gt;
Distribuzione orientata a security testing e laboratorio offensivo/difensivo.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* ampia dotazione di tool security&lt;br /&gt;
* utile per test, studio e laboratorio&lt;br /&gt;
&lt;br /&gt;
Quando NON usarla come default:&lt;br /&gt;
* server generici&lt;br /&gt;
* workstation normali da produzione&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ===&lt;br /&gt;
Distribuzione rolling, molto flessibile e controllabile, ma piu esigente lato gestione.&lt;br /&gt;
&lt;br /&gt;
Punti forti:&lt;br /&gt;
* massima flessibilita&lt;br /&gt;
* software molto recente&lt;br /&gt;
* ottima per chi vuole controllo pieno del sistema&lt;br /&gt;
&lt;br /&gt;
Limiti:&lt;br /&gt;
* meno adatta a chi cerca stabilita prevedibile e gestione standardizzata&lt;br /&gt;
&lt;br /&gt;
== Differenza pratica tra pagamento e open ==&lt;br /&gt;
La differenza vera non e solo nel software, ma in cio che accompagna il sistema:&lt;br /&gt;
&lt;br /&gt;
* contratti di supporto&lt;br /&gt;
* certificazioni vendor&lt;br /&gt;
* SLA&lt;br /&gt;
* canali ufficiali per patch, audit e supporto&lt;br /&gt;
* responsabilita formale del fornitore&lt;br /&gt;
&lt;br /&gt;
In molti casi una distribuzione open compatibile puo andare benissimo tecnicamente. Una distribuzione a pagamento ha senso quando il contesto richiede supporto ufficiale, compliance, certificazioni o interlocutore commerciale.&lt;br /&gt;
&lt;br /&gt;
== Scelte consigliate per scenario ==&lt;br /&gt;
* &#039;&#039;&#039;Server enterprise con software certificato&#039;&#039;&#039;: RHEL o SLES&lt;br /&gt;
* &#039;&#039;&#039;Server interni stabili senza costo licenza&#039;&#039;&#039;: Rocky Linux o AlmaLinux&lt;br /&gt;
* &#039;&#039;&#039;Ambienti Oracle-centrici&#039;&#039;&#039;: Oracle Linux&lt;br /&gt;
* &#039;&#039;&#039;Server puliti e affidabili general purpose&#039;&#039;&#039;: Debian&lt;br /&gt;
* &#039;&#039;&#039;Cloud, laboratorio, sviluppo e desktop tecnico&#039;&#039;&#039;: Ubuntu o Fedora&lt;br /&gt;
* &#039;&#039;&#039;Security lab&#039;&#039;&#039;: Kali Linux&lt;br /&gt;
* &#039;&#039;&#039;Utenti avanzati che vogliono massimo controllo&#039;&#039;&#039;: Arch Linux&lt;br /&gt;
&lt;br /&gt;
== Nota finale ==&lt;br /&gt;
Non esiste una distribuzione migliore in assoluto. Esiste quella piu adatta al carico, al team, al ciclo di vita atteso e al livello di supporto richiesto.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=MediaWiki:Common.js&amp;diff=584</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=MediaWiki:Common.js&amp;diff=584"/>
		<updated>2026-03-14T11:32:35Z</updated>

		<summary type="html">&lt;p&gt;Admin: Add Gazzi.net link next to wiki home link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function () {&lt;br /&gt;
	var measurementId = &#039;G-DFC284KHY7&#039;;&lt;br /&gt;
	var consentKey = &#039;gazzi_consent_analytics&#039;;&lt;br /&gt;
&lt;br /&gt;
	function getCookie(name) {&lt;br /&gt;
		var match = document.cookie.match(new RegExp(&#039;(?:^|; )&#039; + name.replace(/[.$?*|{}()\[\]\\/+^]/g, &#039;\\$&amp;amp;&#039;) + &#039;=([^;]*)&#039;));&lt;br /&gt;
		return match ? decodeURIComponent(match[1]) : &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function setCookie(value) {&lt;br /&gt;
		var secure = location.protocol === &#039;https:&#039; ? &#039;; Secure&#039; : &#039;&#039;;&lt;br /&gt;
		document.cookie = consentKey + &#039;=&#039; + value + &#039;; path=/; domain=.gazzi.net; max-age=&#039; + (60 * 60 * 24 * 365) + &#039;; SameSite=Lax&#039; + secure;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function loadGa() {&lt;br /&gt;
		if (window.gazzinetGa4Loaded) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		window.gazzinetGa4Loaded = true;&lt;br /&gt;
		window.dataLayer = window.dataLayer || [];&lt;br /&gt;
		window.gtag = window.gtag || function () {&lt;br /&gt;
			dataLayer.push(arguments);&lt;br /&gt;
		};&lt;br /&gt;
		var script = document.createElement(&#039;script&#039;);&lt;br /&gt;
		script.async = true;&lt;br /&gt;
		script.src = &#039;https://www.googletagmanager.com/gtag/js?id=&#039; + measurementId;&lt;br /&gt;
		document.head.appendChild(script);&lt;br /&gt;
		window.gtag(&#039;js&#039;, new Date());&lt;br /&gt;
		window.gtag(&#039;config&#039;, measurementId);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function closeBanner() {&lt;br /&gt;
		var banner = document.getElementById(&#039;gazzinet-consent-banner&#039;);&lt;br /&gt;
		if (banner) {&lt;br /&gt;
			banner.hidden = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function ensureStyle() {&lt;br /&gt;
		if (document.getElementById(&#039;gazzinet-consent-style&#039;)) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var style = document.createElement(&#039;style&#039;);&lt;br /&gt;
		style.id = &#039;gazzinet-consent-style&#039;;&lt;br /&gt;
		style.textContent = &#039;#gazzinet-consent-banner{position:fixed;right:18px;bottom:18px;z-index:99999;max-width:360px;background:#f6f6f3;color:#1e3f16;border:1px solid #b7c4b0;border-radius:14px;box-shadow:0 14px 40px rgba(0,0,0,.14);padding:16px 16px 14px;font:400 .92rem/1.4 &amp;quot;Trebuchet MS&amp;quot;,&amp;quot;Segoe UI&amp;quot;,Arial,sans-serif}#gazzinet-consent-banner[hidden]{display:none!important}#gazzinet-consent-banner strong{display:block;margin:0 0 6px;color:#1f4818;font-size:.96rem}#gazzinet-consent-banner p{margin:0 0 12px;color:#2f5d26}#gazzinet-consent-banner a{color:#1f4818;text-decoration:underline;text-underline-offset:2px}#gazzinet-consent-banner a:hover{color:#2f6f24}#gazzinet-consent-actions{display:flex;gap:10px;flex-wrap:wrap}#gazzinet-consent-actions button{appearance:none;border-radius:999px;padding:8px 14px;font:700 .84rem/1 &amp;quot;Trebuchet MS&amp;quot;,&amp;quot;Segoe UI&amp;quot;,Arial,sans-serif;cursor:pointer}#gazzinet-consent-accept{background:#2f6f24;color:#fff;border:1px solid #2f6f24}#gazzinet-consent-deny{background:transparent;color:#2f6f24;border:1px solid #7c9774}@media (max-width:680px){#gazzinet-consent-banner{left:12px;right:12px;bottom:12px;max-width:none}}&#039;;&lt;br /&gt;
		document.head.appendChild(style);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function openBanner() {&lt;br /&gt;
		if (document.getElementById(&#039;gazzinet-consent-banner&#039;)) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		ensureStyle();&lt;br /&gt;
		var banner = document.createElement(&#039;div&#039;);&lt;br /&gt;
		banner.id = &#039;gazzinet-consent-banner&#039;;&lt;br /&gt;
		banner.innerHTML = &#039;&amp;lt;strong&amp;gt;Analytics&amp;lt;/strong&amp;gt;&amp;lt;p&amp;gt;Usiamo Google Analytics per misurare l\&#039;uso del sito. &amp;lt;a href=&amp;quot;https://www.gazzi.net/privacy-cookie/&amp;quot;&amp;gt;Privacy / Cookie&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;div id=&amp;quot;gazzinet-consent-actions&amp;quot;&amp;gt;&amp;lt;button id=&amp;quot;gazzinet-consent-accept&amp;quot; type=&amp;quot;button&amp;quot;&amp;gt;Accetta&amp;lt;/button&amp;gt;&amp;lt;button id=&amp;quot;gazzinet-consent-deny&amp;quot; type=&amp;quot;button&amp;quot;&amp;gt;Rifiuta&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
		document.body.appendChild(banner);&lt;br /&gt;
		document.getElementById(&#039;gazzinet-consent-accept&#039;).addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
			setCookie(&#039;granted&#039;);&lt;br /&gt;
			loadGa();&lt;br /&gt;
			closeBanner();&lt;br /&gt;
		});&lt;br /&gt;
		document.getElementById(&#039;gazzinet-consent-deny&#039;).addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
			setCookie(&#039;denied&#039;);&lt;br /&gt;
			closeBanner();&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var consent = getCookie(consentKey);&lt;br /&gt;
	if (consent === &#039;granted&#039;) {&lt;br /&gt;
		loadGa();&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if (consent === &#039;denied&#039;) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
		document.addEventListener(&#039;DOMContentLoaded&#039;, openBanner);&lt;br /&gt;
	} else {&lt;br /&gt;
		openBanner();&lt;br /&gt;
	}&lt;br /&gt;
}());&lt;br /&gt;
(function () {&lt;br /&gt;
	function makeLink(href, text) {&lt;br /&gt;
		var link = document.createElement(&#039;a&#039;);&lt;br /&gt;
		link.href = href;&lt;br /&gt;
		link.textContent = text;&lt;br /&gt;
		link.style.color = &#039;#1f4818&#039;;&lt;br /&gt;
		link.style.textDecoration = &#039;none&#039;;&lt;br /&gt;
		return link;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function addWikiHomeLink() {&lt;br /&gt;
		if (document.getElementById(&#039;gazzinet-wiki-home-link&#039;)) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var content = document.getElementById(&#039;content&#039;);&lt;br /&gt;
		if (!content) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var wrap = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wrap.id = &#039;gazzinet-wiki-home-link&#039;;&lt;br /&gt;
		wrap.style.margin = &#039;28px 0 0&#039;;&lt;br /&gt;
		wrap.style.paddingTop = &#039;14px&#039;;&lt;br /&gt;
		wrap.style.borderTop = &#039;1px solid #b7c4b0&#039;;&lt;br /&gt;
		wrap.style.font = &#039;700 .88rem/1.4 &amp;quot;Trebuchet MS&amp;quot;,&amp;quot;Segoe UI&amp;quot;,Arial,sans-serif&#039;;&lt;br /&gt;
		var link = document.createElement(&#039;a&#039;);&lt;br /&gt;
		link.href = &#039;https://wiki.gazzi.net/index.php&#039;;&lt;br /&gt;
		link.textContent = &#039;Home page del wiki&#039;;&lt;br /&gt;
		link.style.color = &#039;#1f4818&#039;;&lt;br /&gt;
		link.style.textDecoration = &#039;none&#039;;&lt;br /&gt;
		wrap.appendChild(makeLink(&#039;https://wiki.gazzi.net/index.php&#039;, &#039;Home page del wiki&#039;));&lt;br /&gt;
		var sep = document.createElement(&#039;span&#039;);&lt;br /&gt;
		sep.textContent = &#039; | &#039;;&lt;br /&gt;
		sep.style.color = &#039;#5f725a&#039;;&lt;br /&gt;
		wrap.appendChild(sep);&lt;br /&gt;
		wrap.appendChild(makeLink(&#039;https://www.gazzi.net&#039;, &#039;www.gazzi.net&#039;));&lt;br /&gt;
		content.appendChild(wrap);&lt;br /&gt;
	}&lt;br /&gt;
	if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
		document.addEventListener(&#039;DOMContentLoaded&#039;, addWikiHomeLink);&lt;br /&gt;
	} else {&lt;br /&gt;
		addWikiHomeLink();&lt;br /&gt;
	}&lt;br /&gt;
}());&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=MediaWiki:Common.js&amp;diff=583</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=MediaWiki:Common.js&amp;diff=583"/>
		<updated>2026-03-14T11:28:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: Add global wiki home link at end of every page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function () {&lt;br /&gt;
	var measurementId = &#039;G-DFC284KHY7&#039;;&lt;br /&gt;
	var consentKey = &#039;gazzi_consent_analytics&#039;;&lt;br /&gt;
&lt;br /&gt;
	function getCookie(name) {&lt;br /&gt;
		var match = document.cookie.match(new RegExp(&#039;(?:^|; )&#039; + name.replace(/[.$?*|{}()\[\]\\/+^]/g, &#039;\\$&amp;amp;&#039;) + &#039;=([^;]*)&#039;));&lt;br /&gt;
		return match ? decodeURIComponent(match[1]) : &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function setCookie(value) {&lt;br /&gt;
		var secure = location.protocol === &#039;https:&#039; ? &#039;; Secure&#039; : &#039;&#039;;&lt;br /&gt;
		document.cookie = consentKey + &#039;=&#039; + value + &#039;; path=/; domain=.gazzi.net; max-age=&#039; + (60 * 60 * 24 * 365) + &#039;; SameSite=Lax&#039; + secure;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function loadGa() {&lt;br /&gt;
		if (window.gazzinetGa4Loaded) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		window.gazzinetGa4Loaded = true;&lt;br /&gt;
		window.dataLayer = window.dataLayer || [];&lt;br /&gt;
		window.gtag = window.gtag || function () {&lt;br /&gt;
			dataLayer.push(arguments);&lt;br /&gt;
		};&lt;br /&gt;
		var script = document.createElement(&#039;script&#039;);&lt;br /&gt;
		script.async = true;&lt;br /&gt;
		script.src = &#039;https://www.googletagmanager.com/gtag/js?id=&#039; + measurementId;&lt;br /&gt;
		document.head.appendChild(script);&lt;br /&gt;
		window.gtag(&#039;js&#039;, new Date());&lt;br /&gt;
		window.gtag(&#039;config&#039;, measurementId);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function closeBanner() {&lt;br /&gt;
		var banner = document.getElementById(&#039;gazzinet-consent-banner&#039;);&lt;br /&gt;
		if (banner) {&lt;br /&gt;
			banner.hidden = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function ensureStyle() {&lt;br /&gt;
		if (document.getElementById(&#039;gazzinet-consent-style&#039;)) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var style = document.createElement(&#039;style&#039;);&lt;br /&gt;
		style.id = &#039;gazzinet-consent-style&#039;;&lt;br /&gt;
		style.textContent = &#039;#gazzinet-consent-banner{position:fixed;right:18px;bottom:18px;z-index:99999;max-width:360px;background:#f6f6f3;color:#1e3f16;border:1px solid #b7c4b0;border-radius:14px;box-shadow:0 14px 40px rgba(0,0,0,.14);padding:16px 16px 14px;font:400 .92rem/1.4 &amp;quot;Trebuchet MS&amp;quot;,&amp;quot;Segoe UI&amp;quot;,Arial,sans-serif}#gazzinet-consent-banner[hidden]{display:none!important}#gazzinet-consent-banner strong{display:block;margin:0 0 6px;color:#1f4818;font-size:.96rem}#gazzinet-consent-banner p{margin:0 0 12px;color:#2f5d26}#gazzinet-consent-banner a{color:#1f4818;text-decoration:underline;text-underline-offset:2px}#gazzinet-consent-banner a:hover{color:#2f6f24}#gazzinet-consent-actions{display:flex;gap:10px;flex-wrap:wrap}#gazzinet-consent-actions button{appearance:none;border-radius:999px;padding:8px 14px;font:700 .84rem/1 &amp;quot;Trebuchet MS&amp;quot;,&amp;quot;Segoe UI&amp;quot;,Arial,sans-serif;cursor:pointer}#gazzinet-consent-accept{background:#2f6f24;color:#fff;border:1px solid #2f6f24}#gazzinet-consent-deny{background:transparent;color:#2f6f24;border:1px solid #7c9774}@media (max-width:680px){#gazzinet-consent-banner{left:12px;right:12px;bottom:12px;max-width:none}}&#039;;&lt;br /&gt;
		document.head.appendChild(style);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function openBanner() {&lt;br /&gt;
		if (document.getElementById(&#039;gazzinet-consent-banner&#039;)) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		ensureStyle();&lt;br /&gt;
		var banner = document.createElement(&#039;div&#039;);&lt;br /&gt;
		banner.id = &#039;gazzinet-consent-banner&#039;;&lt;br /&gt;
		banner.innerHTML = &#039;&amp;lt;strong&amp;gt;Analytics&amp;lt;/strong&amp;gt;&amp;lt;p&amp;gt;Usiamo Google Analytics per misurare l\&#039;uso del sito. &amp;lt;a href=&amp;quot;https://www.gazzi.net/privacy-cookie/&amp;quot;&amp;gt;Privacy / Cookie&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;div id=&amp;quot;gazzinet-consent-actions&amp;quot;&amp;gt;&amp;lt;button id=&amp;quot;gazzinet-consent-accept&amp;quot; type=&amp;quot;button&amp;quot;&amp;gt;Accetta&amp;lt;/button&amp;gt;&amp;lt;button id=&amp;quot;gazzinet-consent-deny&amp;quot; type=&amp;quot;button&amp;quot;&amp;gt;Rifiuta&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
		document.body.appendChild(banner);&lt;br /&gt;
		document.getElementById(&#039;gazzinet-consent-accept&#039;).addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
			setCookie(&#039;granted&#039;);&lt;br /&gt;
			loadGa();&lt;br /&gt;
			closeBanner();&lt;br /&gt;
		});&lt;br /&gt;
		document.getElementById(&#039;gazzinet-consent-deny&#039;).addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
			setCookie(&#039;denied&#039;);&lt;br /&gt;
			closeBanner();&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var consent = getCookie(consentKey);&lt;br /&gt;
	if (consent === &#039;granted&#039;) {&lt;br /&gt;
		loadGa();&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if (consent === &#039;denied&#039;) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
		document.addEventListener(&#039;DOMContentLoaded&#039;, openBanner);&lt;br /&gt;
	} else {&lt;br /&gt;
		openBanner();&lt;br /&gt;
	}&lt;br /&gt;
}());&lt;br /&gt;
(function () {&lt;br /&gt;
	function addWikiHomeLink() {&lt;br /&gt;
		if (document.getElementById(&#039;gazzinet-wiki-home-link&#039;)) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var content = document.getElementById(&#039;content&#039;);&lt;br /&gt;
		if (!content) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var wrap = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wrap.id = &#039;gazzinet-wiki-home-link&#039;;&lt;br /&gt;
		wrap.style.margin = &#039;28px 0 0&#039;;&lt;br /&gt;
		wrap.style.paddingTop = &#039;14px&#039;;&lt;br /&gt;
		wrap.style.borderTop = &#039;1px solid #b7c4b0&#039;;&lt;br /&gt;
		wrap.style.font = &#039;700 .88rem/1.4 &amp;quot;Trebuchet MS&amp;quot;,&amp;quot;Segoe UI&amp;quot;,Arial,sans-serif&#039;;&lt;br /&gt;
		var link = document.createElement(&#039;a&#039;);&lt;br /&gt;
		link.href = &#039;https://wiki.gazzi.net/index.php&#039;;&lt;br /&gt;
		link.textContent = &#039;Home page del wiki&#039;;&lt;br /&gt;
		link.style.color = &#039;#1f4818&#039;;&lt;br /&gt;
		link.style.textDecoration = &#039;none&#039;;&lt;br /&gt;
		wrap.appendChild(link);&lt;br /&gt;
		content.appendChild(wrap);&lt;br /&gt;
	}&lt;br /&gt;
	if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
		document.addEventListener(&#039;DOMContentLoaded&#039;, addWikiHomeLink);&lt;br /&gt;
	} else {&lt;br /&gt;
		addWikiHomeLink();&lt;br /&gt;
	}&lt;br /&gt;
}());&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Codex_per_struttura_wiki_e_pubblicazione_articoli&amp;diff=582</id>
		<title>Codex per struttura wiki e pubblicazione articoli</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Codex_per_struttura_wiki_e_pubblicazione_articoli&amp;diff=582"/>
		<updated>2026-03-14T11:26:00Z</updated>

		<summary type="html">&lt;p&gt;Admin: Add section about Codex, ChatGPT and local AI integration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Codex per struttura wiki e pubblicazione articoli =&lt;br /&gt;
&lt;br /&gt;
Questa pagina documenta in modo pratico come il sistema Codex e stato usato per riorganizzare il wiki GazziNet e per supportare la generazione e pubblicazione di articoli sul sito WordPress.&lt;br /&gt;
&lt;br /&gt;
== Contesto d&#039;uso ==&lt;br /&gt;
Il sistema e stato usato come agente operativo, non come semplice generatore di testo. Nel lavoro svolto ha avuto tre ruoli principali:&lt;br /&gt;
&lt;br /&gt;
* riorganizzazione del wiki MediaWiki&lt;br /&gt;
* supporto alla produzione di articoli tecnici e news sul sito&lt;br /&gt;
* automazione di task ripetitivi su tema, struttura, contenuti e pubblicazione&lt;br /&gt;
&lt;br /&gt;
== Come e stato usato sul wiki ==&lt;br /&gt;
Sul wiki l&#039;uso principale e stato editoriale e strutturale. In pratica il flusso e stato questo:&lt;br /&gt;
&lt;br /&gt;
# lettura delle pagine esistenti&lt;br /&gt;
# verifica del contenuto attuale e del markup reale servito dal sito&lt;br /&gt;
# riorganizzazione in sezioni piu leggibili&lt;br /&gt;
# normalizzazione di titoli, indici e pagine &amp;quot;Tips&amp;quot;&lt;br /&gt;
# correzione di nomi errati, redirect e link interni&lt;br /&gt;
# aggiornamento del CSS globale MediaWiki quando necessario per allineare il layout al sito principale&lt;br /&gt;
&lt;br /&gt;
Esempi pratici di attivita fatte:&lt;br /&gt;
* pulizia e reimpaginazione della home del wiki&lt;br /&gt;
* revisione di pagine come &#039;&#039;Tips Linux&#039;&#039;, &#039;&#039;Tips Windows&#039;&#039;, &#039;&#039;Tips Database&#039;&#039;, &#039;&#039;Tips Application Server&#039;&#039;, &#039;&#039;Tips Virtualizzatori&#039;&#039;&lt;br /&gt;
* correzione della pagina &#039;&#039;Conteiner&#039;&#039; in &#039;&#039;Container&#039;&#039; con redirect esplicito&lt;br /&gt;
* miglioramento della documentazione hardware della workstation locale&lt;br /&gt;
* ripristino dei controlli di editing quando erano stati nascosti dal CSS&lt;br /&gt;
&lt;br /&gt;
== Come e stato usato per gli articoli ==&lt;br /&gt;
Sul sito WordPress Codex e stato usato per:&lt;br /&gt;
&lt;br /&gt;
* generare articoli tecnici in stile coerente con la sezione &#039;&#039;GenDaIa&#039;&#039;&lt;br /&gt;
* migliorare titoli, excerpt e struttura SEO dei post esistenti&lt;br /&gt;
* pubblicare nuovi articoli con categoria corretta&lt;br /&gt;
* uniformare template, tipografia e layout tra home, hub e singoli articoli&lt;br /&gt;
&lt;br /&gt;
Il sistema e stato usato sia in modalita manuale che in modalita assistita. In pratica:&lt;br /&gt;
* su richiesta venivano creati nuovi articoli&lt;br /&gt;
* i testi venivano adattati al taglio tecnico o divulgativo richiesto&lt;br /&gt;
* i contenuti venivano poi pubblicati o corretti direttamente via WordPress&lt;br /&gt;
&lt;br /&gt;
== Flusso operativo tipico ==&lt;br /&gt;
Un flusso tipico di lavoro con Codex, in questo contesto, e stato:&lt;br /&gt;
&lt;br /&gt;
# richiesta dell&#039;obiettivo&lt;br /&gt;
# analisi del contesto reale del sito o del wiki&lt;br /&gt;
# lettura dei file o del markup pubblico&lt;br /&gt;
# proposta implicita della modifica tramite esecuzione operativa&lt;br /&gt;
# verifica del risultato sul frontend o tramite API&lt;br /&gt;
# eventuale rifinitura successiva&lt;br /&gt;
&lt;br /&gt;
Questo approccio e stato utile soprattutto quando il problema non era solo nel contenuto, ma nella combinazione di:&lt;br /&gt;
* struttura pagina&lt;br /&gt;
* stile&lt;br /&gt;
* template&lt;br /&gt;
* automazione&lt;br /&gt;
* pubblicazione&lt;br /&gt;
&lt;br /&gt;
== Integrazione tra Codex, ChatGPT e IA locale ==&lt;br /&gt;
Nel lavoro pratico questi tre livelli possono convivere, ma non hanno lo stesso ruolo.&lt;br /&gt;
&lt;br /&gt;
=== Codex ===&lt;br /&gt;
Codex viene usato come agente operativo: legge il contesto, controlla file, verifica pagine, modifica contenuti, esegue comandi e aggiorna strutture reali del sito o del wiki.&lt;br /&gt;
&lt;br /&gt;
=== ChatGPT ===&lt;br /&gt;
ChatGPT e utile soprattutto come interfaccia conversazionale generale: brainstorming, chiarimenti, riscrittura, sintesi, definizione dell&#039;obiettivo o raffinamento di una richiesta prima dell&#039;esecuzione operativa.&lt;br /&gt;
&lt;br /&gt;
=== IA locale ===&lt;br /&gt;
Una IA locale, per esempio tramite Ollama, e utile quando si vuole:&lt;br /&gt;
* generare contenuti senza dipendere da un servizio esterno&lt;br /&gt;
* fare test rapidi su prompt, classificazione o riscrittura&lt;br /&gt;
* mantenere alcuni flussi in ambiente locale&lt;br /&gt;
* ridurre costi ricorrenti per task ripetitivi o batch&lt;br /&gt;
&lt;br /&gt;
=== Integrazione pratica ===&lt;br /&gt;
Nel contesto GazziNet l&#039;integrazione puo essere vista cosi:&lt;br /&gt;
* ChatGPT o interfaccia simile per definire l&#039;obiettivo o iterare sulla richiesta&lt;br /&gt;
* Codex per eseguire il lavoro concreto su file, WordPress, MediaWiki e struttura del sistema&lt;br /&gt;
* IA locale per automazioni editoriali, generazione assistita o test di pipeline locali&lt;br /&gt;
&lt;br /&gt;
=== Esempio concreto ===&lt;br /&gt;
Un flusso concreto puo essere:&lt;br /&gt;
# scegliere un tema o una richiesta editoriale&lt;br /&gt;
# usare un modello locale per produrre una prima bozza&lt;br /&gt;
# usare Codex per controllare struttura, compatibilita, pubblicazione e verifica finale&lt;br /&gt;
# usare ChatGPT per rifinire tono, taglio o spiegazione quando serve un passaggio piu discorsivo&lt;br /&gt;
&lt;br /&gt;
=== Vantaggio dell&#039;approccio ibrido ===&lt;br /&gt;
L&#039;aspetto interessante non e scegliere un solo sistema, ma usare ogni componente per il compito giusto:&lt;br /&gt;
* conversazione e ideazione&lt;br /&gt;
* esecuzione tecnica&lt;br /&gt;
* generazione locale o automatizzata&lt;br /&gt;
&lt;br /&gt;
== Vantaggi pratici osservati ==&lt;br /&gt;
* riduzione del lavoro manuale ripetitivo&lt;br /&gt;
* maggiore uniformita tra pagine e sezioni diverse&lt;br /&gt;
* velocita nel passare da richiesta a modifica reale&lt;br /&gt;
* facilita nel documentare sistemi, procedure e note operative&lt;br /&gt;
* supporto concreto alla produzione di articoli e alla manutenzione del sito&lt;br /&gt;
&lt;br /&gt;
== Limiti da tenere presenti ==&lt;br /&gt;
* i contenuti generati vanno sempre riletti se riguardano temi sensibili o decisioni operative&lt;br /&gt;
* la qualita finale dipende molto dalla precisione delle richieste iniziali&lt;br /&gt;
* per automazioni editoriali o pubblicazione automatica servono comunque controlli su credenziali, permessi e qualita del testo&lt;br /&gt;
* per temi tecnici complessi resta importante la validazione umana&lt;br /&gt;
&lt;br /&gt;
== Uso sul sito GazziNet ==&lt;br /&gt;
Nel contesto GazziNet il sistema e stato quindi usato come supporto tecnico-editoriale per:&lt;br /&gt;
* rifare la struttura del wiki&lt;br /&gt;
* migliorare la coerenza tra le pagine&lt;br /&gt;
* pubblicare articoli tecnici sul sito&lt;br /&gt;
* preparare automazioni per la generazione di news e articoli&lt;br /&gt;
* documentare il sistema locale, i componenti hardware e le piattaforme usate&lt;br /&gt;
&lt;br /&gt;
== Nota finale ==&lt;br /&gt;
Il valore pratico del sistema non sta nel &amp;quot;scrivere da solo&amp;quot;, ma nel combinare analisi del contesto, modifica concreta, verifica e documentazione in un unico flusso di lavoro.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>