Crea sito

Officine Informatiche Roma

ICT SERVICES ROMA

Architettura Linux Unix – Directory e loro Analisi

Architettura Linux Unix - Directory e loro Analisi

/

La directory principale, dove tutto inizia

/bin

Contiene binari (programmi) che devono essere presenti per l’avvio e l’esecuzione del sistema.A differenza di / sbin, la directory bin contiene diversi comandi utili che sono utili sia all’amministratore di sistema che agli utenti non privilegiati. Di solito contiene shell come bash, csh, ecc …. e comandi comunemente usati come cp, mv, rm, cat, ls. Per questo motivo e in contrasto con / usr / bin, i binari in questa directory sono considerati essenziali. La ragione di ciò è che contiene programmi di sistema essenziali che devono essere disponibili anche se è montata solo la partizione contenente /. Questa situazione può verificarsi se è necessario riparare altre partizioni ma non si ha accesso alle directory condivise (ad es. Si è in modalità utente singolo e quindi non si ha accesso alla rete). Contiene inoltre programmi da cui dipendono gli script di avvio.

/boot

Contiene il kernel Linux, l’immagine del disco RAM iniziale (per i driver necessari all’avvio) e il caricatore di avvio. I file interessanti includono / boot / grub / grub.conf o menu.lst, che
viene utilizzato per configurare il caricatore di avvio e / boot / vmlinuz (o qualcosa di simile), il kernel Linux. La funzione fondamentale di un boot loader è dunque caricare ed eseguire un kernel di sistema operativo, unitamente ai processi e servizi secondari. Nella maggior parte dei casi, questo richiede di accedere alla memoria di massa, per leggere il kernel di sistema operativo, e potenzialmente altri file. Nei casi più semplici, il boot loader contiene l’indirizzo dei blocchi di disco in cui sono memorizzati i file da caricare, e deve quindi essere aggiornato se questi file vengono modificati. L’accesso al disco spesso avviene attraverso le funzioni fornite dal firmware (il BIOS nei sistemi PC IBM compatibili). Alcuni boot loader posseggono la capacità di interpretare uno o più file system per trovare i file da caricare. In questo caso, possono anche caricare un file di configurazione dal disco, o permettere ad un utente avanzato di esplorare il disco alla ricerca di file da caricare. Alcuni boot loader sono in grado di utilizzare le funzionalità fornite da alcune schede di rete (tipicamente ethernet) per scaricare un kernel dalla rete, tipicamente via TFTP. Ogni sistema operativo installato anzi ogni volume avviabile (esistono infatti anche ambienti di ripristino o simili) ha uno specifico boot loader o, meglio, il file di configurazione di avvio (per Windows 10 si chiama BCD, ad esempio) contiene le istruzioni di avvio specifiche che devono essere lette dal boot loader per ogni volume avviabile. Funzionalità aggiuntive presenti in alcuni boot loader:

  • Molti kernel supportano la possibilità di ricevere parametri di avvio per configurare il loro comportamento; il boot loader si occupa di passarli al kernel, e in alcuni casi permette all’utente di editare questi parametri.

  • Alcuni kernel prevedono che altri file siano resi disponibili al kernel durante il boot (per esempio nei sistemi Unix-like è comune l’uso di initrd, un piccolo file system memorizzato in un file). Il caricamento di questi file viene gestito dal bootloader.

  • Un boot loader può mostrare all’utente un menù di possibili kernel da caricare, con relativi parametri, permettendo all’utente di scegliere quale sistema operativo avviare.

  • Un boot loader può richiedere una password per consentire l’avvio del sistema.

/dev

