PDA

View Full Version : Linux in palla : nessuna protezione ?


Fly80
17-10-2003, 07:52
Ieri con un mio amico abbiamo fatto una prova. Gli ho creato un utente normale( con bash ) sul mio pc , e si è collegato tramite telnet. Ha creato un programma in c nel suo spazio utente ( /home/utente ) che fa un ciclo infinito ( in cui si alloca esponenzialmente memoria con malloc e poi divide il processo con la fork ). Risultato : si impalla tutto il mio pc , X bloccato , nessuna possibilità da parte mia di killare il processo .
Abbiamo provato anche a farlo senza X , stesso risultato.

Possibile che non ci sia la possibilità da parte dell'amministratore di un sistema di avere almeno un po' di memoria riservata per killare i processi che creano casini come quello ( tra l'altro è un processo uutente , non un processo di sistema !!!) ?

Soluzioni ?
Si potrebbe togliere l'uso di gcc , ma allora un utente che ci entra a fare nel suo spazio ? :p
Seconda soluzione : dare l'accesso solo a persone totalmente fidate , ma possibile che non ci sia un qualche controllo ? Si potrebbe fare un errore anche se si è fidati.


A voi la parola.
Ciao
Fly

ilsensine
17-10-2003, 08:00
ulimit

Fly80
17-10-2003, 08:16
ok , questa sembra una soluzione buona , ma con un utente con totale accesso al pc che magari per errore fa un processo simile , il sistema non riesce a tutelarsi in qualche modo ?

ilsensine
17-10-2003, 08:20
Normalmente i limiti sono ampi nelle distribuzioni, per consentire al (presumibilmente unico) utente di usare tutte le risorse della macchina. Ovviamente per un sistema server devi imporre dei limiti per gli utenti.

Nulla di strano, ulimit tra l'altro è unix-standard, non solo di linux.

Fly80
17-10-2003, 08:23
ok , grazie delle pronte risposte ^_^
Ti scoccio con un'altra domanda : quali sono i limiti da mettere per un utente standard ?:)

ilsensine
17-10-2003, 08:26
Dipendono dalle risorse della macchina e dal numero di utenti, ovviamente. Per evitare il "fork bomb" (il programma che hai testato) devi mettere limiti sul numero massimo dei processi, ma non è l'unica protezione (ad es. per limitare i "memory bomb" puoi mettere limiti sulla memoria usata). Ce ne sono un buon numero, puoi vedere con ulimit -S -a e ulimit -H -a i limiti correnti rispettivamente soft (modificabili dall'utente) e hard (limiti assoluti).