Читаем Linux API. Исчерпывающее руководство полностью

Применяя операцию PB_SET_DUMPABLE в характерном для Linux системном вызове prctl(), мы можем установить для процесса флаг dumpable. Таким образом, когда программа с установленным ID пользователя (группы) запускается пользователем, не являющимся ее владельцем (из группы владельца), может быть создан дамп ядра. Операция PB_SET_DUMPABLE доступна в Linux, начиная с версии 2.4. Для получения дополнительной информации см. страницу справочника prctl(2). Кроме того, начиная с версии ядра 2.6.13, файл /proc/sys/fs/suid_dumpable предоставляет контроль уровня системы за тем, создают ли процессы, запущенные с установленным ID пользователя (группы) файлы дампа ядра. Для получения дополнительной информации см. страницу справочника prctl(5).

Начиная с версии 2.6.23 характерный для Linux файл /proc/PID/coredump_filter может для каждого процесса определить, какого рода отображения памяти записываются в файл дампа ядра. (Виды отображений памяти будут рассмотрены в главе 45.) Значение, содержащееся в этом файле — это маска, состоящая из четырех битов, соответствующих четырем типам отображений памяти: приватные анонимные отображения, приватные отображения файлов, анонимные отображения с общим доступом и отображения файлов с общим доступом. Значение файла по умолчанию представляет собой традиционное поведение Linux: создается дамп только частных анонимных отображений и анонимных отображений с общим доступом. Для получения дополнительной информации см. страницу справочника core(5).


Имена файлов дампа ядра: /proc/sys/kernel/core_pattern

Начиная с Linux 2.6, строка формата, содержащаяся в характерном для Linux файле /proc/sys/kernel/core_pattern, контролирует присвоение имен всем файлам дампа ядра, создаваемым в системе. По умолчанию этот файл содержит строку core. Привилегированный пользователь может настроить процесс присвоения имен так, чтобы имя файлов дампа содержало любой из перечисленных в табл. 22.1 спецификаторов формата. Они заменяются значением, приведенным в правом столбце таблицы. Кроме того, строка может содержать косые черты (/). Иными словами, можно контролировать не только имя файла дампа, но также и каталог (абсолютный и относительный), в котором файл создается. После замены всех спецификаторов формата получившаяся строка путевого имени уменьшается до 128 символов максимально (или 64 в версиях Linux до 2.6.19).

Начиная с версии ядра 2.6.19, Linux поддерживает дополнительный синтаксис в файле core_pattern. Если этот файл содержит строку, начинающуюся с символа конвейера (|), значит, все последующие символы файла воспринимаются как программа с необязательными аргументами (которые могут также включать классификаторы с символом %, перечисленные в табл. 22.1). Эта команда будет выполнена при создании файла дампа ядра. Дамп ядра записывается в стандартный ввод программы, а не в файл. Для получения дополнительной информации см. страницу справочника core(5).

Некоторые другие реализации UNIX предоставляют средства, аналогичные core_pattern. Например, в системах, производных от BSD, имя программы приставляется к имени файла, например core.progname. В Solaris предоставляется специальный инструмент (coreadm), который позволяет пользователю выбрать имя файла и каталог, в который будет сохранен файл дампа ядра.


Таблица 22.1. Спецификаторы формата для /proc/sys/kernel/core_pattern

Спецификатор — Заменяется на

%c — Мягкое ресурсное ограничение размера файла дампа (в байтах, начиная с Linux 2.6.24)

%e — Имя исполняемого файла (без путевого префикса)

%g — Реальный групповой идентификатор процесса завершенного с дампом

%h — Имя хоста системы

%p — Идентификатор процесса, завершенного с дампом

%s — Номер сигнала, завершившего процесс

%t — Время создания дампа, в секундах с начала отсчета

%u — Реальный ID пользователя процесса, завершенного с дампом

%% — Единичный символ %


22.2. Частные случаи доставки, диспозиции и обработки


Для некоторых сигналов применяются особые правила доставки, задания диспозиции и обработки, как описано в этом разделе.


SIGKILL и SIGSTOP

Невозможно изменить действие по умолчанию сигнала SIGKILL, который всегда завершает процесс и SIGSTOP, который всегда останавливает процесс. Обе функции, signal() и sigaction(), возвращают ошибку при попытке изменить диспозицию этих сигналов. Эти сигналы не могут быть заблокированы, что характерно именно для них. Запрет изменения действий этих сигналов по умолчанию означает, что они всегда могут быть использованы для завершения или остановки процесса, над которым был потерян контроль.


SIGCONT и стоп-сигналы

Как уже отмечалось ранее, сигнал SIGCONT используется для возобновления процесса, ранее остановленного одним из стоп-сигналов (SIGSTOP, SIGTSTP, SIGTTIN и SIGTTOU). Из-за уникального предназначения в некоторых ситуациях ядро обрабатывает эти сигналы отлично от других.

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных