Ошибка при добалении новой зоны или обновлении существующей в 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/