Questa è una directory speciale che contiene nodi di dispositivo. “Tutto è un file” si applica anche ai dispositivi. Qui è dove il kernel mantiene un elenco di tutti i dispositivi che comprende. La directory / dev contiene i file speciali per tutti i dispositivi. I file del dispositivo vengono creati durante l’installazione e successivamente con lo script / dev / MAKEDEV. /Dev/MAKEDEV.local è uno script scritto dall’amministratore di sistema che crea file o collegamenti ai dispositivi solo locali (ovvero quelli che non fanno parte del MAKEDEV standard, come i file dei dispositivi per alcuni driver di dispositivo non standard). Questo elenco che segue non è affatto esaustivo o dettagliato come potrebbe essere. Molti di questi file di dispositivo dovranno essere compilati nel kernel per l’hardware. 
/ Dev / dsp
Processore di segnale digitale. Fondamentalmente questo costituisce l’interfaccia tra il software che produce il suono e la tua scheda audio. È un dispositivo a caratteri sul nodo principale 14 e secondario 3.
/ Dev / fd0
Il primo floppy drive. Se sei abbastanza fortunato da avere diverse unità, queste verranno numerate in sequenza. È un dispositivo a caratteri sul nodo principale 2 e sullo 0 minore.
/ Dev / fb0
Il primo dispositivo framebuffer. Un framebuffer è uno strato di astrazione tra software e hardware grafico. Ciò significa che le applicazioni non devono conoscere il tipo di hardware in uso, ma semplicemente come comunicare con l’API (Application Programming Interface) del driver framebuffer, che è ben definita e standardizzata. Il framebuffer è un dispositivo a caratteri ed è sul nodo principale 29 e sullo 0 minore.
/ Dev / hda
/ dev / hda è l’unità IDE principale sul controller IDE primario. / dev / hdb l’unità slave sul controller primario. / dev / hdc e / dev / hdd sono rispettivamente i dispositivi master e slave sul controller secondario. Ogni disco è diviso in partizioni. Le partizioni 1-4 sono partizioni primarie e le partizioni 5 e successive sono partizioni logiche all’interno di partizioni estese. Pertanto, il file del dispositivo che fa riferimento a ciascuna partizione è composto da più parti. Ad esempio / dev / hdc9 fa riferimento alla partizione 9 (una partizione logica all’interno di un tipo di partizione estesa) sull’unità IDE master sul controller IDE secondario. I numeri di nodo maggiore e minore sono alquanto complessi. Per il primo controller IDE tutte le partizioni sono dispositivi a blocchi sul nodo principale 3. L’unità master hda è su 0 minore e l’unità slave hdb è su 64 minore. Per ogni partizione all’interno dell’unità aggiungere il numero di partizione al numero di nodo secondario minore per la guida. Ad esempio / dev / hdb5 è maggiore 3, minore 69 (64 + 5 = 69). Le unità sull’interfaccia secondaria vengono gestite allo stesso modo, ma con il nodo principale 22.
/ Dev / ht0
La prima unità nastro IDE. Le unità successive sono numerate ht1 ecc. Sono dispositivi a caratteri sul nodo principale 37 e iniziano dal nodo secondario 0 per ht0 1 per ht1 ecc.
/ Dev / js0
Il primo joystick analogico. I joystick successivi sono numerati js1, js2 ecc. I joystick digitali sono chiamati djs0, djs1 e così via. Sono dispositivi a caratteri sul nodo principale 15. I joystick analogici iniziano dal nodo secondario 0 e arrivano fino a 127 (più che sufficienti anche per i giocatori più fanatici). I joystick digitali iniziano dal nodo secondario 128.
/ Dev / lp0
Il primo dispositivo stampante parallelo. Le stampanti successive sono numerate lp1, lp2 ecc. Sono dispositivi a caratteri nella modalità principale 6 e nodi minori che iniziano da 0 e numerati in sequenza.
/ Dev / loop0
Il primo dispositivo di loopback. I dispositivi di loopback sono usati per montare filesystem che non si trovano su altri dispositivi a blocchi come i dischi. Ad esempio, se si desidera montare un’immagine CD ROM iso9660 senza masterizzarla su CD, è necessario utilizzare un dispositivo di loopback per farlo. Questo di solito è trasparente per l’utente ed è gestito dal comando mount. Fare riferimento alle pagine del manuale per mount e losetup. I dispositivi di loopback sono dispositivi a blocchi sul nodo principale 7 e con nodi minori che iniziano da 0 e numerati in sequenza.
/ Dev / md0
Primo gruppo metadisco. I metadisk sono correlati ai dispositivi RAID (Redundant Array of Independent Disks). Per ulteriori dettagli, consultare il RAID HOWTO più recente presso l’LDP. Questo può essere trovato su http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html. I dispositivi metadisk sono dispositivi a blocchi sul nodo principale 9 con nodi minori che iniziano da 0 e numerati in sequenza.
/ Dev / mixer
Questo fa parte del driver OSS (Open Sound System). Fare riferimento alla documentazione OSS su http://www.opensound.com per maggiori dettagli. È un dispositivo a caratteri sul nodo principale 14, nodo secondario 0.
/ Dev / null
Il cestino della spazzatura. Un buco nero in cui è possibile inviare dati per non vederli mai più. Tutto ciò che viene inviato a / dev / null scomparirà. Ciò può essere utile se, ad esempio, si desidera eseguire un comando ma non si visualizza alcun feedback sul terminale. È un dispositivo a caratteri sul nodo principale 1 e nodo secondario 3.
/ Dev / psaux
La porta del mouse PS / 2. Questo è un dispositivo a caratteri sul nodo principale 10, nodo secondario 1.
/ Dev / pda
Dischi IDE con porta parallela. Questi sono chiamati in modo simile ai dischi sui controller IDE interni (/ dev / hd *). Sono dispositivi a blocchi sul nodo principale 45. Nodi minori

