Introduzione a Linux
Linux, come sistema operativo, è il risultato di una serie molto grande di apporti da diversi ambienti Unix. Quindi, gran parte di ciò che riguarda o compone Linux, non è esclusivo di questo ambiente.
Questo capitolo introduttivo è rivolto a tutti i lettori che non hanno avuto esperienze con Unix, ma anche chi ha già una conoscenza di Unix farebbe bene a darci un’occhiata.
Case sensitive
I sistemi operativi Unix, e quindi anche Linux, sono sensibili alla differenza tra le lettere maiuscole e minuscole. La differenza è sostanziale, per cui gli ipotetici file denominati: Ciao, cIao, CIAO, ecc. sono tutti diversi.
Non bisogna confondere questa caratteristica con quello che può succedere in altri ambienti, come per esempio MS-Windows95, che preservano l’indicazione delle lettere maiuscole o minuscole, ma che poi non fanno differenza quando si vuole fare riferimento a quei file.
Utenti
Linux, come gli altri sistemi derivati da Unix, è multiutente. La multiutenza implica una distinzione tra i vari utenti. Fondamentalmente si distingue tra l’amministratore del sistema, o superuser, e gli altri utenti.
L’amministratore del sistema è quell’utente che può fare tutto quello che vuole, soprattutto rischia di produrre gravi danni anche solo per piccole disattenzioni.
L’utente normale è quello che utilizza il sistema senza pretendere di organizzarlo e non gli è possibile avviare programmi o accedere a dati che non lo riguardano.
Account
Per poter utilizzare un sistema di questo tipo, occorre essere stati registrati, ovvero, occorre avere ottenuto un account.
Dal punto di vista dell’utente, l’account è un nome e una password che gli permettono di essere riconosciuto e quindi di poter accedere. Oltre a questo, l’account stabilisce l’appartenenza ad un gruppo di utenti.
Il nome dell’amministratore è sempre root, quello degli altri utenti viene deciso di volta in volta.
Account e monoutenza
I sistemi Unix e i programmi che su questi sistemi possono essere utilizzati, non sono predisposti per un utilizzo distratto: gli ordini non vengono discussi. Molti piccoli errori possono essere disastrosi se sono compiuti dall’utente root.
È molto importante evitare il più possibile l’utilizzo dell’account dell’amministratore anche quando si è l’unico utilizzatore del proprio computer.
Composizione
Il sistema operativo Linux, così come tutti i sistemi operativi Unix, è composto essenzialmente da:
- un sistema di avvio o boot,
- un kernel,
- un filesystem,
- un sistema di inizializzazione e gestione dei processi in esecuzione,
- un sistema di gestione della rete,
- un sistema di gestione delle stampe,
- un sistema di registrazione e controllo degli accessi,
- una shell (interprete dei comandi),
- alcuni programmi di utilità (utility) per la gestione del sistema,
- strumenti di sviluppo software (C/C++),
Boot
Il boot è il modo con cui un sistema operativo può essere avviato quando il computer viene acceso. Di solito, il software registrato su ROM dei computer basati sull’uso di dischi, è fatto in modo da eseguire le istruzioni contenute nel primo settore di un dischetto, oppure, in sua mancanza, del cosiddetto MBR, o Master Boot Record che è il primo settore del primo disco fisso. Il codice contenuto nel settore di avvio di un dischetto o del disco fisso, provvede alla esecuzione del kernel (lo avvia).
Con Linux, la configurazione e la gestione del sistema di avvio, viene fatta attraverso due modi possibili:
- LILO, che è in grado di predisporre un settore di avvio su un dischetto, sull’MBR o sul primo settore della partizione contenente Linux;
- Loadlin, che permette di avviare l’esecuzione di un kernel Linux da una sessione Dos.
Kernel
Il kernel, come suggerisce il nome, è il nocciolo del sistema operativo. I programmi utilizzano il kernel per le loro attività, e in questa maniera sono sollevati dall’agire direttamente con la CPU. Di solito, è costituito da un unico file il cui nome potrebbe essere vmlinuz (oppure zImage, zbImage e altri), ma può comprendere anche moduli aggiuntivi, per la gestione di componenti hardware specifici che devono poter essere attivati e disattivati durante il funzionamento del sistema.
Quando il kernel viene avviato (attraverso il sistema di avvio), esegue una serie di controlli diagnostici in base ai tipi di dispositivi (componenti hardware, chiamati anche periferiche) per il quale è stato predisposto, quindi esegue il mount del filesystem principale (root), e infine avvia la procedura di inizializzazione del sistema (init).
Filesystem
Il filesystem è il modo con cui sono organizzati i dati all’interno di un disco o di una sua partizione. Nei sistemi operativi Unix non esiste la possibilità di distinguere tra una unità di memorizzazione ed un altra, come avviene nel Dos, in cui ogni disco o partizione sono contrassegnati da una lettera dell’alfabeto (A:, B:, C:). Nei sistemi Unix, tutti i filesystem cui si vuole poter accedere, devono essere concatenati assieme in modo da formare un unico filesystem globale.
Quando un sistema Unix viene avviato, si attiva il filesystem principale, o root, e quindi possono essere collegati a questo altri filesystem a partire da una directory o sottodirectory di quella principale. Dal momento che per accedere ai dati di un filesystem diverso da quello principale occorre che questo sia collegato, nello stesso modo, per poter rimuovere l’unità di memorizzazione contenente questo filesystem, occorre interrompere questo collegamento. Ciò significa, che nei sistemi Unix non si può inserire un dischetto, accedervi immediatamente e toglierlo quando si vuole. Occorre dire al sistema di collegare il filesystem del dischetto, quindi lo si può usare come parte dell’unico filesystem globale. Al termine si deve interrompere questo collegamento e solo allora si può rimuovere il dischetto.
L’operazione con cui si collega un filesystem secondario nel filesystem globale, viene detta mount e normalmente si utilizza il verbo “montare” con questo significato; l’operazione inversa viene detta unmount e conseguentemente si utilizza il verbo “smontare”. La directory a partire dalla quale si inserisce un altro filesystem è il mount point.
Inizializzazione e gestione dei processi
Linux, come tutti i sistemi Unix, è multitasking, cioè in grado di eseguire diversi programmi, o processi, contemporaneamente. Per poter realizzare questo, esiste un gestore dei processi elaborativi: init, che viene avviato subito dopo l’attivazione del filesystem principale, e a sua volta si occupa di eseguire la procedura di inizializzazione del sistema. In pratica, esegue una serie di istruzioni necessarie alla corretta configurazione del particolare sistema che si sta avviando.
Daemon
Molti servizi sono svolti da programmi che vengono avviati durante la fase di inizializzazione del sistema e quindi compiono silenziosamente la loro attività. Questi programmi sono detti daemon e questo termine va considerato come equivalente a server o “esperto”.
Gestione dei servizi di rete
Nei sistemi Unix la gestione della rete è un elemento essenziale e normalmente presente. I servizi di rete vengono svolti da una serie di daemon attivati in fase di inizializzazione del sistema. Nei sistemi Linux, i servizi di rete sono controllati fondamentalmente da tre daemon:
- inetd che si occupa di attivare di volta in volta, quando necessario, alcuni daemon che a loro volta gestiscono servizi specifici;
- tcpd che si occupa di controllare e filtrare l’utilizzazione dei servizi offerti dal proprio sistema contro gli accessi indesiderati;
- rpc.portmap che si occupa del protocollo RPC (Remote Procedure Call).
Un servizio molto importante nelle reti locali consente di condividere porzioni di filesystem da e verso altri computer connessi. Questo si ottiene con il protocollo NFS che permette quindi di realizzare dei filesystem di rete.
Gestione della stampa
Tutti i sistemi operativi multitasking hanno un sistema di coda di stampa (spool). Linux utilizza normalmente il daemon lpd che in particolare è anche in grado di ricevere richieste di stampa remote e di inviare richieste di stampa a computer remoti.
Registrazione e controllo degli accessi
I sistemi Unix, oltre che multitasking, sono anche multiutente, cioè possono essere usati da più utenti contemporaneamente. La multiutenza dei sistemi Unix è da considerare nel modo più ampio possibile, nel senso che si può accedere all’utilizzo del computer attraverso la console, terminali locali connessi attraverso porte seriali, terminali locali connessi attraverso una rete locale e terminali remoti connessi attraverso il modem.
In queste condizioni, il controllo dell’utilizzazione del sistema è essenziale. Per questo, ogni utente che accede deve essere stato precedentemente registrato, con un nome e una “parola di accesso”, o password.
La fase attraverso cui un utente viene riconosciuto e quindi gli viene consentito di agire, è detta login. Così, la conclusione dell’attività da parte di un utente è detta logout.
Shell – interprete dei comandi
Ciò che permette a un utente di interagire con un sistema operativo è la shell, che si occupa di interpretare e eseguire i comandi dati dall’utente.
Dal punto di vista pratico, il funzionamento di un sistema Unix dipende molto dalla shell utilizzata, di conseguenza, la scelta della shell è molto importante. La shell standard di Linux è bash.
Una shell Unix normale svolge i compiti seguenti:
- mostra il prompt o invito all’inserimento dei comandi;
- interpreta la riga di comando data dall’utente;
- esegue delle sostituzioni, in base ai caratteri jolly e alle variabili di ambiente;La sostituzione dei caratteri jolly è il procedimento attraverso il quale, alcuni caratteri speciali vengono tradotti in un elenco di nomi di file e/o directory corrispondenti. Negli ambienti Unix si utilizza il termine globbing per fare riferimento a questo concetto.
- mette a disposizione alcuni comandi interni;
- mette in esecuzione i programmi;
- gestisce la ridirezione dell’input e dell’output;
- è in grado di interpretare e eseguire dei file script di shell.
Utility per la gestione del sistema
I comandi interni di una shell non bastano per svolgere tutte le attività di amministrazione del sistema. I programmi di utilità sono quelli che di solito hanno piccole dimensioni, sono destinati a scopi specifici di amministrazione del sistema o anche solo di uso comune.
Le utility di uso comune sono solitamente contenute all’interno delle directory /bin e /usr/bin. Quelle riservate all’uso da parte dell’amministratore del sistema, l’utente root, sono normalmente contenute in /sbin e /usr/sbin dove la lettera s iniziale, sta per superuser, con un chiaro riferimento all’amministratore.
Strumenti di sviluppo software
Tutti i sistemi operativi devono avere un mezzo per produrre del software. In particolare, Un sistema operativo Unix deve essere in grado di compilare programmi scritti in linguaggio C/C++. Gli strumenti di sviluppo di Linux, composti da un compilatore in linguaggio C/C++ e da altri programmi di contorno, sono indispensabili per poter installare del software distribuito in forma sorgente non compilata.
Spegnimento
Qualunque sistema operativo multitasking, e tanto più se anche multiutente, deve prevedere una procedura di spegnimento che si occupi di chiudere tutte le attività in corso prima di consentire lo spegnimento fisico del computer.
Linux permette solo all’utente root di avviare la procedura di spegnimento con il comando seguente.
#
shutdown -
h now
In teoria è possibile utilizzare la combinazione [Ctrl+Alt+Canc] per riavviare il sistema, ma è sempre preferibile eseguire uno shutdown per il riavvio del sistema.
#
shutdown -
r now
Dispositivi
I vari componenti hardware di un computer, sono rappresentati in un sistema Unix come file di dispositivo, normalmente contenuti nella directory /dev (device). Quando si vuole accedere direttamente a un dispositivo, lo si fa quindi utilizzando il nome del file di dispositivo corrispondente.
Tipi
Esistono due categorie fondamentali di dispositivi:
- a carattere, cioè in grado di gestire i dati in blocchetti di un singolo byte per volta;
- a blocchi, cioè in grado di gestire i dati solo in blocchi (settori) di una dimensione fissa.
Il tipico dispositivo a caratteri è la console o la porta seriale, mentre il tipico dispositivo a blocchi è una unità disco. La tabella (seguente) mostra l’elenco di alcuni nomi di dispositivo di Linux.
dispositivo | descrizione |
/dev/fd0 | la prima unità a dischetti |
/dev/fd0H1440 | unità a dischetti con l’indicazione esplicita del formato: 1440KB |
/dev/hda | il primo disco fisso IDE/EIDE |
/dev/hda1 | la prima partizione del primo disco fisso IDE/EIDE |
/dev/hdb | il secondo disco fisso IDE/EIDE |
/dev/sda | il primo disco SCSI |
/dev/sda1 | la prima partizione del primo disco SCSI |
/dev/lp0 | la prima porta parallela dal punto di vista di Linux |
/dev/lp1 | la seconda porta parallela dal punto di vista di Linux |
/dev/cua0 | la prima porta seriale (chiamate in uscita) |
/dev/ttyS0 | la prima porta seriale (chiamate in ingresso) |
Alcuni file di dispositivo, non fanno riferimento a componenti hardware veri e propri. Il più noto di questi è /dev/null utilizzato come fonte per il “nulla” o come pattumiera senza fondo.
Dischi
Le unità di memorizzazione a dischi sono dispositivi come gli altri, ma possono essere trattati in due modi diversi a seconda delle circostanze: i dischi, o le partizioni, possono essere visti come dei file enormi o come contenitori di file (filesystem).
Questa distinzione è importante perché capita spesso di utilizzare dischetti che non hanno alcuna struttura di dati essendo stati usati come se si trattasse di un unico file. Il caso più comune è dato dai dischetti di avvio contenenti solo il kernel: non si tratta di dischetti all’interno dei quali è stato copiato il file del kernel, ma si tratta di dischetti che sono il kernel.
È anche possibile avere dischetti di avvio organizzati normalmente con un filesystem, ma questo particolare tipo di dischetti di avvio viene descritto più avanti.
La visione che normalmente si ha delle unità di memorizzazione contenenti file e directory è una astrazione gestita automaticamente dal sistema operativo. Questa astrazione si chiama filesystem.
2.6 Organizzazione di un filesystem Unix
Tutto ciò che è contenuto in un filesystem Unix, è in forma di file: anche una directory è un file.
Regular file
Quando si vuole fare riferimento a un file nel senso stretto del termine, ovvero un archivio di dati, se si vuole evitare qualunque ambiguità si utilizza il termine regular file, o file normale.
Directory
Una directory è un file speciale contenente riferimenti ad altri file.
I dati contenuti in un filesystem sono organizzati in forma gerarchica schematizzabile attraverso un grafo orientato (albero) che parte da una radice e si sviluppa in rami e nodi. La figura (seguente) mostra uno schema semplificato di un grafo orientato.
La radice è il nodo principale di questo grafo orientato, i rami rappresentano il collegamento (la discendenza) dei nodi successivi con quello di origine (il genitore). La radice corrisponde a una directory, mentre i nodi successivi possono essere directory, file di dati o file di altro genere.
Per identificare un nodo (file o directory), all’interno di questa gerarchia, si definisce il percorso (path). Il percorso è espresso da una sequenza di nomi di nodi che devono essere attraversati, separati da una barra obliqua (/). Il percorso pluto/pippo/topolino rappresenta un attraversamento dei nodi pluto, pippo e topolino.
Dal momento che il grafo di un sistema del genere ha un nodo di origine corrispondente alla radice, si distinguono due tipi di percorsi: relativo e assoluto.
- Percorso relativoUn percorso è relativo quando parte dalla posizione corrente (o attuale) del grafo per raggiungere la destinazione desiderata. Nel caso dell’esempio precedente, pluto/pippo/topolino indica di attraversare il nodo pluto che è un discendente della posizione corrente e quindi gli altri.
- Percorso assolutoUn percorso è assoluto quando parte dalla radice.
Il nodo della radice non ha un nome come gli altri: viene rappresentato con una sola barra obliqua (/), di conseguenza, un percorso che inizia con tale simbolo, è un percorso assoluto. Per esempio, /paperone/paperino indica un percorso assoluto che parte dalla radice per poi attraversare paperone e quindi raggiungere paperino.
Il grafo di un filesystem normale è orientato, nel senso che ha una direzione, ovvero ogni nodo ha un genitore e può avere dei discendenti e il nodo radice rappresenta l’origine. Quando in un percorso si vuole tornare indietro verso il nodo genitore, non si usa il nome di questo, ma un simbolo speciale rappresentato da due punti in sequenza (..). Per esempio, ../topolino rappresenta un percorso relativo in cui si raggiunge il nodo finale, topolino, passando prima per il nodo genitore della posizione corrente.
In alcuni casi, per evitare equivoci, può essere utile poter identificare il nodo della posizione corrente. Il simbolo utilizzato è un singolo punto (.). Per cui, il percorso pluto/pippo/topolino è esattamente uguale a ./pluto/pippo/topolino.
Link
Un grafo orientato, ovvero un albero, è tale quando esiste un solo percorso per unire due nodi di questo. Nei filesystem Unix non è necessariamente così. È infatti possibile inserire dei collegamenti, o link, aggiuntivi per permettere l’utilizzo di percorsi alternativi. Si distinguono due tipi di link: simbolici e hard.
- Hard linkUn hard link è un collegamento che una volta creato ha lo stesso livello di importanza di quelli originali, e non è distinguibile da quelli.
- Link simbolicoIl link simbolico è un file speciale contenente un riferimento a un altro percorso e quindi a un altro nodo del grafo di directory e file.
In generale si preferisce l’uso di link simbolici per poter distinguere la realtà (o meglio l’origine) dalla finzione. Utilizzando un link simbolico si dichiara apertamente che si sta indicando una scorciatoia e non si perde di vista il percorso originale.
In questo modo, il grafo della struttura di un filesystem Unix può essere considerato molto simile a un grafo orientato o albero, con l’aggiunta di scorciatoie rappresentate da questi link.
Nomi dei file
Non esiste una regola generale precisa che stabilisca quali sono i caratteri che possono essere usati per nominare un file. Esiste solo un modo per (cercare di) stare fuori dai guai: il simbolo / non deve essere utilizzato essendo il modo con qui si separano i nomi all’interno di un percorso e conviene limitarsi all’uso delle lettere dell’alfabeto inglese non accentate, dei numeri, del punto e del segno di sottolineatura.
Per convenzione, nei sistemi Unix, i file che iniziano con un punto, sono classificati come “nascosti” e vengono mostrati e utilizzati solo quando espressamente richiesti.
<!> Questi file, quelli che iniziano con un punto, sono nascosti per una buona ragione: si vuole evitare che utilizzando i caratteri jolly si faccia riferimento alla directory corrente (.) e alla directory precedente (..). Nello stesso modo si deve fare molta attenzione quando di vuole fare riferimento a questi file nascosti. Il comando rm -
r .* non si limita a eliminare i file e le directory che iniziano con un solo punto iniziale, ma elimina anche . e .., cioè, alla fine, l’intero filesystem.
Permessi
I file di un filesystem Unix hanno un utente e un gruppo proprietari. L’utente proprietario può modificare i permessi di accesso ai suoi file, limitando questi anche per se stesso.
Si distinguono tre tipi di accesso: lettura, scrittura, esecuzione. Il significato del tipo di accesso dipende dal file cui questo si intende applicare.
Per i file normali:
- l’accesso in lettura permette di leggerne il contenuto;
- l’accesso in scrittura permette di modificarne il contenuto;
- l’accesso in esecuzione permette di eseguirlo, se si tratta di un eseguibile binario o di uno script di qualunque tipo.
Per le directory:
- l’accesso in lettura permette di leggerne il contenuto, e cioè di poter accedere ai file in essa contenuti (di qualunque tipo essi siano);
- l’accesso in scrittura permette di modificarne il contenuto, ovvero di creare, eliminare e rinominare dei file;
- l’accesso in esecuzione permette di attraversare una directory.
I permessi di un file permettono di attribuire privilegi differenti a seconda che l’utente sia il proprietario del file, appartenga al gruppo proprietario
Per gruppo proprietario si intende quello dell’utente proprietario.
o sia un utente diverso da questi. Si hanno quindi tre livelli differenti. I permessi si possono esprimere in due forme diverse: attraverso una stringa alfabetica o un numero.
Permessi espressi in forma di stringa
I permessi possono essere rappresentati attraverso una stringa di nove caratteri in cui possono apparire le lettere r, w, x oppure un trattino (-
). La presenza della lettera r indica un permesso in lettura, la lettera w indica un permesso in scrittura, la lettera x indica un permesso in esecuzione.
I primi tre caratteri della stringa rappresentano i privilegi concessi al proprietario stesso, il gruppetto di tre caratteri successivo rappresenta i privilegi degli utenti appartenenti al gruppo, il gruppetto finale di tre caratteri rappresenta i privilegi concessi agli altri utenti.Esempi
rw-r--r--
L’utente proprietario può accedervi in lettura e scrittura, mentre sia gli appartenenti al gruppo che gli altri utenti possono solo accedervi in lettura.
rwxr-x---
L’utente proprietario può accedervi in lettura, scrittura ed esecuzione; gli utenti appartenenti al gruppo possono accedervi in lettura e in esecuzione; gli altri utenti non possono accedervi in alcun modo.
rw-------
L’utente proprietario può accedervi in lettura e scrittura, mentre tutti gli altri non possono accedervi affatto.
Permessi espressi in forma numerica
I permessi possono essere rappresentati attraverso una serie di tre cifre numeriche, in cui la prima rappresenta i privilegi dell’utente proprietario, la seconda quelli del gruppo e la terza quelli degli altri utenti. Il permesso di lettura corrisponde al numero 4, il permesso di scrittura corrisponde al numero 2, il permesso di esecuzione corrisponde al numero 1. Il numero che rappresenta il permesso attribuito ad un tipo di utente, si ottiene sommando i numeri corrispondenti ai privilegi che si vogliono concedere.Esempi
644
L’utente proprietario può accedervi in lettura e scrittura (4+2), mentre sia gli appartenenti al gruppo che gli altri utenti possono solo accedervi in lettura.
750
L’utente proprietario può accedervi in lettura, scrittura ed esecuzione (4+2+1); gli utenti appartenenti al gruppo possono accedervi in lettura e in esecuzione (4+1); gli altri utenti non possono accedervi in alcun modo.
600
L’utente proprietario può accedervi in lettura e scrittura (4+2), mentre tutti gli altri non possono accedervi affatto.
S-bit
I permessi dei file sono memorizzati in una sequenza di 9 bit, dove ogni gruppetto di tre rappresenta i permessi per una categoria di utenti (il proprietario, il gruppo, gli altri).
Assieme a questi 9 bit ne esistono altri tre, posti all’inizio, che permettono di indicare: il SUID (Set User ID), il SGID (Set Group ID) e lo sticky bit. Si tratta di attributi speciali che riguardano solo i file eseguibili. Solitamente non vengono usati e per lo più gli utenti normali ignorano che esistano.
Tutto questo serve adesso per sapere il motivo per il quale spesso i permessi espressi in forma numerica (ottale) sono di quattro cifre, con la prima normalmente azzerata.
Per esempio, la modalità 0644 rappresenta il permesso per l’utente proprietario di accedervi in lettura e scrittura e per gli altri utenti di accedervi in sola lettura.
L’indicazione della presenza di questi bit attivati può essere vista anche nelle rappresentazioni in forma di stringa. L’elenco seguente mostra il numero ottale e la sigla corrispondente.
- SUID = 4 =
--s------
- SGID = 2 =
-----s---
- Sticky = 1 =
--------t
Come si può osservare, questa indicazione prende il posto del permesso in esecuzione. Nel caso in cui, il permesso in esecuzione corrispondente non sia attivato, la lettera (s o t) appare maiuscola.
Date
Tra gli attributi di un file ci sono anche tre indicazioni data-orario:
- la data e l’ora di creazione: questa viene modificata in particolare quando si cambia lo stato del file (permessi e proprietà);
- la data e l’ora di modifica: questa viene modificata quando si modifica il contenuto del file;
- la data e l’ora di accesso: questa cambia quando si accede al file anche solo in lettura.
2.7 Login – logout
Una volta avviato un sistema Unix, prima che sia disponibile il prompt della shell, occorre che l’utente sia riconosciuto dal sistema, attraverso la procedura di login. Quello che viene chiesto è l’inserimento del nome dell’utente (così come è stato registrato) e subito dopo la parola chiave (password) abbinata a quell’utente. Eccezionalmente può trattarsi di un utente senza password, così come avviene per i mini sistemi a dischetti fatti per consentire le operazioni di manutenzione eccezionale.
Si distingue solo tra due tipi di utenti: l’amministratore, il cui nome è root, e gli altri utenti. L’utente root non ha alcun limite di azione, gli altri utenti dipendono dai permessi attribuiti ai file (e directory) oltre che dai vincoli posti direttamente da alcuni programmi.
In teoria, è possibile usare un computer personale solo utilizzando i privilegi dell’utente root. In pratica, questo non conviene perché si perde di vista il significato della gestione dei permessi sui file (e directory) e soprattutto si rendono vani i sistemi di sicurezza predefiniti contro gli errori. Per comprendere meglio questo concetto, basta pensare a cosa succede in un sistema Dos quando si esegue un comando come quello seguente.
C:\>
DEL *.*
Prima di iniziare la cancellazione, il Dos chiede una ulteriore conferma proprio perché non esiste alcun tipo di controllo. In un sistema Unix, di solito ciò non avviene: la cancellazione viene eseguita immediatamente senza richiesta di conferme. Se i permessi consentono la cancellazione dei file solo a root, un utente registrato in modo diverso non può fare alcun danno.
In conclusione, l’utente root deve stare molto attento a quello che fa proprio perché può accedere a qualunque funzione o file del sistema, e il sistema non pone alcuna obbiezione al suo comportamento. Un utente normale, è invece vincolato dai permessi sui file e dai programmi che possono impedirgli di eseguire certe attività, di conseguenza, è possibile lavorare con meno attenzione.
adduser
Di solito, nelle distribuzioni Linux, si trova la utility adduser che consente all’utente root di aggiungere un nuovo utente. Il nome dell’utente non deve superare gli otto caratteri e tutti gli altri dati richiesti possono essere semplicemente lasciati al loro valore predefinito. Dopo la prima installazione di Linux, è importante creare il proprio account personale per poter usare il sistema senza i privilegi che ha l’amministratore.
exit
La shell comprende solitamente il comando exit che ne termina l’esecuzione. Se si tratta di una shell avviata automaticamente subito dopo il login, il sistema provvederà a chiedere un nuovo login.