Introduzione alle SHELL


Cosa succede qundo forniamo al kernel uno username ed una password valide ??

Innanzitutto viene ricercato il nome dell'utente fornito all'interno di un file che contiene tutti gli utenti del sistema, se esiste se ne verifica la password ed infine gli si fornisce la possibilità di interagire con il sistema.

I dati degli utenti conosciuti dal sistema vengono mantenuti nel file 'passwd', mentre le password criptate sono mantenute nel file 'shadow'. Entrambi i file sono contenuti nella directory '/etc'.

Sbirciamo quali informazioni sono contenute nel file 'passwd' per il nostro utente test,

[test@tontolo test]$ cat /etc/passwd | grep test
test:x:502:502::/home/test:/bin/bash

Per motivi di sicurezza il file 'passwd' è scrivibile solo da ROOT, mentre 'shadow' è solo leggibile e solo da root.

La parte in neretto è quello che stavamo cercando, il programma eseguito al termine dell'autenticazione dell'utente ......   la shell .


Ma che cos'è la shell ???



shell



shell
conchiglia; buccia, involucro; corazza; proiettile; (inform.) interprete di comandi
sgusciare, sgranare, sbaccellare; (Mil) bombardare, cannoneggiare; ricoprire di conchiglie.


La shell nasce dalla necessità dell'utente di poter dialogare con la macchina, è uno strumento capace di rendere flessibile e minima la distanza tra
"quello che vogliamo fare " e la sua effettiva esecuzione da parte del sistema.
E' un intermediario tra l'utente e di il kernel, in pratica si occupa di tradurre i comandi dell'utente e di passarli al kernel per l'esecuzione.

Esistono vari tipi di shell per i sistemi Unix e Linux, vediamone alcune


Shell
Descrizione
Path:
ash
Shell limitata si tipo sh
/bin/ash
ash.static
Shell di tipo sh compilata staticamente, utile per il recover del sistema
/bin/ash.static
bash
Bourn Again, forse la più famosa
/bin/bash
bash2
Nuova versione della Bash
/bin/bash2
bsh
Link simbolico alla ash
/bin/bsh
csh
C shell
/bin/csh
ksh
Korn Shell
/bin/ksh /usr/bin ksh
pdksh
Link simbolico alla ksh
/usr/bin/pdksh
rsh
Shell per operazioni di rete
/usr/bin/rsh
sh
Link simbolico alla Bash
/bin/sh
tcsh
Molto utilizzata e compatibile con ls csh
/bin/-tcsh
zsh
Compatibile con csh, ksh e sh
/bin/-zsh

A differenza di particolari sistemi operativi dove si è vincolati ad una sola shell nei sistemi Linux è possibile scegliere quale shell utilizzare a seconda della propria esperienza ed alle proprie necessità .

Le shell presenti nel nostro sistema sono elencate nel file '/etc/shells'
[root@tontolo bin]# cat /etc/shells
/bin/sh
/bin/bash
/bin/bash2
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh

Per importanza storica e per diffusione le shell che meritano di essere citate sono la
Korn, Bourne, Bash e la shell C.

La shell è un vero e proprio ambiente di programmazione, oltre che un interprete di comandi, con cui è possibile realizzare script per automatizzare operazioni anche complesse e ripetitive ed è altamente configurabile.

Le shell dispongono ognuna di un proprio set di comandi e di regole sintattiche non sempre simili e compatibili, dispongono di operatori, istruzioni di selezione e di ciclo.

La shell maggiormente utilizzata e predefinita nella maggior parte delle distribuzioni Linux è la BASH, acronimo di Bourne Again shell, capace di eseguire script scritti per la shell Bourne che è una tra le più utilizzate in ambiente Unix.

Cosa non trascurabile la shell Bash include quasi tutte le funzioni delle shell C e Korn integrandole con funzioni proprie che ampliano le possibilità dell'utente.
Una ulteriore nota di rilievo di questa shell è la sua forma FREE secondo la filosofia Open Source, quindi liberamente utilizzabile.


<indice>     <avanti>