/etc

La directory / etc contiene tutti i file di configurazione del sistema. esso contiene anche una raccolta di script di shell che avviano ciascuno dei servizi di sistema all’avvio. Tutto in questa directory dovrebbe essere testo leggibile. Mentre tutto in / etc è interessante, ecco alcuni preferiti di tutti i tempi: / etc  La directory /etc e’ la directory che contiene tutti i file di configurazione di un sistema linux. In realta’ alcuni file di configurazione vengono creati all’interno della directory home di ciascun utente. Cosi’, l’utente tizio ad esempio, avra’ i propri file di configurazione all’interno della directory /home/tizio.  Per saper configurare un sistema linux, occorre acquisire il know-how necessario leggendo la documentazione disponibile in abbondanza sia all’interno del sistema stesso che in rete. Ad ogni modo, un buon punto di partenza puo’ essere l’esame della directory /etc. I file contenuti in questa directory non sono visibili, pertanto occorre usare il comando ls con l’opzione -a (ls -a). Molti di questi file terminano con ‘rc’ che significa ‘runtime configuration’, cioe’ piu’ o meno configurazione per l’esecuzione (le parole run e time significano esecuzione/eseguire e tempo, quindi: tempo di esecuzione, o meglio, fase, periodo di esecuzione. Percio’ runtime significa ‘durante l’esecuzione’). Quindi il file aumixrc ad esempio, significa piu’ o meno: ‘configurazione per l’esecuzione del programma aumix’. Molti altri file sono delle directory che a loro volta contengono dei file di configurazione oppure altre directory. Analizzando il contenuto di una directory /etc tipica di una distribuzione Mandrake (N.B.: alcuni file possono variare leggermente da distribuzione a distribuzione) e considerando i file piu’ comuni ecco cosa troveremo (per una descrizione dettagliata dei vari programmi si puo’ usare ‘man’):

/crontab

Un file che definisce quando verranno eseguiti i lavori automatizzati; / etc / fstab, una tabella di dispositivi di archiviazione e i relativi punti di montaggio; e / etc / passwd, un elenco degli account utente A volte sorge la necessita’ di eseguire un comando, uno script o un programma ad intervalli regolari di tempo, un mese, un’ora, un giorno, una settimana o altri. Un meccanismo sempre presente in Linux e’ rappresentato dal demone cron.
Si tratta di un programma che gira in background e, ad intervalli regolari, esegue dei compiti ben precisi. Normalmente non bisogna installarlo in quanto gia’ attivo nel proprio sistem (consideriamo una distribuzione Linux RedHat). Vediamo come funziona.:
Cron viene attivato ogni minuto e legge degli opportuni file di configurazione dove vengono specificate le operazioni da compiere e gli intervalli relativi. Se trova qualcosa da eseguire nel minuto in cui si e’ attivato, allora procede all’operazione. Tutto cio’ che viene scritto sullo standard output, viene inviato via email al proprietario del cron, tipicamente “root”.
Cron non deve essere riavviato per ogni modifica. Ci sono tre modi diversi di specificare operazioni ed intervalli. Primo modo La via piu’ semplice e’ la creazione di uno script (sh, bash, perl o altro) che esegue cio’ che vogliamo. Tale script andra’ inserito in una delle directory seguenti

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

