LINUX.ORG.RU
ФорумAdmin

Bind - проблема с правами на slave


0

0

Есть bind собранный из исходников и сконфигурированный как slave для всех зон:
# named -V
BIND 9.6.1-P1 built with '--prefix=/usr' '--sysconfdir=/etc'

named запускается от пользователя root ('/usr/sbin/named -u root'). В named.conf следуюцие опции:
directory "/dns";
pid-file "/var/run/named.pid";

Зоны хранятся в виде /dns/<customer>/domain (к примеру /dns/vasia/vasiadomain.ru ). Соответственно в named.conf:
zone "vasiadomain.ru" {
type slave; masters { 1.2.3.4; };
file "vasia/vasiadomain.ru";
};

Права на директорию:
[root@crm ~]# ls -ld /dns/vasia
drwxrwxr-x 2 sync sync 27648 Oct 29 19:02 /dns/vasia

OS: CentOS 5.3, selinux отключен:
# getenforce
Disabled

Проблема в том, что named не может создавать файлы в директории /dns/vasia. В логах следующее
general: dumping master file: vasia/tmp-gHGDCmLU7x: open: permission denied
xfer-in: transfer of 'vasiadomain.ru/IN' from 1.2.3.4#53: failed while receiving responses: permission denied

Если запустить named не от 'root', а от 'sync', то все нормально. Думал, что named проверяет права на директорию, но strace показал следущее:

open("vasia/tmp-gHGDCmLU7x", O_RDWR|O_CREAT|O_EXCL, 0666) = -1 EACCES (Permission denied)

Если выставить права 777 на директорию, то все работает. На двух других серверах под freebsd and gentoo в точности такой же named c такой же конфигурацией работает нормально.

Вопрос в том кто мешает root создать файл в директории?


Вопрос в том кто мешает root создать файл в директории?

При запуске под рутом, named может изменить юзера под которым работает демон (зависит от настроек и/или параметров запуска named (-u))

Так что смотри внимательно под каким юзером у тебя named реально работает

sdio
()
Ответ на: комментарий от sdio

> При запуске под рутом, named может изменить юзера под которым работает демон (зависит от настроек и/или параметров запуска named (-u))

Это понятно. Под root работает.

tungus
() автор топика
Ответ на: комментарий от tungus

Это понятно. Под root работает.

Тогда что не понятно? Под работает, под sync (страннйы выбор имени, но это не важно) работает, что тебе еще надо?

sdio
()
Ответ на: комментарий от sdio

В смысле Bind от root работает, но синхронизация не работает.

tungus
() автор топика

Попробуйте запустить strace на большее количество системных вызовов, может перед вызовом open() named становится пользователем nobody?

mky 👍👍
()
Ответ на: комментарий от mky

Запустил:
strace -tt -ff -o bind /usr/sbin/named

[root@ns strace]# grep 'uid(' bind.*
bind.8191:18:48:47.517479 getuid() = 0
bind.8191:18:48:47.519180 getuid() = 0

bind.8191 - до clone.

Файловая система ext3 , хитрых ext3 атрибутов не устаноленно.

tungus
() автор топика
Ответ на: комментарий от mky

Нашел:

[root@ns1 strace]# grep capset bind.*
bind.8191:18:48:47.517533 capset(0x19980330, 0, {CAP_DAC_READ_SEARCH|CAP_SETGID|CAP_SETUID|CAP_NET_BIND_SERVICE|CAP_SYS_CHROOT| CAP_SYS_RESOURCE, CAP_DAC_READ_SEARCH|CAP_SETGID|CAP_SETUID|CAP_NET_BIND_SERVICE|CAP_SYS_CHROOT|C AP_SYS_RESOURCE, 0}) = 0

Пересобрал bind c '--prefix=/usr' '--sysconfdir=/etc' '--disable-linux-caps' и заработало

tungus
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.