Зона AFXR завершилась с ошибкой доступа – дамп мастер-файла: /etc/bind/zones/tmp-yVIchKNnUC: открыть: доступ запрещен

Вопрос или проблема

Меня беспокоит простая ошибка разрешений. Исследования показывают, что это всё, что есть, и я не уверен, какие правильные разрешения должны быть установлены. Странным образом BIND указывает на успех И разрешает запросы для узлов в файле зоны. Вот как это выглядит:

Primary
Jun 15 23:48:28 dns1 named[1151]: zone 127.in-addr.arpa/IN: loaded serial 1
Jun 15 23:48:28 dns1 named[1151]: zone 255.in-addr.arpa/IN: loaded serial 1
Jun 15 23:48:28 dns1 named[1151]: zone example.com/IN: loaded serial 2017061503
Jun 15 23:48:28 dns1 named[1151]: zone localhost/IN: loaded serial 2
Jun 15 23:48:28 dns1 named[1151]: all zones loaded
Jun 15 23:48:28 dns1 named[1151]: running
Jun 15 23:48:28 dns1 named[1151]: zone 40.0.10.in-addr.arpa/IN: sending notifies (serial 2017061502)
Jun 15 23:48:28 dns1 named[1151]: zone example.com/IN: sending notifies (serial 2017061503)
Jun 15 23:48:28 dns1 named[1151]: client 10.0.40.89#60405 (example.com): transfer of 'example.com/IN': AXFR-style IXFR started (serial 2017061
Jun 15 23:48:28 dns1 named[1151]: client 10.0.40.89#60405 (example.com): transfer of 'example.com/IN': AXFR-style IXFR ended

Secondary
Jun 15 23:48:28 dns2 named[1138]: client 10.0.40.88#59749: received notify for zone 'example.com'
Jun 15 23:48:28 dns2 named[1138]: zone example.com/IN: notify from 10.0.40.88#59749: serial 2017061503
Jun 15 23:48:28 dns2 named[1138]: zone example.com/IN: Transfer started.
Jun 15 23:48:28 dns2 named[1138]: transfer of 'example.com/IN' from 10.0.40.88#53: connected using 10.0.40.89#60405
Jun 15 23:48:28 dns2 named[1138]: zone example.com/IN: transferred serial 2017061503
Jun 15 23:48:28 dns2 named[1138]: zone example.com/IN: transfer: could not set file modification time of '/etc/bind/zones/db.example.com': permission denied
Jun 15 23:48:28 dns2 named[1138]: transfer of 'example.com/IN' from 10.0.40.88#53: Transfer status: success
Jun 15 23:48:28 dns2 named[1138]: transfer of 'example.com/IN' from 10.0.40.88#53: Transfer completed: 1 messages, 7 records, 199 bytes, 0.001 secs (199000 by
Jun 15 23:48:28 dns2 named[1138]: zone example.com/IN: sending notifies (serial 2017061503)
Jun 15 23:48:28 dns2 named[1138]: dumping master file: /etc/bind/zones/tmp-dvJaLDDA7o: open: permission denied

root является владельцем, так что я немного озадачен.

chris@dns2:~$ ls -la /etc/bind/zones
total 12
drwxr-sr-x 2 root bind 4096 Jun 16 08:54 .
drwxr-sr-x 3 root bind 4096 Jun 15 23:12 ..
-rw-r--r-- 1 root bind  270 Jun 15 23:05 db.target.lab
chris@dns2:~$

Я решаю эту проблему, изменив правила apparmor в /etc/apparmor.d/usr.sbin.named.

Я отредактировал файл и изменил строку:

