Ошибки Named, Bind и Apparmor

Автор: Admin | 06.08.2013

Ошибка при добалении новой зоны или обновлении существующей в DNS сервере Named (Bind9). Или Apparmor защищает тебя там, где не ждал

Дано:
Ubuntu server 12.04
Вind9

Ошибка 1
Возникала при попытке передать файл новой зоны с master на slave dns сервер, ошибка была на slave, о котором и идет речь.
Довольно странная ошибка с первого взгляда, не хватает прав открыть файл /etc/bind/slave/tmp-cDTTj6AdV9, которого, в общем-то, и нет:

kernel: [16402.979213] type=1400 audit(1353055943.803:125): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/named" name named[6448]: dumping master file: /etc/bind/slave/tmp-cDTTj6AdV9: open: permission denied
kernel: [720643.099006] type=1400 audit(1356538898.670:31): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/named" name="/etc/bind/slave/tmp-cDTTj6AdV9" pid=6449 comm="named" requested_mask="c" denied_mask="c" fsuid=108 ouid=108nano /etc/apparmor.d/usr.sbin.named

Это Apparmor защищает каталог /etc/bind/ от записи. Чтобы демон мог писать в каталог надо в файле /etc/apparmor.d/usr.sbin.named изменить одну строку:

было:

#/etc/bind should be read-only for bind
/etc/bind/** r,
...

стало

#/etc/bind should be read-only for bind
/etc/bind/** rw,
...

Если зоны добавляются часто, то можно так и оставить, если редко, то после добавления лучше изменить настройки apparmor обратно, так скьюрней.

UPD: После очередного обновления slave сервера, DNS так же не захотел обновлять зоны. С той же ошибкой. Решением оказалось внесение строки в файл /etc/apparmor.d/local/usr.sbin.named

/var/log/query.log rw,

Перечитать настройки apparmor:

apparmor_parser -r /etc/apparmor.d/usr.sbin.named

Ошибка 2

zone domain.com/IN: transfer: could not set file modification time of '/etc/bind/slave/domain.com': permission denied

Если это не Apparmor, скорее всего тупо не хватает прав на запись в данный файл, дать этой командой:

chown -R bind:bind /etc/bind/slave/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *