Utenti, processi, permessi, filsystem

Utenti

Linux è un sistema MULTIUTENTE: significa che più utenti possono avere accesso contemporaneo alla macchina e/o alle sue risorse.
Questo ha alcune implicazioni, tra le altre: Andiamo con ordine: Il sistema deve conoscere l'utente. A questo scopo, come utente root, si usa il comando adduser.
[root@polgara:~]$ adduser test
Adding user test...
Adding new group test (1001).
Adding new user test (1001) with group test.
Creating home directory /home/test.
Copying files from /etc/skel
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press return for the default
        Full Name []: Utente di test
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 
Is the information correct? [y/n] y
[root@polgara:~]$ 
Questo comando fa alcune operazioni:
associa all'utente un numero (UID) che lo identifica univocamente nel sistema (root ha uid=0, nobody 65535, gli utenti di sistema hanno 1>uid>999
inserisce l'utente in un gruppo (GID)
crea la home-directory dell'utente
aggiunge una entry nel file /etc/passwd:
[root@polgara:~]$ cat /etc/passwd
....
test:x:1001:1001:Utente di test,,,:/home/test:/bin/bash
[root@polgara:~]$ 
Notare che solitamente (e contrariamente ad altri sistemi Unix) viene grato anche un gruppo che identifica il solo utente, nel nostro caso il gruppo test.

Processi

A questo punto l'utente può entrare nel sistema e lanciare i suoi programmi (detti anche processi).
le modalità fondamentali con cui si possono lanciare i processi sono due: in foreground e in background.
Nella prima l'utente attende che l'esecuzione del suo processo termini prima di riottenere il prompt della shell
Nella seconda invece il prompt viene restituito subito e il processo continua l'esecuzione. In questo modo l'utente può continuare a lavorare e quindi, volendo, potrebbe lanciare altri programmi in background.
Per mandare il processo in background si usa la & dopo il comando:
[biko@polgara:~]$ bluefish &
[biko@polgara:~]$ gimp &
Per controllare quali e quanti processi abbiamo in background si usa il comando
[biko@polgara:~]$ jobs
[1]-  Running                 bluefish &
[2]+  Exit 127                gimp
[biko@polgara:~]$ 
Per controllare invece quali processi abbiamo o più in generale ci siano in esecuzione sul sistema possiamo usare due comandi:
> ps
> top
il primo mostra i processi di nostra proprietà che abbiamo lanciato dalla shell corrente.
con lo switch u ci mostra invece tutti i processi di nostra proprietà.
per vedere tutti i processi in esecuzione sul sistema possiamo usare gli switch aux
> man ps #per maggiori informazioni :=)
[biko@polgara:~]$ ps u
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
biko       708  0.0  0.2  2228 1036 tty1     S    May20   0:00 -bash
biko       841  0.0  0.2  2032  788 tty1     S    May20   0:00 /bin/sh /usr/bin/
biko       848  0.0  0.1  2184  552 tty1     S    May20   0:00 xinit /usr/X11R6/
biko       853  0.0  0.6  4352 2572 tty1     S    May20   0:12 /usr/bin/WindowMa
biko       883  0.0  0.5  4260 2272 tty1     S    May20   0:01 x-terminal-emulat
biko       884  0.0  0.6  4300 2320 tty1     S    May20   0:10 x-terminal-emulat
biko       885  0.0  0.5  4260 2268 tty1     S    May20   0:00 x-terminal-emulat
biko       886  0.7  0.2  2364  884 tty1     S    May20   6:12 wmapm
biko       887  0.0  0.2  2504  936 tty1     S    May20   0:00 wmtime
biko       888  0.0  0.3  2260 1320 pts/0    S    May20   0:00 bash
biko       891  0.0  0.3  2228 1268 pts/2    S    May20   0:00 bash
biko       894  0.0  0.3  2232 1272 pts/1    S    May20   0:00 bash
biko      3972  0.0  0.5  3496 2064 tty1     S    May20   0:00 /usr/bin/gconfd-1
biko      3993  0.0  1.2  7548 4776 pts/0    S    May20   0:15 bluefish
biko      7992  0.0  0.3  2256 1304 tty2     S    May20   0:00 -bash
biko     13173  0.0  0.3  3300 1416 pts/2    R    02:04   0:00 ps u
[biko@polgara:~]$
Top invece mostra i "top CPU processes". Il comando si autoaggiorna di default ogni 5 secondi, ma sono specificabili intervalli diversi (da riga di comando con il parametro -d o in maniera interattiva premendo il tasto s)
> man top
ATTENZIONE: se lanciate un processo in background e questo necessita di input da tastiera, il processo rimarrà bloccato. Per riportarlo in foreground si usa il comando
>fg n (dove n è il numero associato al nostro processo indicato dal comando jobs visto in precedenza)
ATTENZIONE: se il processo in background deve scrivere a video (e non avete rediretto opportunamente lo standard-output come vedrete fra un paio di lezioni), lo farà. Molto scomodo soprattutto se state nel frattempo editando altri file....