per poter essere eseguito ad intervalli ben definiti (rispettivamente un giorno, un’ora, un mese e una settimana). E’ possibile anche mantenere tutti gli script in una directory standard (ad esempio “/scripts”) e poi creare un soft link ( Manpage of LN (1) , “ln -s”) in una di quelle sopra elencate.
I cron giornalieri, mensili e settimanali di solito vengono eseguiti alle 4:00 (piena notte!).

Secondo modo

Per intervalli di tempo diversi da quelli standard, e’ possibile usare la directory

/etc/cron.d

oppure il file

/etc/crontab

In cron.d possono essere inseriti file con formato particolare (lo stesso di crontab), indicanti operazioni ed intervalli di tempo piccoli anche solo minuto.
Formato: possono essere inseriti in ogni file

  • commenti

  • linee vuote

  • assegnazioni di variabili di ambiente

  • comandi cron (i commenti non sono ammessi sulla stessa linea di un comando cron)

Andiamo con ordine. I commenti sono linee che iniziano con il simbolo “#” e come le linee vuote vengono ignorati.

/home

Nelle configurazioni normali, a ciascun utente viene assegnata una directory in / home.Gli utenti ordinari possono scrivere file solo nelle loro directory home. Questa limitazione protegge il sistema da attività dell’utente errate. Nei sistemi operativi Unix e Unix-like le home directory sono assegnate dall’amministratore di sistema (root), all’atto della creazione degli account per i nuovi utenti. In molti di questi sistemi operativi, il comportamento predefinito dei comandi che aggiungono account al sistema (ad esempio useradd) prevede che la home directory di un utente sia una subdirectory della directory /home e che abbia un nome uguale a quello del nome utente (ad esempio gli utenti alicebruno e carla avrebbero come home directory rispettivamente /home/alice/home/bruno e /home/carla).  Fa eccezione a questa regola generale l’utente root, la cui home directory può essere la directory radice (“/“) oppure una directory separata da quelle degli altri utenti (ad esempio /root sui sistemi GNU/Linux).

/lib

Contiene i file di libreria condivisa utilizzati dai programmi di sistema principali.
Questi sono simili alle librerie a collegamento dinamico (DLL) in Windows.

Se si rileva che Linux non riesce a trovare una libreria, provare a cercarla con il comando:

$ cat /etc/ld.so.conf|xargs -i find {} -name <nomelibreria>\*

ricordandosi eventualmente di cercarla anche in /usr/lib:

$ find /usr/lib -name <nomelibreria>\*

Se questi comandi vi sembrano troppo astrusi e vi mettono a disagio è possibile fare la ricerca in ambiente grafico cliccando col mouse sull’icona di “Trova” e simili. A questo punto ci sono tre possibilità:

  1. la libreria non c’è e allora bisogna installarla

  2. la libreria esiste e allora si dovrà aggiungere una riga in /etc/ld.so.conf con l’indirizzamento completo della libreria e poi far girare il programma ldconfig24

  3. la libreria esiste ma Linux non riesce a caricarla; in questo caso (improbabile) la libreria è danneggiata e va sostituita

In realtà ci sarebbe anche la possibilità che la libreria esiste ma non ha esattamente il nome richiesto25; è sconsigliabile creare un collegamento simbolico col nome richiesto perché si rischia di provocare malfunzionamenti dovuti a differenze nelle versioni delle librerie.

Può essere utile anche conoscere il comando per elencare le librerie da cui dipende un determinato programma:

# ldd<nomeprogramma>

Esempio:

# ldd /usr/sbin/sshd

che visualizza:

libwrap.so.0 => /lib/libwrap.so.0 (0x4002c000)

