named регистрируется в syslog

Мы также знаем, что named регистрируется в syslog. Для этого ему понадобится доступ к /dev/log:
native-connect: sockaddr eq "/dev/log" then permit
Эта программа может использовать системный вызов native connect О для общения с /dev/log, и только с /dev/log. Это устройство соединения из другого места поддерживать не будет.
Кроме того, можно увидеть несколько элементов для системных вызовов, которых не существует:
native-fsread: filename eq "/" then permit native-fsread: filename eq "/dev/arandom" then permit native-fsread: filename eq "/etc/group" then permit
Systrace присваивает псевдонимы некоторым системным вызовам с очень схожими функциями в файле groups. Такое поведение можно отключить с помощью параметра командной строки и использовать только указанные системные вызовы, но во многих случаях эти псевдонимы очень полезны и значительно расширяют политики. Двумя такими псевдонимами являются fsread и fswrite. Команда fsread является псевдонимом для statO, istatO, read! ink О и access О под native ABI и Linux ABI. Команда fswrite — псевдоним для unl ink О, mkdir() и rmdi r() в native ABI и Linux ABI. Системный вызов open О может использоваться как для чтения, так и для записи файла. В качестве его псевдонима в зависимости от вызова может использоваться как fsread, так и fswrite. Таким образом, named может выполнять чтение некоторых файлов /etc, выводить список содержимого корневого каталога и обращаться к файлу groups.
Systrace поддерживает два необязательных ключевых слова, помещаемых в конце выражения политики: errorcode и log. Errorcode — это ошибка, возвращаемая при попытке программы обратиться к данному системному вызову. Программы будут по-разному реагировать на полученную ошибку. Реакция named на ошибку <<permission denied* будет отличаться от реакции на ошибку «out of memory*.    Полный список кодов ошибок вы можете просмотреть с помощью справки еггпо manpage. Используйте наименование ошибки, а не код ошибки. Например, вот возвращение ошибки о несуществующем файле:
filename sub "<non-existent filename>" then deny[enoent]
Если в конце выражения политики поместить слово log, то успешное выполнение системных вызовов будет протоколироваться. Например, если необходимо протоколировать каждое подключение named к 53-му порту, то выражение политики для вызова bind О должно выглядеть так:
native-bind: sockaddr match "inet-*:53" then permit log
При желании правила также можно отсортировать по идентификатору пользователя или группы, например:
native-setgid: gid eq "70" then permit
Мы лишь поверхностно ознакомились с некоторыми правилами. Подробное описание грамматики systrace можно найти в тексте справочного сообщения, получаемого при помощи команды manpage systrace. Создание политик значительно упрощает автоматизированный режим systrace.