/etc/bind/** r,

на

/etc/bind/** rw,

и затем:

service apparmor restart
service bind9 restart

Это изменение также предотвращает ошибки отказа в разрешении при сохранении файлов в /etc/bind/slave.

Следуя ответу @estibordo, я заметил ссылку на README DEBAIN. Так что я посмотрел. Ондрей (основной пакетный maintainer пишет):

Конфигурационный файл named.conf находится в /etc/bind, чтобы все статические конфигурационные файлы, относящиеся к bind, находились в одном месте. Если вы действительно не хотите, чтобы named.conf находился в /etc/bind, то лучший способ справиться с этим – вероятно, заменить /etc/bind/named.conf символической ссылкой на тот путь, который вы хотите использовать. Вы также можете использовать опцию для named в скрипте init.d, но это работает только для named, а не для таких вещей, как ndc.

Это заставило меня подумать, что лучший способ решить эту проблему – изменить конфигурационный файл, чтобы он читал файлы из /var/lib/bind и использовал символические ссылки в /etc/bind, чтобы указывать на те, которые находятся в /var/lib/bind.

Для полной раскрытия информации: я пользователь Debain. Но я не вижу, почему это не должно работать на Ubuntu. 🙂

Вы должны изменить владельца на пользователя bind, потому что тот, кто записывает файлы, это служба.

cd /etc
chown -R bind bind

Ответ или решение

Исправление ошибки при работе с BIND: Ошибка доступа к файлам зоны

Введение

Ошибка "Zone AFXR fails on permission error – dumping master file: /etc/bind/zones/tmp-yVIchKNnUC: open: permission denied" указывает на проблему с правами доступа, возникающую при попытке сервиса BIND (Berkeley Internet Name Domain) записать или модифицировать файлы зон. Хотя в ваших логах указано, что зоны загружены успешно и разрешаются запросы, это не исключает возможности возникновения проблем при попытке записи в определенные файлы.

Анализ проблемы

В вашем случае основная проблема заключается в неправильных правах доступа к директории и файлам, используемым BIND для хранения данных зон. Подобные ошибки чаще всего обусловлены тем, что сервис BIND (с идентификатором пользователя bind) не имеет необходимых разрешений для записи в указанные каталоги.

Ваша команда ls -la /etc/bind/zones показывает, что файлы зон принадлежат пользователю root и группе bind:

-rw-r--r-- 1 root bind  270 Jun 15 23:05 db.target.lab

Это означает, что пользователь bind может читать файлы, но не может их изменять или создавать новые. Правильная практика заключается в том, чтобы изменять владельца и права доступа к файлам и директориям, чтобы сервис мог выполнять свои функции без ошибок.

Решение проблемы

  1. Изменение владельца файлов: Наиболее оптимальным решением является изменение владельца файлов на пользователя bind, так как он является пользователем, под которым работает служба DNS. Используйте следующую команду для смены владельца:

    sudo chown -R bind:bind /etc/bind/zones
  2. Проверка прав доступа: Убедитесь, что права доступа к файлам корректны. Параметры rw-r--r-- указывают на то, что только владелец (в данном случае root), может менять файл, а группа и другие пользователи только читают его. Чтобы изменить права доступа и разрешить пользователю bind записывать данные, используйте:

    sudo chmod -R 775 /etc/bind/zones

    После выполнения этой команды группа bind (к которой принадлежит пользователь bind) также получит права на запись.

  3. Использование AppArmor: Если вы используете AppArmor, убедитесь, что конфигурация службы named (BIND) позволяет запись в указанные директории:

    • Откройте файл конфигурации AppArmor для named:

      sudo nano /etc/apparmor.d/usr.sbin.named
    • Измените строку:

      /etc/bind/** r,

      на

      /etc/bind/** rw,
    • Перезапустите службы AppArmor и BIND для применения изменений:

      sudo service apparmor restart
      sudo service bind9 restart
  4. Оптимизация структуре каталогов: Рекомендуется переместить файлы зон в /var/lib/bind с последующим установлением символических ссылок из /etc/bind. Это позволит лучше следовать рутинным стандартам хранения данных и избежать проблем с правами доступа.

    sudo mv /etc/bind/zones/* /var/lib/bind/
    sudo ln -s /var/lib/bind/* /etc/bind/zones/

Заключение

Проблемы с правами доступа могут создавать значительные неудобства при работе с BIND. Однако, соблюдая правильные меры по управлению пользователями, правами доступа и конфигурацией служб, можно избежать возникновение таких проблем. Ваша текущая конфигурация, адаптированная к стандартам работы с BIND, поможет обеспечить надёжность и безопасность работы DNS-сервиса в вашей среде.

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

Капча загружается...