libpam.so.0 => /lib/libpam.so.0 (0x40035000)libdl.so.2 => /lib/libdl.so.2 (0x4003d000)

libresolv.so.2 => /lib/libresolv.so.2 (0x40041000)…. etc elencando le librerie usate dal demone del protocollo SSH.

/lost+found

Ogni partizione o dispositivo formattato che utilizza un file system Linux, come ext3, avrà questa directory. Viene utilizzato in caso di recupero parziale da un evento di corruzione del file system. A meno che non sia successo qualcosa di veramente brutto al tuo sistema, questa directory rimarrà vuota.

/media

Sui moderni sistemi Linux, la directory / media conterrà il file punti di montaggio per supporti rimovibili come unità USB, CD-ROM, e così via, che vengono montati automaticamente all’inserimento.

/mnt

Sui vecchi sistemi Linux, la directory / mnt contiene punti di montaggio per dispositivi rimovibili che sono stati montati manualmente. Qui puoi trovare (in sottocartelle) i dispositivi di memorizzazione, dai dischi rigidi alle chiavette USB passando alle cartelle di rete.Se connetti una chiavetta da 8 GB qui comparirà una cartella da 8 GB con tutto il contenuto presente all’interno (se presente), così come se hai montato una qualsiasi partizione del disco fisso. Su alcuni sistemi operativi potrai trovare anche una cartella /mount, che svolge esattamente lo stesso compito. Con i contenuti presenti in queste cartelle puoi tenere sotto controllo tutto lo spazio presente sul tuo PC (incluse le periferiche di memorizzazione esterna) e il corretto funzionamento delle periferiche.

/opt

La directory / opt viene utilizzata per installare il software “opzionale”. Questo è principalmente utilizzato per contenere prodotti software commerciali su cui potrebbe essere installato il sistema.

/proc

La directory / proc è speciale. Non è un vero file system nel senso di file memorizzati sul tuo disco rigido. Piuttosto, è un file system virtuale gestito dal kernel Linux. I “file” che contiene sono spioncini nel kernel stesso. I file sono leggibili e ti daranno un’immagine di come il kernel vede il tuo computer.

/root

Questa è la home directory per l’account root. La partizione di root è di conseguenza la partizione principale, il cui file system contiene la directory principale / e tutte le directory in cui sono montate le altre partizioni, se presenti. In ambito Unix, e quindi in GNU/Linux e nella nostra distribuzione Debian, l’utente root è colui o colei che si occupa dell’amministrazione della macchina.Il suo UID è 0 e di conseguenza possiede i privilegi di amministrazione per effettuare qualsiasi operazione: dalla lettura, modifica o cancellazione di un file qualsiasi, alla terminazione di un servizio e qualunque altro processo.

Con le impostazioni di default, per poter accedere come utente root nel sistema, ed avere quindi la possibilità di svolgere ogni operazione, basterà digitare da terminale

su –

Verrà richiesta la password di root e sarà eseguito l’accesso.
Noterete che il prompt del terminale è cambiato, passando da:

$                             (che identifica un utente normale)
a:

#                            (che identifica l’utente root)

D’ora in poi il prompt sarà riportato prima dei comandi per indicare se sono eseguiti con privilegi di amministrazione.

/sbin

Questa directory contiene file binari di “sistema”. Questi sono programmi che eseguono attività di sistema vitali che sono generalmente riservate a superutente.

/tmp

La directory / tmp è destinata alla memorizzazione temporanea e temporanea file creati da vari programmi. Alcune configurazioni causano lo svuotamento della directory ogni volta che si riavvia il sistema. In Unix e Linux, le directory temporanee globali sono / tmp e / var / tmp. I browser Web scrivono periodicamente dati nella directory tmp durante le visualizzazioni di pagina e i download. In genere, / var / tmp è per file persistenti (poiché può essere conservato al riavvio) e / tmp è per file più temporanei. Vedi Standard di gerarchia dei filesystem. Inoltre, un utente può impostare la propria variabile di ambiente TMPDIR in modo che punti a una directory preferita (dove è consentita la creazione e la modifica di file).

/usr

