Почему при создании приложения SUID не создается дамп ядра?

Я настраиваю свою среду для создания основного дампа всего, что сбой, однако, когда я запускаю программу с SUID, установленную другим пользователем, чем исполняющий пользователь, он не создает дамп ядра. Любая идея, почему это может быть? Я не мог найти его нигде в Интернете, я думаю, что это своего рода функция безопасности, но я бы хотел, чтобы она была отключена …

Проблема:

$ cd /tmp $ cat /etc/security/limits.conf | grep core * - core unlimited root - core unlimited $ ls -l ohai -rwsr-sr-x 1 root root 578988 2011-06-23 23:29 ohai $ ./ohai ... Floating point exception $ sudo -i # ./ohai ... Floating point exception (core dumped) # chmod -s ohai # exit $ ./ohai ... Floating point exception (core dumped) 

Изменить: чтобы он работал как можно более безопасным, теперь у меня есть следующий скрипт для настройки среды:

 mkdir -p /var/coredumps/ chown root:adm /var/coredumps/ chmod 772 /var/coredumps/ echo "kernel.core_pattern = /var/coredumps/core.%u.%e.%p" >> /etc/sysctrl.conf echo "fs.suid_dumpable = 2" >> /etc/sysctl.conf echo -e "*\t-\tcore\tunlimited" >> /etc/security/limits.conf echo -e "root\t-\tcore\tunlimited" >> /etc/security/limits.conf 

Теперь все, что осталось сделать, это добавить ACL в / var / coredumps, чтобы пользователи могли добавлять файлы и не изменять и не читать их снова. Единственным уменьшением является то, что у меня все еще будет проблема с chroot'ed приложениями, которые нуждаются в bind mount или что-то в этом роде.

  • ICMP: ошибка порта недоступна, даже если порт открыт
  • OSX: удалить все соответствующие сертификаты по командной строке
  • Как ограничить некоторые команды для администратора в Linux (CentOS)
  • Запуск Viber как другого пользователя при использовании микрофона и динамиков «моего» X-сервера
  • Запуск проприетарного программного обеспечения на Linux безопасно
  • Настройка ulimit правильно для PHP на Linux
  • LXC: Разница в безопасности между корневыми и конечными пользователями, не имеющими привилегированных контейнеров?
  • Не могу понять результат чкротткита
  • 3 Solutions collect form web for “Почему при создании приложения SUID не создается дамп ядра?”

    Память программы setuid может (и, возможно, даже) содержать конфиденциальные данные. Таким образом, дамп ядра должен быть доступен только для чтения.

    Если дамп ядра принадлежит root, я не вижу очевидной дыры в безопасности, хотя ядро ​​должно быть осторожным, чтобы не перезаписывать существующий файл.

    Linux отключает базовые дампы для программ setxid. Чтобы включить их, вам нужно выполнить хотя бы следующее (я еще не проверял, что этого достаточно):

    • Включите стандартные дампы setuid, установив fs.suid_dumpable sysctl на 2, например, с помощью echo 2 >/proc/sys/fs/suid_dumpable . (Примечание: 2, а не 1; 1 означает «Я отлаживаю систему в целом и хочу удалить всю безопасность».)
    • Вызвать prctl(PR_SET_DUMPABLE, 1) из программы.

    Дамп ядра содержит копию всего, что было в памяти во время ошибки. Если программа работает suid, это означает, что ей нужен доступ к чему-то, к которому у вас, как пользователя, нет доступа. Если программа получит эту информацию, а затем сбросит ядро, вы сможете прочитать эту привилегированную информацию.

    Из приведенного выше примера видно, что вы можете получить дамп ядра при работе от имени root или если вы удалите эскалацию привилегий.

    Хотя это может быть удобно (для разработчиков только метит), чтобы иметь легкий доступ к coredump из программы setuid, это дыра в безопасности, и ее следует оставить на месте.

    Я решил, что также поделюсь своим прецедентом, пока не забуду. Это может быть удобно и для будущего меня, так как я решал одну и ту же проблему несколько месяцев назад, и мне потребовалось слишком много времени, чтобы узнать еще раз. ОК. на самом деле это не ядро-дамп, а трассировка стека, которая также полезна.

    Проблема: не знаю, что там происходит:

     sudo id Segmentation fault 

    Решение: Переместить suid бит от sudo до valgrind отлично работает:

     chmod +s /usr/bin/valgrind chmod -s /usr/bin/sudo valgrind /usr/bin/sudo id 

    Если debuginfo установлен, выдается хороший backtrace.

    Interesting Posts

    Попытка установить gearman на CentOS и ./configure не может найти event.h, хотя libevent установлен

    Каков наилучший способ установки Oracle 11g R2 и SQL Developer на CentOS 7 / RHEL 7?

    MacBook Pro Retina: огромное энергопотребление

    Как определить, на какой файловой системе существует каталог?

    Генерирование файла с помощью ASCII-номеров с использованием / dev / urandom?

    Запуск приложения через SSH с помощью DISPLAY, когда пользователь не вошел в систему

    Откройте программу (VLC) и переместите ее на передний план

    Как скопировать файл и переместить его в местоположение с помощью unix

    Изменение формата даты файла

    Как настроить внешний USB-тачпад для ноутбука

    создать установщик debian с настраиваемым ядром

    Возможно ли использовать беспроводной принтер с поддержкой CUPS?

    Значение «l» в «lrwxr-xr-x»?

    Echo не печатает правильное значение для переменной

    Не удалось загрузить новую установку FreeBSD 8.2 на Intel SS4200-EHW

    Linux и Unix - лучшая ОС в мире.