Un demone è a programma per computer che viene eseguito in background invece di essere sotto il controllo diretto dell'utente. Esegue compiti dal momento in cui sistema operativo si avvia finché il computer non viene spento. Queste attività includono la gestione delle richieste di rete, la gestione dei dispositivi hardware, pianificazione del lavoroe fornire servizi quali servizi web, recapito di posta elettronica o gestione del database.
I demoni sono ampiamente utilizzati in UNIX e sistemi simili a UNIX, dove hanno un ruolo fondamentale nel mantenimento della funzionalità, nella gestione delle risorse, nell'esecuzione di attività e nell'offerta di una varietà di servizi critici per il sistema. I sistemi operativi che non utilizzano il termine demone, tuttavia, implementano servizi e processi che svolgono funzioni simili.
Storia e sviluppo dei demoni
Il concetto di demone risale agli albori dei sistemi operativi, in particolare UNIX, tra la fine degli anni '1960 e l'inizio degli anni '1970. Il termine affonda le sue radici nella mitologia greca, dove i demoni erano considerati spiriti benigni della natura. Pertanto, il termine è stato adottato in ambito informatico per descrivere processi in background che eseguono silenziosamente attività senza interagire con gli utenti.
Con l'avanzamento dei servizi online, i demoni sono diventati essenziali per la gestione dei servizi web, della posta elettronica servers e banca dati sistemi. Sono anche cruciali per la sicurezza del sistema, poiché monitorano le attività del sistema per proteggerlo da malware e accessi non autorizzati.
Oggi, il concetto di demoni si è espanso oltre UNIX, influenzando la progettazione di servizi e processi in altri sistemi operativi, come Windows (che utilizza il termine “servizi” anziché demoni). Inoltre, i demoni sono un elemento fondamentale dell’architettura dei sistemi distribuiti, cloud informatica e microservices.
Demone contro processo
A processi è un termine generale che descrive qualsiasi istanza di esecuzione di un programma. Essendo l'unità di esecuzione di base in un sistema operativo, comprende il codice del programma ("l'eseguibile"), la sua attività corrente (rappresentata dal contatore del programma) e le risorse allocate dal sistema operativo. I processi interattivi eseguono comandi utente, mentre i processi non interattivi eseguono attività in background.
A demone è un tipo specifico di processo in background che viene eseguito indipendentemente dalle sessioni utente e viene solitamente avviato all'avvio del computer. I demoni non hanno un terminale di controllo. Operano invece in background, eseguendo attività come la gestione delle connessioni di rete, il monitoraggio dei sistemi, ecc. I demoni rimangono attivi fino allo spegnimento del sistema e non richiedono l'intervento diretto dell'utente.
Come funziona un demone?
Un demone esegue attività in modo autonomo e continuo senza interazione da parte degli utenti come segue:
- Inizializzazione. Un demone in genere viene avviato all'avvio del sistema. Durante il processo di inizializzazione vengono impostati i parametri operativi, i permessi e le risorse necessarie per il funzionamento del demone.
- Distacco dal terminale di controllo. Per garantire un funzionamento continuo in background, il demone si stacca dal terminale di controllo effettuando il fork di un processo figlio e terminando il processo genitore. Il processo figlio viene quindi adottato dal processo init (PID 1) o un suo equivalente per garantire che il demone venga eseguito in modo indipendente.
- Correre in background. Dopo la disconnessione, il demone viene eseguito in background per eseguire un'ampia gamma di attività, come l'ascolto delle connessioni di rete in entrata, la gestione delle risorse e l'esecuzione di attività pianificate. Quando non eseguono attività, i daemon entrano in uno stato di sospensione per ridurre al minimo il consumo di risorse.
- Registrazione e monitoraggio. I demoni registrano le loro attività nei file di registro del sistema, il che è importante per eseguire la diagnostica, il controllo, il monitoraggio dell'integrità del sistema e garantire la conformità della sicurezza.
- Rispondere a richieste ed eventi. I demoni possono essere configurati per rispondere a determinati eventi e richieste, come modifiche al file system o aggiustamenti del carico di sistema. Queste attività possono comportare l'avvio o l'arresto di attività, la regolazione dell'allocazione delle risorse o l'esecuzione di operazioni specifiche in risposta a regole o trigger predefiniti.
- Gestione e pulizia delle risorse. I demoni gestiscono le proprie risorse, come memoria, connessioni di rete, ecc., per prevenire perdite e garantire la stabilità del sistema. Inoltre, puliscono le risorse quando il sistema si spegne per evitare di lasciare processi o dati indesiderati.
Tipi di demoni
Esistono diversi tipi di demoni a seconda della loro funzionalità e dei servizi che forniscono.
Web Server Demoni
Web server i demoni, in genere i browser Web, sono progettati per gestire le richieste di contenuto Web da parte dei client e servire le pagine e le risorse Internet richieste. Ascoltano su porte di rete specifiche (ad esempio, porta 80 per HTTP o porta 443 per HTTPS) e attendere le connessioni. Dopo aver ricevuto la richiesta, il web server lo interpreta e accede alla fonte richiesta per recuperare il file e rispedirlo al client.
Oltre a servire pagine web, web server gestiscono anche i demoni crittografia, utente autenticazione, reindirizzamento del traffico, compressione dei dati, ecc. Esempi comuni di web server i demoni sono:
- Apache HTTP Server. Supporta una gamma di funzionalità.
- nginx. Fornisce efficienza e prestazioni avanzate.
Nota: Per un confronto approfondito tra questi due web servers, consulta l'articolo della nostra knowledge base Apache contro Ngnix: un confronto dettagliato.
Demoni del database
I demoni del database sono fondamentali per gestione della banca dati operazioni, compreso memorizzazione dei dati, recupero, aggiornamento e manipolazione. Questi servizi sono continuamente attivi servers in attesa di query del database. Garantiscono l'integrità dei dati, prestazioni fluide e sicurezza attraverso l'elaborazione delle transazioni, il controllo degli accessi e la sincronizzazione dei dati. I demoni del database gestiscono grandi volumi di dati e query complesse, fornendo un accesso rapido e sicuro alle informazioni.
Esempi di demoni di database includono:
- mysqld per MySQL. Ampiamente utilizzato nelle applicazioni web per la sua affidabilità e facilità d'uso.
- mongod per MongoDB. Utilizzato per applicazioni che richiedono archiviazione scalabile e orientata ai documenti.
- postgres per PostgreSQL. Adatto per gestire query complesse in ambienti di database relazionali.
Compila il Server Demoni
Compila il server i demoni gestiscono l'archiviazione, il recupero e la condivisione di file tra dispositivi su una rete. Consentono a più utenti e sistemi informatici di accedere a file e risorse condivisi senza la necessità di trasferimenti di archiviazione fisica. Questa funzionalità è essenziale per le organizzazioni che utilizzano l'archiviazione centralizzata dei dati.
Gli esempi più noti di file server i demoni sono:
- NFS (file system di rete). Consente agli utenti di montare file system remoti come se fossero locali.
- Demone Samba. Abilita la condivisione di file e stampanti su Windows, Linuxe sistemi operativi macOS.
posta Server Demoni
posta server i demoni gestiscono l'invio, la ricezione e l'archiviazione della posta elettronica sulle reti. Elaborano i messaggi in entrata e in uscita, eseguendo il filtraggio, il routing e la consegna dello spam. Posta server i demoni interagiscono sia con le applicazioni client che con la posta servers per garantire il transito regolare dei messaggi. Lo fanno attraverso protocolli come SMTP (Protocollo di trasferimento di posta semplice), POP3 (Post Office Protocol versione 3) e IMAP (Protocollo di accesso ai messaggi Internet).
Esempi di posta server i demoni includono:
- Postfisso. Noto per la sua efficienza, facilità di configurazione e solida sicurezza.
- Inviare una mail. Una delle mail più antiche server demoni, complessi da configurare ma flexabile e potente.
- Esim. Altamente personalizzabile, consente lo scripting per regole specifiche di gestione della posta.
Stampa Server Demoni
Stampa server i demoni sono essenziali per gestire la distribuzione e l'accodamento dei lavori di stampa tra stampanti e utenti. Accettano ed elaborano le richieste di stampa, garantendone l'esecuzione sull'hardware della stampante appropriato. Stampa server i demoni consentono inoltre una condivisione efficiente delle risorse attraverso la definizione delle priorità in base alle policy o ai requisiti dell'utente.
Uno degli esempi più comuni di stampa server demoni è CUPS (Common Unix Printing System). Ampiamente utilizzato nei sistemi operativi di tipo UNIX, offre funzionalità come la condivisione della stampante, il supporto dei linguaggi di descrizione della pagina (PDL) e la gestione dei driver. CUPS si integra facilmente nelle infrastrutture di rete per semplificare la gestione dei servizi di stampa negli ambienti hardware e operativi.
Demoni SSH
I demoni SSH sono fondamentali per proteggere la comunicazione di rete. Ascoltano le connessioni in entrata per offrire un metodo sicuro per eseguire comandi e trasferire file su reti potenzialmente non protette. IL SSH Il protocollo crittografa la connessione tra il client e server per proteggerlo da intercettazioni, intercettazioni e abusi.
I demoni SSH sono ampiamente utilizzati nei sistemi operativi Unix, Linux e Windows. SSH supporta molti metodi di autenticazione, come l'autenticazione basata su password, l'autenticazione con chiave pubblica e autenticazione a due fattori, per migliorare la sicurezza in tutta la rete. È ampiamente applicabile in ambienti commerciali e open source grazie alla sua affidabilità ed efficacia nel proteggere le comunicazioni remote.
Demoni FTP
FTP i demoni sono fondamentali per facilitare il trasferimento di file tra sistemi su a TCP/rete IP. Gestiscono l'autenticazione dell'utente e il processo di elenco, trasferimento e manipolazione dei file in base alle autorizzazioni. Supportano varie modalità di verifica, tra cui FTP anonimo (File Transfer Protocol), che consente agli utenti di scaricare file senza un account utente e accesso autenticato.
Esempi importanti di demoni FTP includono:
- vsftpd (demone FTP molto sicuro). Si concentra sulla sicurezza e sulla velocità ed è comunemente utilizzato in Distribuzioni Linux.
- ProFTPD. Altamente personalizzabile, consente agli amministratori di aggiungere o rimuovere funzionalità secondo necessità.
- FTPd puro. Celebre per il suo processo di installazione semplice e l'equilibrio tra sicurezza e prestazioni.
Demoni di monitoraggio del sistema
I demoni di monitoraggio del sistema mantengono l'integrità e le prestazioni dei sistemi e delle reti di computer. Funzionano continuamente, raccogliendo dati su varie metriche di sistema, come CPU utilizzo, consumo di memoria, attività del disco e traffico di rete. Tenendo sotto stretto controllo il sistema, aiutano gli amministratori a rilevare potenziali problemi prima che si intensifichino.
Esempi comuni di demoni di monitoraggio del sistema includono:
- Nagio. Rinomato per le estese funzionalità di monitoraggio, plug-in e script.
- Zabbix. Offre il monitoraggio in tempo reale di servers, macchine virtualie dispositivi di rete.
- Prometeo. Progettato per la dinamica cloud ambienti che richiedono la raccolta di dati di serie temporali e un supporto di avvisi complesso.
Demoni DNS
Domain Name System (DNS) i demoni traducono i nomi di dominio a misura d'uomo in Gli indirizzi IP che i computer utilizzano per identificarsi a vicenda. Funzionano su DNS servers e ascoltano le richieste dei client. Dopo averle ricevute, cercano nel database per abbinare il nome di dominio con il suo indirizzo IP corrispondente per stabilire una connessione.
Gli esempi più comuni di demoni DNS sono:
- BIND (dominio dei nomi Internet di Berkeley). Il software DNS più utilizzato supporta una vasta gamma di record e configurazioni DNS.
- Non vincolato. Progettato per essere leggero e sicuro grazie all'uso di DNSSEC (Domain Name Security Extensions).
Esempi di demoni
La tabella seguente fornisce una panoramica degli esempi di demoni più comuni menzionati sopra, inclusi i nomi, il codice eseguibile e gli usi principali:
Nome del demone | Codice eseguibile | Uso primario |
Apache HTTP Server | "httpd" | Web server demone per servire pagine web. |
Nginx | 'nginx' | Rete ad alte prestazioni server e proxy inverso. |
MySQL | 'mysqld' | Banca Dati server demone per la gestione dei database SQL. |
MongoDB | 'mondio' | Banca dati orientata ai documenti server demone. |
NFS (sistema di file di rete) | 'nfsd' | Compila il server demone per la condivisione di file su una rete. |
Samba | 'smbd' | Servizi di archiviazione e stampa per client SMB/CIFS. |
Postfix | 'postfisso' | posta server demone per la gestione della consegna della posta elettronica. |
Sendmail | 'inviare una mail' | Agente di trasferimento posta per l'invio e la ricezione di e-mail. |
CUPS (sistema di stampa UNIX comune) | 'tazze' | Stampa server demone per la gestione dei lavori di stampa e delle code. |
sshd (demone Secure Shell) | 'sshd' | Guscio sicuro server per l'amministrazione remota crittografata. |
vsftpd (demone FTP molto sicuro) | 'vsftpd' | FTP server demone per trasferimenti sicuri di file. |
Nagios | 'nagios' | Demone di monitoraggio del sistema e della rete. |
BIND (dominio dei nomi Internet di Berkeley) | 'di nome' | DNS server demone per la traduzione dei nomi di dominio. |