bash: ulimit: taille du fichier principal: ne peut pas modifier la limite: opération non autorisée

28

Fedora 12 gcc 4.4.1

Je fais de la programmation et mon programme m'a donné un vidage de pile.

Cependant, il n'y a pas de fichier de base à examiner.

J'ai donc fait:

ulimit -c unlimited

et a obtenu ce message d'erreur:

bash: ulimit: core file size: cannot modify limit: Operation not permitted

J'ai également essayé de définir ulimit sur 50000 et j'ai toujours la même erreur.

Les résultats de ulimit -a:

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 12275
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
ant2009
la source

Réponses:

25

Grep pour un paramètre de limite stricte dans vos fichiers d'initialisation bash. Depuis la page de manuel de bash .

Une limite stricte ne peut pas être augmentée une fois qu'elle est définie; une limite souple peut être augmentée jusqu'à la valeur de la limite dure.

La limite fixe est définie via le drapeau ulimit -H. Il peut être défini dans les fichiers / etc / bash * ou / etc / profile *. Recherchez un paramètre ulimit -Hc.

Darren Hall
la source
man ulimit: Si ni -H ni -S n'est spécifié, les limites douce et dure sont définies . Donc, rechercher -H ou -S ne vous mènera pas nécessairement à la bonne solution. Il suffit de grep pour ulimit, puis de déterminer si -H ou -S ou les deux sont implicitement définis. Bien sûr, c'est une décennie plus tard, donc le comportement ou les pages de manuel peuvent avoir été mis à jour depuis la question / réponse d'origine.
Jim
1

Je suis arrivé à cela lorsque je l'ai utilisé dropbearcomme serveur SSH. Apparemment, dropbear fixe des limites strictes avant de faire apparaître votre coquille.

Le passage à OpenSSH a résolu le problème.

Barry Brown
la source
Effectivement. Au début de main (), il y a un appel à disallow_core (), qui appelle setrlimit (2). Pour des raisons de sécurité bien sûr, mais il doit y avoir une meilleure solution. github.com/mkj/dropbear/blob/master/svr-main.c
Sundae