В Debian 7, какой пользователь использует bind9 для запуска демона?

У меня есть Debian 7 и установка по умолчанию bind9, я вручную изменил разрешение /etc/bind/named.conf на 000 и удалил флаг -u bind из /etc/default/bind9 чтобы увидеть, что происходит.

Насколько я знаю: когда bind9 запускается как демон уровня 3, демон init вызывает скрипт daemon bind9 /etc/init.d/bind9 как root. Сценарий демона bind9 не переключает пользователя, не выполняет сама программа bind9, потому что флаг связи -u bind уже удален.

Но проблема в том, что bind9 не запускается и жалуется на «разрешение отказано» на /etc/bind/named.conf

Если скрипт bind9 запускался с помощью root, как может возникнуть проблема разрешения?

Для дальнейшего уточнения: нет призрака, selinux отключен. Остальная конфигурация bind9 остается по умолчанию.

  • Прослушать атрибуты RADIUS, отправленные одноранговому узлу
  • Как установить LXDM вместо GDM3?
  • Ошибка rsync: некоторые файлы / attrs не были переданы
  • Репозитории APT на Android
  • Загрузите Debian netinst CD в оперативную память?
  • Проблема с перетаскиванием Debian GNOME 3 Chrome
  • Не удалось создать / монтировать swap во время автоматической установки Debian Jessie с использованием файла preseed
  • Связывание и локальные репозитории
  • 2 Solutions collect form web for “В Debian 7, какой пользователь использует bind9 для запуска демона?”

    Перед тем, как именованный читает файл конфигурации, он оставляет все, кроме необходимых возможностей. Возможность, позволяющая root обойти все проверки прав доступа к файлам, – CAP_FOWNER – см. Возможности (7), если вам интересно. Если вы проверите исходный код связывания, в bin / named / unix / os.c вы найдете функции linux_initialprivs () linux_minprivs () и другие, ответственные за это поведение.

    Итак, да, ваше замешательство понятно. uid 0 обычно имеет CAP_FOWNER, и, таким образом, процесс, работающий как uid 0, сможет работать беспрепятственно большинством проверок доступа к файлам и разрешений. В этом случае привязка безвозвратно отменяет все привилегии, которые явно не нужны для работы. На мой взгляд, это очень разумное и разумное действие для демона.

    Чтобы избежать проблемы, рассмотрите возможность изменения разрешений для этого файла конфигурации на просто 0400, что позволяет uid = 0 читать файл, не полагаясь на CAP_FOWNER.

    Конечно, это не удастся, поскольку вы запретили разрешения на чтение / запись / выполнение на /etc/bind/named.conf . Попробуйте использовать chmod ugo+r /etc/bind/named.conf && chown root /etc/bind/named.conf и повторите попытку.

    Объясняя, почему

    Посмотрим, как именованный читает файл.

     sudo strace -f /usr/sbin/named -fg -d 10 2> named 

    Это покажет все вызовы над файлами с именем / bind. Теперь обработка:

      grep conf назван                                  
     read (5, "# \ n # OpenSSL example configuratio" ..., 4096) = 4096
     напишите (2, «08-Feb-2014 14: 01: 42.372 built w» ..., 39108-Feb-2014 14: 01: 42.372 построено с '--prefix = / usr' '--mandir = / usr / share / man '' --infodir = / usr / share / info '' --sysconfdir = / etc / bind '' --localstatedir = / var '' --enable-threads '' --enable-largefile '' - -with-libtool '' --enable-shared '' --enable-static '' --with-openssl = / usr '' --with-gssapi = / usr '' --with-gnu-ld '' - -with-geoip = / usr '' --enable-ipv6 '' CFLAGS = -fno-strict-aliasing -DDIG_SIGCHASE -O2 '
     [pid 25348] write (2, "08-Feb-2014 14: 01: 42.395 loading" ..., 7508-Feb-2014 14: 01: 42.395 загрузка конфигурации из '/etc/bind/named.conf'
     [pid 25348] open ("/ etc / bind / named.conf", O_RDONLY | O_LARGEFILE) = -1 EACCES (разрешено разрешение)
     [pid 25348] write (2, «08-Feb-2014 14: 01: 42.396 open: /« ..., 7108-Feb-2014 14: 01: 42.396 open: /etc/bind/named.conf: разрешено отклонение
     [pid 25348] write (2, «08-Feb-2014 14: 01: 42.399 load_co» ..., 6308-Feb-2014 14: 01: 42.399 load_configuration: запрещено разрешение
     [pid 25348] write (2, «08-Feb-2014 14: 01: 42.400 loading« ..., 6608-Feb-2014 14: 01: 42.400 загрузка конфигурации: разрешение отклонено 

    Именованный пытается сделать открытый вызов как readonly и терпит неудачу с -1 EACCES так как файл не имеет прав на чтение. Это описано в справочных страницах open () :

    EACCES

    Разрешение поиска отклоняется в компоненте префикса пути или файл существует, а разрешения, заданные с помощью параметра tolag, отклоняются или файл не существует, а разрешение на запись отклоняется для родительского каталога создаваемого файла или O_TRUNC – указано разрешение на запись и запись.

    Резюме: этот apache или любой другой процесс не означает, что bind / named будет.

    BTW, запуск bind как root – это излишний и не нужен.

    Linux и Unix - лучшая ОС в мире.