Насколько я понимаю, вы следуете Техническому руководству по внедрению безопасности RHEL 5 .
«Поддерживает ли моя система Linux 32-битную -таблицу системных вызовов?» — очень интересный вопрос, и, как отмечает Жиль, он не был окончательно решен на сайте. Это тоже сложный вопрос.
Я начну с сокращения до контекста STIG, то есть «Поддерживает ли моя система Linux таблицу системных вызовов i386?» (Позже мы вернемся к более общему вопросу.)Вы не можете получить окончательный список поддерживаемых системных вызовов из работающего ядра , но в этом случае нам не нужно :все, что нам нужно сделать, это найти точки входа системных вызовов.Точки входа i386 удобно называть :. Внешне -видимые функции, используемые как собственными 32-битными -вызовами, так и уровнем эмуляции от 64 -до 32 -битов, называютсяdo_fast_syscall_32
и do_int80_syscall_32
.. Лучший способ проверить их — найти в /proc/kallsyms
(. Надеюсь, нет другого правила STIG, запрещающего это... ). Если они присутствуют, то текущее ядро поддерживает системные вызовы i386, и вам нужно правило аудита lchown32
.
Прочитав здесь другие ответы на подобные темы, вы поймете, что типичным способом тестирования поддержки системных вызовов в работающей системе является попытка вызвать системный вызов. При аудите системы это может быть неуместно, так как должно запускаться правило аудита. Это также может привести к ложным отрицательным результатам при аудите, поскольку он обычно полагается как на ядро, поддерживающее соответствующий системный вызов, так и на систему, предоставляющую необходимую структуру.
Использование результатов lscpu
и других подобных инструментов также вводит в заблуждение, поскольку они сообщают об установленных возможностях ЦП , а не о возможностях системы. Например, lscpu
жесткие -эквивалентности кодов :lm
, zarch
или sun4[uv]
во флагах ЦП говорят о том, что доступна поддержка 32 -и 64 -битов, что из С точки зрения процессора, но lscpu
не определяет, поддерживает ли его остальная часть системы (и не должна ли ).
Возвращаясь к более общему вопросу «Поддерживает ли моя система Linux 32 -битную таблицу системных вызовов?», определение ответа всегда будет зависеть от архитектуры. Если мы попытаемся просмотреть системные вызовы, чтобы определить ответ, нам нужно принять во внимание историю системных вызовов в архитектуре; например, chown32
и одноуровневые не обязательно поддерживаются на 32-разрядных архитектурах -. Точно так же поиск точек входа зависит от архитектуры -.
Таким образом, я не думаю, что есть общий ответ на ваш вопрос;ответы должны учитывать как минимум целевую архитектуру.
На ум приходят тесты системных ресурсов в monit
. Это может быть настроено очень индивидуально в зависимости от вашего случая использования -:
Monit - utility for monitoring services on a Unix system
Имейте в виду, что он может не поставляться с некоторыми корпоративными дистрибутивами (SLES, например. ).