L’albero di directory / usr è probabilmente il più grande su un sistema Linux. esso contiene tutti i programmi e i file di supporto utilizzati dagli utenti normali.

/ usr / bin /

Le librerie condivise per i programmi in / usr / bin. Non è raro che questa directory contenga migliaia di programmi.

/ usr / lib

Le librerie condivise per i programmi in / usr / bin.

/usr/local

L’albero / usr / local è dove sono installati i programmi che non sono inclusi con la vostra distribuzione ma che sono destinati all’uso a livello di sistema. I programmi compilati dal codice sorgente sono normalmente installati in /

/usr / local / bin.

Su un sistema Linux appena installato, questo albero esiste, ma sarà vuoto fino a quando l’amministratore di sistema non inserirà qualcosa al suo interno.

/usr/sbin

Contiene più programmi di amministrazione del sistema.

/ usr / share /

Contiene tutti i dati condivisi utilizzati dai programmi in / usr / bin. Ciò include elementi quali file di configurazione predefiniti, icone, sfondi dello schermo, file audio e così via.

/usr/share/doc

La maggior parte dei pacchetti installati sul sistema includerà un tipo di documentazione. In / usr / share / doc, troveremo i file di documentazione organizzati per pacchetto.

/var

Con l’eccezione di / tmp e / home, le directory che abbiamo guardato finora rimangono relativamente statici; cioè, il loro contenuto non cambia. L’albero di directory / var è il punto in
cui sono archiviati i dati che possono cambiare. Qui si trovano vari database, file di spool, posta dell’utente e così via.

/var/log

Contiene file di registro, registrazioni di varie attività di sistema. Questi sono importanti e devono essere monitorati di volta in volta. I più utili sono / var / log / messages e / var / log

/syslog.

Molto spesso ci si ritrova a diagnosticare problemi, capire perchè una applicazione non parte o eseguire blandi compiti di reverse engineering sul funzionamento di parti del sistema.La prima fonte da consultare per ogni operazione di troubleshooting sono i log, file di testo che tengono traccia di errori e particolari azioni eseguite dal sistema, come il cambiamento di una password, il login di un certo utente o il messaggio di errore di una applicazione.
I log del sistema vengono generalmente scritti in directory come /var/log e var/adm o dove definito nei file di configurazione dei singoli programmi.
In quasi tutti i sistemi Unix il demone syslogd si occupa della gestione dei log tramite il file di configurazione /etc/syslog.conf. Le recenti distribuzioni Linux utilizzano sysklogd, una versione evoluta di syslogd che gestisce anche il logging del kernel (tramite il demone klogd).
Sono inoltre disponibili versioni modificato o più sicure di syslog.
L’equivalente su Windows dei log Unix sono gli eventi. Si noti che per motivi di sicurezza su alcuni sistemi, è necessario essere il superutente per visualizzare i file di registro.

Incrementare la sicurezza in un sistema operativo gnu/linux significa anche analizzare e gestire paranoicamente i log.

Ciò significa che se non vogliamo perdere d’occhio tutto quello che accade sul nostro sistema , anche dopo un eventuale attacco informatico, dobbiamo salvare on-the-fly (al volo) i log su un dispositvo fisico esterno alla memoria del pc, che potrebbe essere manomessa. Quindi una cosa buona e giusta, sarebbe quella di stampare al volo tutto quello che succede sulla nostra macchina.
Certamente, ci vuole tanta carta e una buona stampante (anche vecchia) che stampi a modulo continuo. Ecco un esempio per tener d’occhio i log del kernel in real time:
tail -f /var/log/messages | grep -v "Inbound" > /dev/lp0
verrà stampato (/dev/lp0) in modalità raw tutto il cat del log (/var/log/messages) on-the-fly (tail -f), filtrando gli eventuali inbound (grep -v) del firewall attivo.

Translate »
×

Benvenuto !

Fai clic su uno dei nostri specialisti elencati di seguito per avviare una chat di supporto su WhatsApp o inviaci un'e-mail a helpdesk [email protected]

You are Wellcome !

Click one of our helpdesk specialist below to start a chat on WhatsApp or send us an email to [email protected]

 

× HELPDESK