Changer la Soft et la Hard Limit

Avec la commande Ulimit, Il est possible de définir pour un certain nombre de ressources (nombre de fichiers ouverts, taille des fichiers, nombre de processus instanciés, temps CPU, etc), une limite “souple” (soft limit) qui peut être augmentée par l’utilisateur  jusqu’à une limite maximale qualifiée de limite “dure” (hard limit). Cela peut-être très utile pour se prémunir contre des attaques Fork Bomb.

Linux permet de limiter les ressources allouées aux utilisateurs, ou aux groupes d’utilisateurs, via le fichier “/etc/security/limits.conf” chargé par PAM à chaque ouverture de session.
Libre à nous, ensuite d’adapter les ressources dont il dispose à ses besoins via la commande “ulimit”.

Pour voir toutes les valeurs:

ulimit -a

Pour voir la limite Hard de toutes les valeurs:

ulimit -aH

Pour voir le nombre de processus maximum autorisé:

ulimit -u

Pour savoir jusqu’à combien la limite peut être augmentée:

ulimit -Hu

Passer à 200 le nombre de processus autorisés :

ulimit -Su 200

Utiliser la valeur maximale :

ulimit -u $(ulimit -Hu)


Temps UC (secondes): ulimit -t unlimited
Taille de fichier (blocs): ulimit -f unlimited
Taille de mémoire maximale (ko): ulimit -m unlimited
Nombre maximal de processus utilisateur: ulimit -u unlimited
Fichiers ouverts: ulimit -n 8192 (valeur minimale)
Taille de pile (ko): ulimit -s unlimited
Mémoire virtuelle (ko): ulimit -v unlimited

 

Le fichier “/etc/security/limits.conf” ressemble à ça:

<domain> <type> <item> <valeur>
@starworld      soft      nproc      100
@starworld      hard      nproc      200
starmate         hard      nproc      300

  • ligne 1 : les utilisateurs du groupe “starworld” ne pourront pas, par défaut, créer plus de 100 processus.
  • ligne 2 : en cas de besoin, les membres du groupe “starworld” pourront monter cette limite à 200 via “ulimit -u 200″.
  • ligne 3 : l’utilisateur “starmate” appartient au groupe “starworld”, donc il dispose d’un maximum de 100 processus par défaut, mais, contrairement aux membres de son groupe, il peut augmenter cette limite jusqu’à 300.

Mise en place dans PAM

Le fichier “/etc/security/limits.conf” est chargé par PAM à chaque connexion d’utilisateur. Pour cela, le module “pam_limits.so” est chargé par une ligne du type :

cat /etc/pam.d/login


...
# Sets up user limits according to /etc/security/limits.conf
session    required   pam_limits.so
...

Derniers Articles