bash: ulimit: core file size: cannot modify limit: Operation not permitted
Solution 1
Grep for a hard limit setting in your bash initialization files. From the bash man page.
A hard limit cannot be increased once it is set; a soft limit may be increased up to the value of the hard limit.
The hard limit is set via the ulimit -H flag. It may be set in /etc/bash* or /etc/profile* files. Look for a ulimit -Hc setting.
Solution 2
I had this happen to me when I used dropbear
as an SSH server. Apparently, dropbear sets some hard limits before spawning your shell.
Switching to OpenSSH solved the problem.
Related videos on Youtube

ant2009
Updated on September 17, 2022Comments
-
ant2009 3 months
Fedora 12 gcc 4.4.1
I am doing some programming, and my program gave me a stack dump.
However, there is no core file for me to examine.
So I did:
ulimit -c unlimited
and got this error message:
bash: ulimit: core file size: cannot modify limit: Operation not permitted
I also tried setting ulimit to 50000 and still got the same error.
The results of 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
-
Sundae over 7 yearsIndeed. Right in the start of main() there's a call to disallow_core(), which calls setrlimit(2). For security reasons of course, but there must be a better way. github.com/mkj/dropbear/blob/master/svr-main.c
-
Jim over 3 yearsman ulimit: If neither -H nor -S is specified, both the soft and hard limits are set. So looking for -H or -S isn't necessarily going to lead you to the correct solution. Just grep for ulimit and then figure out if -H or -S or both implicitly are set. Of course, this is a decade later so the behavior or man pages might have been updated since the original question/answer.