Download Amministrare GNU/Linux

Transcript
2.1. L’INTERFACCIA A LINEA DI COMANDO.
55
messaggio di benvenuto e la linea “login: ” e si pone in attesa che un utente scriva sul terminale
il suo “username”.15 Una volta che questo sia stato scritto, getty esegue direttamente16 il
programma login che si cura di chiedere la password ed effettuare l’autenticazione. Se questa
ha successo è login che si incarica di impostare il valore del session ID per il processo in corso,
cambiare il proprietario dello stesso all’utente che si è collegato,17 ed infine lanciare una “shell
di login”.18 In tutta questa procedura i tre file di standard input, standard output e standard
error resteranno aperti ed associati al terminale di controllo da cui si è partiti, che è quello su
cui verrà utilizzata la shell.
Una volta completata la procedura di collegamento avremo a disposizione una shell con un
certo valore del session ID, e dato che anche questa è una proprietà che viene conservata quando
si creano processi figli e si lanciano altri comandi, si avrà come conseguenza che anche tutti i
processi lanciati da detta shell saranno identificati dallo stesso session ID. Tutto ciò vale anche
per tutte le altre modalità con cui si può iniziare una sessione di lavoro su un terminale, che sia
attraverso un emulatore ad interfaccia grafica o un programma di connessione remota.
Come accennato in sez. 1.3.2 le informazioni relative alla sessione possono essere visualizzate
con l’opzione -j di ps, ad esempio lanciando il comando dal terminale in cui si stavano scrivendo
queste dispense abbiamo ottenuto il seguente risultato:
piccardi@anarres:~$ ps -je
PID PGID
SID TTY
1
0
0 ?
...
4857 4527 4527 ?
4858 4527 4527 ?
4859 4859 4859 pts/1
...
5936 5936 5936 ?
8005 8005 8005 ?
8007 8005 8005 ?
8009 8009 8009 pts/2
8013 8013 8009 pts/2
8014 8013 8009 pts/2
8015 8013 8009 pts/2
8016 8013 8009 pts/2
8504 8013 8009 pts/2
8505 8013 8009 pts/2
8037 8037 8009 pts/2
8039 8037 8009 pts/2
8040 8037 8009 pts/2
8382 8382 8009 pts/2
8506 8506 8009 pts/2
...
f
STAT
S
TIME COMMAND
0:02 init [2]
S
S
S
0:00 gnome-terminal
0:00 \_ gnome-pty-helper
0:00 \_ bash
S
S
S
S
S
S
S
S
S
S
S
S
S
S
R
0:00 /usr/sbin/sshd
0:00 \_ sshd: piccardi [priv]
0:35
\_ sshd: piccardi@pts/2
0:00
\_ -bash
0:01
\_ xmms
0:00
|
\_ xmms
0:00
|
\_ xmms
0:00
|
\_ xmms
0:00
|
\_ xmms
0:00
|
\_ xmms
0:00
\_ /usr/bin/perl -w /usr/bin
0:03
|
\_ xdvi.bin -name xdvi s
0:02
|
\_ gs -sDEVICE=x11 1:07
\_ emacs struttura.tex
0:00
\_ ps -je f
In questo caso la shell non è stata lanciata sulla console da getty ma all’interno una sessione
remota da sshd19 ed utilizza il terminale virtuale pts/2. Si noti inoltre come sia presente
un’altra sessione associata al terminale virtuale pts/1, creata da gnome-terminal che invece
lavora all’interno dell’interfaccia grafica. Tutti i programmi che si sono lanciati dalla nostra shell
15
l’username, detto anche nome utente o nome di login, è il nome con cui un utente si identifica presso il sistema,
torneremo sull’argomento in sez. 4.3.1.
16
in questo caso si tratta proprio dell’invocazione diretta del comando senza passare attraverso un nuovo
processo, questo significa che il PID del processo resterà lo stesso.
17
cioè impostare i vari user ID e group ID visti in sez. 1.4.1 a quelli dell’utente collegato.
18
il programma invocato è sempre lo stesso, ma dato che una shell può essere utilizzata con modalità diverse
(all’interno di uno script non interattivo, o come sub-shell all’interno di una sessione) esistono delle opportune
opzioni che consentono di indicare la modalità di utilizzo: quella che indica una shell di login è una di queste,
torneremo sull’argomento in sez. 2.1.6).
19
tratteremo questo programma in sez 8.3.