Suid bit strace
Проблема возникает из-за того, что при strace процесса из-под учётной записи не привилегированного юзера(к примеру, трейсим процесс-обработчик php, запускаемый на шаред хостинге, к которому у нас нет рутового доступа) возникает проблема со сбросом suid bit для вызываемого дочернего процесса, описанная в https://sourceforge.net/p/strace/mailman/message/29565633/ и в https://stackoverflow.com/questions/37333618/ptrace-suid-process-after-it-drops-previlege
Причины такого поведения изложены в https://security.stackexchange.com/questions/176398/debugging-suid-for-privilege-escalation, если кратко, то возможностью трейсить процесс с повышенными через suid bit привелегиями у процесса, запущенного процессом обычного пользователя, из под учётки этого пользователя, как и возможность получать core-файлы(корки) процессов с suid bit из-под не привелигированной учётки – это большая дыра в безопасности, а потому по умолчанию только пользователь с привилегиями администратора, имеющий возможность трейсить процессы, запущенные из под других пользователей, имеет возможность трейсить дочерние процессы, запускаемые с suid bit.
Для того, чтобы strace(или другое приложение, юзающее ptrace) имел возможность трейсить процессы, запущенные с suid bit, приложение должно быть запущено от рута, или приложению необходим атрибут CAP_SYS_PTRACE.
Вот так в трейсе setuid 93(вызов sendmail на системе с exim)
[pid 26763] 10:58:52.452841 setgid(93) = 0
[pid 26763] 10:58:52.452887 setuid(93) = 0
выглядит когда strace запущен с CAP_SYS_PTRACE или от рута.
А так, когда его нет
[pid 19291] 10:34:03.915342 setgid(93) = -1 EPERM (Operation not permitted)