Forum Linux.général Configuration de /etc/security/limits.conf

Posté par  (site web personnel) .
Étiquettes : aucune
0
13
fév.
2007
Bonjour,

J'essaye de limiter la mémoire utilisable par un utilisateur en employant le fichier /etc/security/limits.conf. Cependant ça ne fonctionne pas. Typiquement, je veut prévenir la casse sur un petit serveur ou des développeurs se connecte en ssh pour faire du C.

Voici ce que j'ai comme fichier limits.conf actuellement :

ipl hard nproc 40
ipl hard maxlogins 5
ipl hard priority 4
ipl hard memlock 20000 KB
ipl hard stack 2000 KB
ipl hard locks 50
ipl hard nofile 20

Ca marche bien pour limiter le fork() mais ça ne marche pas du tout pour limiter le malloc(), que ce soit soft ou hard.

La limite à 20 fichiers ouvert ne marche pas non plus.

Des idées ? D'avance merci.
  • # Des traces logs ?

    Posté par  . Évalué à 2.

    Bonjour,

    Mon expérience (plutôt "désastreuse" :P) des limits ne m'a pas empêché de fixer des seuils sur le nombre de fichiers ouverts simultannément (nofile).
    => Si c'est possible d'avoir une trace des journaux (syslog ou autre comme messages...) produits, accompagné du code de test ;-)
    L'analyse/investigation en sera facilitée.

    En outre, dans la configuration que tu cites, je ne vois pas la mémoire malloc limitée ! Cela dépend de la version de "pam_limits" utilisé, mais je verrais plus "core" ou "data" ou "as" comme seuil à configurer.
    Voici une référence MAN trouvée sur le net [http://www.die.net/doc/linux/man/man5/limits.conf.5.html]

    Bon courage !

    Cdlt,

    PS: Quand je dis "désastreuse", c'est qu'en mettant nofile à 10, c'est parfois insuffisant pour terminer le lancement du shell interactif et donc, hop déconnexion :'(
    • [^] # Re: Des traces logs ?

      Posté par  (site web personnel) . Évalué à 1.

      Au niveau de la limitation en mémoire, ça fonctionne en employant core et data.

      Par contre, est-il possible de limiter le pourcentage cpu qu'un utilisateur peut prendre ?

      Au niveau de la limitation du nombre de fichier ouvert, ça ne marche pas non plus (j'ai rien changé de ce coté)
      • [^] # Re: Des traces logs ?

        Posté par  . Évalué à 1.

        Re :-)

        Le pourcentage CPU, pas à ma connaissance.
        Par contre, tu as au moins 3 paramètres qui peuvent approcher d'une solution paliative:
        1) Le temps CPU "cpu" (exprimé en minute) qui limite la durée d'utilisation du CPU
        Attention: Le temps CPU est différent du "temps" et ne coïncide pas forcément surtout dans une machine avec de nombreux processus prêts à être exécuté. En effet, Linux alloue des slots de temps partagés (10 ms ?) pour chaque processus dans ses files d'attentes prêts à être exécuté...
        2) Le nombre de processus "nproc" pour limiter les abus (type fork & co)
        3) La priorité des processus "priority" pour réduire au maximum les nuisances de certains processus gourmands en CPU (peu d'Entrées/Sorties, boucles de calculs infinies...)

        Inconvénient Cette solution est "cumulative" et ne fait pas un partage de type "% moyen d'utilisation" (sauf à mettre des paramètres proches du "nolimits" ;-))

        Pour le paramètre "nofile", sans un exemple de test que tu réalises, je n'ai que des hypothèses: soit il s'applique globalement comme un quota disque sur l'ensemble de fichiers du FS, soit il ne s'applique qu'au niveau de chaque processus utilisateur, ce qui pourrait se traduire par un MAX_FILE = nproc x nofile x MAX LOGINS (maxlogins x maxsyslogins ?)

        Désolé, mais j'ai atteints ma limite (non, ce n'est pas un jeu de mot :P) sur le sujet.

        Bon courage !

        Cdlt,

        PS: Bien sûr, tout ceci est à tester pour trouver la bonne combinaison/recette ^__^

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.