В 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 остается по умолчанию.

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 – это излишний и не нужен.

  • Как обеспечить crt1.o и crti.o для LFS?
  • Как записывать сообщения журнала сценария init.d на диск?
  • Шаблоны для сценария запуска?
  • Неправильное поведение VirtualBox, когда фокус мыши с iMac Maverick на vm работает с Debian wheezy
  • что запускает runv в системе Debian, используя init и как?
  • Поля метаданных, необходимые для файлов debian Release?
  • Сеть затопления сервера Syslog с обратными DNS-поисками
  • Не устанавливайте общие папки NFS с помощью бродячего поставщика libvirt в Debian Jessie
  • iwconfig показывает потерянную связь через равные промежутки времени
  • Как я могу поместить пользователя в файл суперпользователей?
  • Установите xubuntu-desktop на Debian OS
  • Клавиши макета клавиатуры не поддерживаются на debian
  • Interesting Posts

    Проблемы с запуском сеанса / процесса Fedora

    Как двоичные файлы двоичные?

    bash: как распространять ошибки в замещении процесса?

    Ошибка dpkg после массового обновления Ubuntu

    Отключите внешний накопитель с LVM2 Физический объем на нем

    Установите ключ по умолчанию в gpg для подписания

    Debian не может найти загрузочное устройство

    Манипулировать имя файла с помощью команды find

    Unix: найдите имена файлов каталогов, перечисленные в текстовом файле, и перейдите в новый каталог

    Нет команды gnome-power-manager, но она установлена ​​на Arch

    Как установить шаблоны и пакеты одновременно?

    Не удается добавить хост к icingaweb2

    Я не могу найти свою звуковую карту, используя lspci; означает ли это, что это не вина Linux?

    Не удалось изменить файл хостов

    Запуск сценария (для графического интерфейса приложения) при регистрации в NX, но ограничение команд оболочки на терминале

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