Si puo' risolvere benissimo...
Basta limitare il numero di processi eseguibili da un utente o da un gruppo...
ulimit -u non basta: va dato su ogni shell ogni volta che la si apre.
Dobbiamo invece dire a PAM di affidare meno risorse agli utenti modificando /etc/security/limits.conf
Sulla mia macchina ho solo il mio utente oltre che il mio, quindi mi e' bastato un:
codice:
nome_del_mio_utente hard nproc 256
(setta il limite di processi fisico per il mio utente a 256)
Ho anche creato un gruppo chiamato sshusers, da assegnare a chi faro' connettere via ssh:
codice:
@sshusers hard nproc 16
@sshusers hard priority 1
@sshusers hard maxlogins 16
@sshusers hard memlock 5120
(Questo dovrebbe settare quei valori per gli utenti ssh, ma ancora non l'ho provato)
Per far si' che pam sorvegli pure i login via ssh (e quindi che pure ssh sia soggetto ai limiti settati in quel file) mi pare si dovesse mettere nel file di configurazione di sshd:
Per verificare che il limite sia stato settato basta dare un ulimit -a (ulimit -u se v'interessa solo il limite sui processi)... Da quando si applicano i cambiamenti in quel file e' necessario loggarsi can pam: non basta aprire una nuova shell ma e' necessario sloggarsi completamente.
Ecco cosa succede a me:
codice:
$ ulimit -u # mostra il limite di processi massimi per il mio user
256
$ : (){ :&:&};: # provo a far bloccare tutto
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
...
$ # non s'e' bloccato nulla :cry: